私はCentOS 7でApacheをマスターしようとしてきました。
2つの仮想ホストを設定し、次のデフォルトのindex.htmlページを作成しました。
/var/www/domainA/public_html/index.html
/var/www/domainB/public_html/index.html
両方のホストには次の権限があります。
ドメインA:
public_html -> jonathan:jonathan
index.html -> root:root
ドメインB:
public_html -> jonathan:jonathan
index.html -> root:root
DomainAのindex.htmlページは正常に動作しますが、Domain Bのindex.htmlでは403 Forbiddenが表示されます。
DomainB の error.log は以下を提供します。
AH00132: file permissions deny server access: /var/www/DomainB/public_html/index.html
なぜこれが起こるのですか?これは私をとても悲しくさせます。
答え1
問題は、ファイル/フォルダ権限自体ではなく、機能しないドメインのセキュリティコンテキストにあることがわかりました。
私の限られた理解によれば、Apacheがファイルを提供するためにファイル/フォルダをコンテキストで実行するように設定する必要がありますhttpd_sys_content_d
。
私の「エラー」は、機能しないドメインが私の開発領域からApacheコンテンツフォルダに移動され、正しいセキュリティコンテキストがないため、Apacheがファイルを提供できないことです。これは、フォルダとサブフォルダで実行することによって確認ls -Z
されました。public_html
一度chcon -R -t httpd_sys_content_t public_html/
正しいセキュリティコンテキストを設定し、Apacheはすべてを提供しています。
答え2
chcon -R -t httpd_sys_content_t <Your_Document_Root_Dir>
トリックを行う必要があります