CentOS Apache HTTPD構成(403禁止)


8

これは私のhttpd.confにあるものです

<VirtualHost *:80>
        ServerAdmin spero78@spero78.com
        ServerName mcmoddr.com
        ServerAlias www.mcmoddr.com
        DocumentRoot /home/mcmoddr/www/
        ErrorLog /mcmoddr/logs/error.log
        CustomLog /mcmoddr/logs/accesslog combined
</VirtualHost>

私たちのサイトにアクセスすると、403 Forbiddenエラーが発生します。ファイルはvsftpdで追加され、権限drwxr-xr-xが付与されます

回答:


12

CentOSのストックインストールを使用しています。それが正しい場合は、SELinuxが強制モードになっているかどうかを確認してください

getenforce

結果が「強制」の場合

一時的に許容に変更します

setenforce 0

もう一度やり直してください。Webコンテンツの状態をホームディレクトリのファイルに導くこともできます。


私の場合はこれでうまくいきました。しかし、その後再度強化すると(setenforce 1を使用)、以前と同じ構成であったにもかかわらず、403エラーが表示されなくなりました。
damix911 2013年

これは汚いハックに過ぎません。確かに、単にセキュリティ機能を無効にする適切な方法ではありません。代わりに設定する必要があります。
フール

9

SELinuxを無効にするか、ROOTで実行する

setsebool -P httpd_enable_homedirs on
chcon -R -t httpd_sys_content_t /home/
chcon -R -t httpd_sys_rw_content_t /home/

5

Freaktorの 'setenforce 0'の答えは私にとって「うまくいった」(ありがとう!)

しかし、それを機能させてSELinuxを再び有効にするために、私はする必要がありました

sudo chcon -Rv --type=httpd_t /path/to/my/files

...これにより、私のディレクトリとその中のすべてのファイルとディレクトリに「httpd_t」のセキュリティコンテキストが与えられました。これは、SELinuxがhttpdにこれらのファイルを読み取らせるという不格好な方法です。

selinuxを再度有効にするのは、

setenforce 1

2
これは一時的なものです。作成する新しいファイルには元のコンテキストがあり、SELinuxは新しいファイルへのアクセスを拒否します。永続的な解決策については、この回答を参照してください。
マイケルハンプトン

3

おそらく、グローバル構成のどこかにすべて拒否があります。これをvhostスタンザに追加してみてください。

<Directory /home/mcmoddr/www>
  Order allow,deny
  Allow from all
</Directory>

+1、また@ Spero78は、制限付きのディレクティブを使用して、仮想ホストのルートに.htaccessファイルがないことを確認する必要があります

0

<Directory>上記のコンテナを使用する必要があります。

次に、DocumentRootパスから確認する必要があります。サービスユーザーapacheがアクセスできるように、各ディレクトリには読み取り権限が必要です。

あなたは使用して確認することができます ls -ld


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.