Ubuntu 9.04でlighttpdをセットアップするだけですが、権限に苦労しています。 Fast CGIを使用しているため、Webサイトは正常に読み込まれますが、メディア(Javascript、CSS、Images)は読み込まれません。
設定ファイルでロギングオプションを有効にしました:
debug.log-request-handling = "enable"
ログファイルに次の情報が記録されます。
2009-08-16 02:42:27:(response.c.473)-物理パスの処理2009-08-16 02:42:27:(response.c.474)パス
:/ var/www/sites/mysite.com/http/media/css/style.css 2009-08-16 02:42:27:(response.c.520)-アクセスが拒否されました
次に、これらすべてのディレクトリのアクセス許可を確認し、www-dataグループにアクセス許可があるように変更しましたが、それでも403の禁止エラーとログファイルのエラーが発生します。
私は走った:
chgrp -R id:www-data css/chmod -R g + rx css /
およびls-l
> [email protected]:/var/www/sites/mysite.com/http/media$
> ls -l total 12 drwxr----- 2 id
> www-data 4096 Aug 16 01:59 css
> drwxr----- 2 id www-data 4096 Aug 16
> 02:00 images drwxr----- 3 id www-data
> 4096 Aug 16 02:00 js
Www-dataユーザーにrwx権限も付与しようとしましたが、それでも禁止されたエラーが発生します。
どうすればこれを修正できますか?サーバーがwww-dataユーザーを使用していない可能性がありますが、このユーザーで実行されていることを確認するにはどうすればよいですか?
Ubuntuパッケージを使用していて、あまり変更しなかった場合、実行中のプロセス名はlighttpdであり、デフォルトのユーザー名とグループ名は両方ともwww-dataです。設定ファイル(/etc/lighttpd/lighttpd.conf)のserver.usernameおよびserver.groupnameエントリを確認してください。
ps -fC lighttpd
を実行すると、それが実行されているかどうか、および実行されているユーザーIDがとして表示されます。私のシステムでは、出力は次のようになります
rik@mary:/home/rik$ ps -fC lighttpd
UID PID PPID C STIME TTY TIME CMD
www-data 667 1 0 03:50 ? 00:00:00 /usr/sbin/lighttpd -f /etc/lighttpd/lighttpd.conf
Document-rootの下に表示したいものはすべて、www-dataユーザーが読み取り可能である必要があり、ディレクトリはwww-dataでも実行可能である必要があります。これをテストするには、ユーザーwww-dataとしてfindを使用してみてください。 Sudoコマンドはこれに役立ちます。 Sudo -u www-data find /var/www/sites/mysite.com/http/media/css/
は成功するはずです。そうでない場合は、findがファイル名とディレクトリ名を返すことができるまで、Sudo -u www-data find /var/www/sites/mysite.com/http/media/
などで1ステップ上に再試行します。そこで、-R(再帰)フラグを指定せずに、そのディレクトリに対してchownおよびchmodコマンドを実行します。その後、もう一度テストします。
/ var/www/sites/mysite.com/http/mediaの下にあるすべてのファイルとディレクトリが誰でも読めることに慣れている場合は、すべてのファイルを644、dirsを755としてchmodしたい場合があります。実行ビットを設定する必要のあるファイルがある場合、すべてに固有の拡張子がない限り、これはもう少し問題になる可能性があります。これは、次のような-type、-exec、および-nameフラグを使用して行われます。
chown -R id:www-data /var/www/sites/mysite.com/http/media
find /var/www/sites/mysite.com/http/media -type d -exec chmod 755 {} \;
find /var/www/sites/mysite.com/http/media -type f -exec chmod 644 {} \;
find /var/www/sites/mysite.com/http/media -type f -name '*.php' -exec chmod 755 {} \;
Lightyがツリー内の他のファイルやdirにアクセスしたくない場合は、別の方法で処理する必要があります。読み取り可能なファイルを、一般の人の目に触れないようにしたいファイルとは別のディレクトリに保存しておくと、常に簡単になります。
権限が正しいことを確認しますか? 「drwxr -----」は正しくないようです。おそらく必要なのは、ディレクトリの0755(rwxr-xr-w)とファイルの0644(rw-r--r--)です。
また、www-dataはグループではなく、所有者のようです。
ps
は、lighttpdプロセスで使用される効果的なユーザーとグループを教えてくれるはずです。
ps -ax -o user,group,pid,comm | grep httpd
「server.username」と「server.groupname」が何に設定されているかをlighttpd.confファイルで確認することもできます。
プロセスは、ディレクトリに降りるために、ディレクトリへの実行アクセスを必要とします。 lighttpdユーザーまたはグループが所有していない親ディレクトリにグローバル実行権限が設定されていることを確認してください。
グループに読み取りおよび実行権限も追加する必要があります(現在、それらは欠落しているようです)。
chmod g+rx css media