• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Apacheのユーザーディレクトリにアクセス不可)

Apacheのユーザーディレクトリにアクセス不可

このQ&Aのポイント
  • CentOSでWebサーバの構築を行っていたところ、Apacheのユーザーディレクトリにアクセスできない問題が発生しています。
  • 「http://サーバIP/~ユーザ名/index.html」でアクセスしようとすると、403 Forbiddenエラーが表示されます。
  • 既に確認した事項として、ディレクトリのパーミッションやSELinuxの設定は確認済みですが、解決していません。

質問者が選んだベストアンサー

  • ベストアンサー
noname#259146
noname#259146
回答No.2

ラベルが”:httpd_user_content_t”になっていますので正しく設定できていると思います。 しかしどこかで拒否されいますので。 /var/log/audit/audit.log の内容を確認してどこで拒否されたいるかを知られべると良いと思います。 これについては下記HPを参考にしてください。 http://www.2done.org/index.php?id=17 http://alfa.homelinux.org/pukiwiki/index.php?Linux%2FSELinux%A5%E1%A5%E2%BD%F1%A4%AD

ruijihin
質問者

お礼

情報ありがとうございます。 結論から申し上げると、SELinux絡みの問題ではなかったことが判明し、解決いたしました。 SELinuxはやはりPermissiveで、/var/log/audit/audit.log」にもエラーログが残っていなかったため、再度apacheのエラーログを参照しましたところ 「client denied by server configuration」 というエラーログが記録されていました。 これについて調査を行ったところ、httpd.confの.htaccess絡みの設定が間違っていたことが判明し、修正したところつながるようになりました。 <Limit GET POST OPTIONS> Order allow,deny Allow from all </Limit> ↓ <Limit GET POST OPTIONS> Require all granted </Limit> (参考) http://blog.netandfield.com/shar/2012/10/24-htaccess.html 恐らく、昨日の段階ではSELinuxの設定かパーミッションの設定がうまくいっておらず「permissions are missing」エラーとなっており、 再度確認のための実行時に「httpd.conf」のエラーに切り替わっていたものと考えられますが、その後エラーログを見ていなかったために気づかなかったのではないかと思います。 ご助力いただきありがとうございました。

その他の回答 (1)

noname#259146
noname#259146
回答No.1

まずモジュールmod_userdir.soは正しく読み込まれいるか?   Apacheの起動ログにエラーが無いことを確認してください。 ディレクトリのラベル再設定作業を再度確認してください。 ラベルを再設定するにはrootにて以下を実行します。 # restorecon /home/ユーザディレクトリ/public_html # restorecon -R /home/ユーザディレクトリ/public_html 1行目で、~/public_htmlのラベルを初期化し、 2行目で、~/public_html配下のファイル/ディレクトリを初期化する。 結果的に、public_htmlを含めたファイル/ディレクトリのラベルが system_u:object_r:httpd_user_content_t になります。 index.htmlのオーナはindex.htmlが存在するユーザと同じですか?

ruijihin
質問者

補足

ありがとうございます。 # apachectl -M を実行した結果以下の行が存在しますので、読み込めていると考えます。 userdir_module (shared) Apache起動時には AH00557: httpd: apr_sockaddr_info_get() failed for VbCent AH00558: httpd: Could not reliably determine the server's fully qualified domain name, using 127.0.0.1. Set the 'ServerName' directive globally to suppress this message というエラーが出力されますが、サーバ名の設定はドメインの取得を行っていないので、とりあえず保留にしていました。 また、ラベルの再設定作業を教えていただいた通りの手順で実行いたしました。 # ls -lZ /home/ユーザ名/ の結果の該当行は以下の通り。 drwxr-xr-x. ユーザ名 ユーザ名 unconfined_u:object_r:httpd_user_content_t:s0 public_html # ls -lZ /home/ユーザ名/public_html の結果の該当行は以下の通り。 -rw-r--r--. ユーザ名 ユーザ名 unconfined_u:object_r:httpd_user_content_t:s0 index.html index.htmlのオーナはユーザになっていると思われますが、ラベルについては「"system"_u:object_r:object」ではなく、「"unconfined"_u:object」となっています。 起動時エラー・ラベルともに現段階の私の知識では、今回の問題と直接影響があるのか判断が付きません。 継続して調査を続けますが、取り急ぎ補足情報として書かせていただきました。

関連するQ&A

専門家に質問してみよう