WEBコンテンツホルダーを/var/www以外の場所にするとエラー
2018/03/29
2019/12/23
タグ: Documentroot, Path, SELinux, エラー, ドキュメントルート, パス
もうご存知の方は沢山いると思いますが、Linuxのインストール直後はSELinuxが有効になっており、デフォルト以外のフォルダーを使用するとエラーが生じたりします。
SELinux 実行中のシステム上では、すべてのプロセスとファイルにセキュリティー関連の情報を表示するラベルが付けられようにできています。尚この情報は、SELinux コンテキストと呼ばれており使用するプロセス(アプリケーション)により様々なものが用意されています。ファイルに関しては、ls -Z コマンドでこれを確認表示することができます。
一番多い例は、WEBのドキュメントフォルダーを変更して使う場合が多いと思います。例えば/var/wwwがデフォルトではWEB基準フォルダーですが、/opt/wwwにしようとしたら エラーが発生して起動できないという事が起こります。
ここでよくある対処方法はSELinuxをOFFにするというケースです。確かにOFFにすることでエラーが出なくなりますが折角のSELinuxによるセキュリティ強化がこれでは台無しですのでこの投稿記事では 正規の変更の仕方について説明していきたいと思います。
現在のコンテキストのステートを確認する
1 2 3 4 |
[root@server01 var]# ls --context /var/www drwxr-xr-x. root root system_u:object_r:httpd_sys_script_exec_t:s0 cgi-bin drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 html drwxr-xr-x. apache apache unconfined_u:object_r:httpd_sys_content_t:s0 vhosts |
以上のコンテキストが付与されている事がわかりましたね。では移動先の/opt/wwwはコンテキストがどうなっているか確認してみましょう。
それではどうやって同じフラグにしたらよいかという話ですが、これは単純で/var/wwwのコンテキストを真似して新しいフォルダーへ付与するだけの事です。コンテキストを変更するのは”chcon”というコマンドを使用します。
1 2 3 4 5 6 |
[root@server01 opt]# mkdir www [root@server01 opt]# ls -dZ /opt/www drwxr-xr-x. root root unconfined_u:object_r:httpd_sys_content_t:s0 /opt/www [root@server01 opt]# chcon -R system_u:object_r:httpd_sys_content_t:s0 www [root@server01 opt]# ls -dZ /opt/www drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 /opt/www |
※-Rは再帰的処理でコンテキストを付与することを意味します。
これで共通のコンテキストになりました。コンテンツを配置してWEBサーバの再起動を行うとエラーがもう出ないはずです。
1 |
[root@server01 opt]# systemctl restart httpd.service |