QA@IT

apacheのログ書き込みに関して

8499 PV

お世話になります
サーバ構築で、詰んでしまったので、ご質問させてください

古い環境を新しい環境に移行して、セットアップ中で、apacheのセットアップで詰んでしまったので、質問させていただきました。

httd.confのユーザは

User apache
Group apache

で動いていて、以下ディレクトリに書き込んでいるのですが

/var/www/*******/customer/logs

権限が

[xxxxx@xxxxx customer]$ ll
合計 20
drwxr-xr-x. 2 xxxxxxx users 4096 10月 15 12:22 2014 conf
drwxr-xr-x. 2 xxxxxxx users 4096 10月 21 14:20 2014 culib
drwxr-xr-x. 3 xxxxxxx users 4096 10月 21 14:20 2014 handlers
drwxrwxrwx. 2 xxxxxxx users 4096 11月  4 19:13 2014 logs
drwxr-xr-x. 4 xxxxxxx users 4096 10月 15 12:22 2014 smarty

となっており、777なのですが、何故か書き込めず、/var/log/httpd/のerrorログが

Could not open log file '/var/www/xxxxxxx/customer/logs/apache_access-20141105_06.log' (Permission denied)

となっています。
こういった事象に心当たりがあるかたは居ますでしょうか

ちなみにミドルウェアはchefでインストールしました
よろしくお願いいたします。

  • ログを書き込もうとしているディレクトリは nfs でマウントされていますか? -
  • ngyukiさん、してないです。 -
  • SELinuxは有効(enforcing)ですか?
    -
  • こちらのことでしょうか??有効になってるようです
    ```
    [xxxxxxx@xxxxxx01 ~]$ getenforce
    Enforcing
    ```
    -
  • SELinuxをいったんpermissiveかdisableにして試してみると切り分けになると思います。 -
  • やってみます! -
  • SELinuxを無効にしたら、大丈夫になりました!ありがとうございます -

回答

SELinux配下だと、apacheのプロセスは制限されたドメイン(例えばhttpd_t)の中で動いていて、ファイルやディレクトリに適切なラベル(例えばhttpd_log_t)をつけておかないと、apacheからアクセスできないので、Permission deniedエラーになったのは何らかの理由でラベルが欠落しているか、もしくは適切でないものになっているんじゃないかと思います。

原因の切り分けは単にSELinuxを無効にするだけでよいと思いますが、解決策については説明が大変なので、詳しいことはマニュアル第3章 Apache HTTP Serverを読んでみて下さい。

編集 履歴 (1)

こちらのことでしょうか??有効になってるようです

[xxxxxxx@xxxxxx01 ~]$ getenforce Enforcing 
編集 履歴 (0)
ウォッチ

この質問への回答やコメントをメールでお知らせします。