/var/www/html
Apache 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:root
、775
です/var/www/html
。
これが根本原因ではないようです。
なぜこれが起こるのか知っている人がいますか?
ベストアンサー1
考えられる答えの1つは、SELinuxが新しいWebrootを拒否することです。
SELinuxが有効になっていることを確認してください。
$ getenforce
Enforcing
Enforcing
SELinuxが有効になっており、ルールが適用されることを意味します。 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_t
SELinuxブール値を次にhttpd_sys_rw_content_t
設定する必要があります。httpd_unified
true
$ setsebool -P httpd_unified 1