「`/var/log/httpd/access_log' を 読み込み用でオープンできません: 許可がありません」の対処法

最近にわかサーバ管理者になったDQNEOです。
こんにちわ。

Apacheのログファイルを、一般ユーザとして閲覧しようとしたらエラーが閲覧できないことがあります。

$ tail -f /var/log/httpd/access_log
tail: `/var/log/httpd/access_log' を 読み込み用でオープンできません: 許可がありません
tail: 何もファイルは残っていません

原因と対処法

一般ユーザが/var/log/httpd/access_log を閲覧するためには、'/var'と'/var/log'と'/var/log/httpd'ディレクトリすべてに、実行権限(x)を付与する必要があります。

CentOSなどでは、httpdディレクトリに実行権限がついてないことが多いので、付けてあげましょう。

例えば下記のようにすればOKです。
chmod 0605 /var/log/httpd

ことの経緯

私は当初、accesslogファイルのパーミッションは "0644/-rw-r--r--"になっているので、一般ユーザでも読み取りできるはずなのにおかしいなーと思っていました。

検索したら答えが見つかりました。

http://www.webhostingtalk.com/showthread.php?t=422959
What are the permissions on the dirs leading up to access_log? Can the web server user access the directories leading up to the access_log file? He'll at least need execute permissions on '/var', '/var/log', and '/var/log/httpd.'

I believe the default permissions on the /var/log/httpd directory (on Fedora systems, at least) is root:root 700. Do a "chmod w+x /var/log/httpd" and you'll be OK. I believe those files are written with world-readable permissions, anyways.

There are "more secure" ways to handle it, but adding an execute bit to a directory that only contains log files isn't going to hurt.
翻訳
access_logに至るまでの各ディレクトリのパーミッションはどうなってる?
ユーザは、access_logに至るまでの各ディレクトリにアクセスできるようになっているかい?
少なくとも、'/var'と'/var/log'と'/var/log/httpd'には実行権限がいるよ。

Fedoraとかでは、デフォルトでは'/var/log/httpd'のディレクトリのパーミッションは'700'になってるはずだ。
だから、'chmod w+x /varlog/httpd'してみるといいよ。

ほんとはもっとセキュアなやり方があるんだけど、ログファイル専用ディレクトリに実行権限を付けることは、たぶん問題ないだろう。


困ったときは、おっくうがらずに英語サイトも見てみるといいですね。
よい経験になりました。
カテゴリ:

人気記事