Apache 2.4を含むCentOS 7は、ルートWebディレクトリを変更した後にコンテンツを提供しません。

Apache 2.4を含むCentOS 7は、ルートWebディレクトリを変更した後にコンテンツを提供しません。

/var/www/htmlApache WebサービスのルートWebディレクトリを自分のカスタムディレクトリに変更しようとしています/mnt/webfiles。ただし、/etc/httpd/conf/httpd.confパラメータを設定して再起動した後でも、httpd私のテストディレクトリ/ファイルはまだWeb上で移動できません。

環境は次のとおりです。
オペレーティングシステム:CentOS 7.9.2009
Apacheバージョン:2.4.6オペレーティングシステム
インストールの種類:基本Webサーバー

Apache Webを使用する目的は、単にテストすることです。サーバーには、Webページを閲覧するためにクライアントのIPアドレスのみが必要です。

/var/www/html単純なWebページとして機能する単純な.txtやdownloadダウンロードページをシミュレートするために、ファイルを含むサブディレクトリなどのデフォルトディレクトリを使用してテストファイルを配置すると、すべてがうまく機能します。ブラウザでWebを閲覧できます。

ただし、私の特定のディレクトリに変更すると、DocumentRoot "/var/www/html"以下のテストファイル/ディレクトリにDirectory "/var/www"アクセスできなくなり、ブラウザに次のエラーメッセージが表示されます。/mnt/webfiles/mnt/webfiles

Forbidden
You don't have permission to access /download/ on this server.

デフォルトのApache Webページのみを閲覧でき、影響を受けません。

私がしたことは、以下の指示に従うことでした。この投稿そしてこれ

ただし、Apache Webルートディレクトリのファイル/ディレクトリ権限はすべておよびroot:root775です/var/www/html
これが根本原因ではないようです。

なぜこれが起こるのか知っている人がいますか?

ベストアンサー1

考えられる答えの1つは、SELinuxが新しいWebrootを拒否することです。

SELinuxが有効になっていることを確認してください。

$ getenforce
Enforcing

EnforcingSELinuxが有効になっており、ルールが適用されることを意味します。 SElinuxの存在をすばやく確認してください。本物 問題は一時的に無効にすることです。

$ setenforce 0

Webページをリロードして動作する場合は、SELinuxが原因である可能性が高くなります。

しかし、この問題を永久に解決する方法いいえSELinuxを無効にする必要がありますか?

調査する正しいネットワークルートのコンテキスト:

$ ll -Z /var/www/html
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 .
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 ..

ラベルに注意してくださいhttpd_sys_content_t

これは、現在使用している新しいWebrootとは異なる場合があります/mnt/webfiles

SELinuxポリシーで新しいWebルートの正しいコンテキストを定義する必要があります。これを行う:

# This sets correct context in the policy
$ semanage fcontext -a -t httpd_sys_content_t "/mnt/webfiles(/.*)?" 

# This applies the context to the webroot
$ restorecon -v /mnt/webfiles

その後、動作していることを確認してください。 SELinuxを再度有効にする必要があります。それ以外の場合は、実際にテストできません。 :-)

$ setenforce 1

拒否を確認するには、SELinux AVC 拒否ログを次のように表示できます。

$ ausearch -ts recent -m avc

また、Webルートへの書き込みアクセスが必要な場合は、コンテキストをからに変更するか、httpd_sys_content_tSELinuxブール値を次にhttpd_sys_rw_content_t設定する必要があります。httpd_unifiedtrue

$ setsebool -P httpd_unified 1

おすすめ記事