403Forbiddn

Apacheで403 Forbiddenが表示されたら

環境

・CentOS Linux release 7.1.1503 (Core)
・Apache 2.4.6

前提

・設定ファイル
 /etc/httpd/conf/httpd.conf
・DocumentRoot
 /var/www/html
・テストページ
 /var/www/html/index.html

事象

テストページを表示しようとすると403 Forbiddenが表示される。

チェックポイント

Apacheの再起動をしていない

設定ファイルを変更した場合、Apacheを再起動しないと変更が反映されません。
そのため再起動していない場合は、実施します。

再起動

リロード

Apacheを終了したくない場合は、以下を実行して下さい。

ファイルに読み取り権限がない

権限には「所有者」「所有グループ」「その他のユーザ」がありますが、「その他のユーザ」に読み取り権(r)が付与されているか確認してください。
※今回の場合だと、/var/hoge/index.html の権限になります。

その他のユーザに読み取り権がない場合

対応

ファイルに読み取り権を付与します。

ディレクトリの権限に実行権がない

DocumentRootまでの各ディレクトリで、「その他のユーザ」に実行権(x)が付与されているか確認してください。
今回だと「/」, 「/var」, 「/var/hoge」の3つの内のいずれかにディレクトリに実行権(x)がないと、テストページが表示されません。

/var/hoge/ に実行権がない場合

対応

ディレクトリに実行権を付与する。

httpd.confのDirectoryセクションの設定を見直す

Directoryセクション内のRequireの設定を確認しましょう。

すべてのアクセスを拒否する場合

上記のようにRequireで「all denied」と記述すると、どこからでもアクセス不可となってしまいテストページが表示されません。
そのため以下のような方法でテストページへのアクセスを許可することができます。

すべてのアクセスを許可する場合

特定のIPのみアクセスを許可する場合

SELinuxが有効になっている

SELinuxが有効になっている場合、DocumentRootへのアクセスが拒否されている可能性があります。
SELinuxを利用する予定がない場合は無効に設定しましょう。

SELinuxを無効にする場合

SELinuxの状態確認

Enforcingと表示される場合、SELinuxは有効になっている状態です。

SELinuxを無効にする

SELinuxの設定ファイルは /etc/selinux/config になるため、こちらを編集します。

サーバ再起動

SELinuxの設定を反映するためにサーバの再起動を行います。

SELinuxの状態を再度確認

Disabledと表示されれば、SELinuxは無効に変更されています。

SELinuxを有効のまま運用する場合

新しいDocumentRootにはSELinuxのラベルを付ける必要があります。

元DocumentRootのラベルを確認

ラベルの付与

新DocumentRootに元DocumentRootと同じラベルを付与します。

ラベルの確認

以下のように表示されていれば、元DocumentRootと同じラベルが付与されています。

参考サイト:https://engineers.weddingpark.co.jp/?p=1031

タイトルとURLをコピーしました