Apacheをどう設定しても403になる時はSELinuxを疑え!

ここ最近、サーバーを構築する機会が何度かあったのですが、Apacheの構築中しばしば同じところでハマることがあったので備忘録。

Apacheでは通常、公開するディレクトリ(ドキュメントルートとするディレクトリ)のアクセス権限を下記のように与えてやれば、Webブラウザからのアクセスが可能になります。
例えば、

#2.2系
<Directory /var/www/html>
Order Deny,Allow
Deny from All
</Directory>
または
#2.4系
<Directory /var/www/html>
Require all granted
</Directory>

とすれば
/var/www/html
配下がアクセス可能になるはずです。
勿論、OS側のアクセス権限も調整する必要がありますが、Directoryディレクティブを設定し、なおかつOS側のファイルアクセス権限も問題ないはずなのに、ブラウザで開くと何故かステータスコード403(Forbidden)が返され、コンテンツが見えない、といった事情が起こりました。

ドキュメントルートのディレクトリよりもさらに上のディレクトリに、実行権限がついてるかどうかを確認したり、権限を一括で書き換えたりなど行いましたが、一向にアクセスできず。

いろいろ調べたところようやく原因に多とりつきました。

SELinuxです。

SELinuxはアクセス制御を行うモジュールで、米国NSAがオープンソースで提供しています。

非常に強力なのですが、サーバーのように一般的によくアクセスされる場合は障害になることも多いので、基本的には無効にします。
ただ最近は、インストール時に既に無効になっているものも多いのですが、今回使ったCentOSの場合はデフォルトで有効になっていたようで、SELinuxが動いていることに気づかずにそのまま作業してしまっていました。

SELinuxの設定の確認は

getenfotce

とすると確認ができます。

無効化すは

setenfotce 0

でできますが、これだけだとOSを再起動した際に復活してしまうので、

/etc/selinux/conf

SELINUX=enforcing

の記述を

SELINUX=permissive

に変更しておきます。
これで、再起動時もSELinuxが無効のままにしておくことができます。

なんど設定しなおしてもうまくいかない…!という方は一度SELinuxの設定を確認してみてください。

>株式会社シーポイントラボ

株式会社シーポイントラボ

TEL:053-543-9889
営業時間:9:00~18:00(月〜金)
住所:〒432-8003
   静岡県浜松市中央区和地山3-1-7
   浜松イノベーションキューブ 315
※ご来社の際はインターホンで「316」をお呼びください

CTR IMG