SELinuxを有効にした状態でhttpdのDocumentRootを変える方法

昔からの慣例というか癖で、開発マシンの httpd の DocumentRoot を、/mine/www/というところに設定しているのですが、Fedora に SELinux という仕組みが搭載されてから、怒られるようになってしまいました。

調べてみると、新しく設定したドキュメントルートに、httpd がアクセスするための SELinux のラベルが設定されていないのが原因のようで、こちらの記事に対処方法が書いてありました。

基本的にはこの通り実行しただけなのですが、自分の環境だとラベルがちょっと違ったので、それも含めてメモしておきます。
なお、自分の環境は、Fedora 21 で、ドキュメントルートは/mine/www/です。

参考にさせてもらっている記事のやり方にならって、まずは、もともとドキュメントルートに設定されていた/var/www/の設定を見てみます。

$ ls --context /var/ | grep www
drwxr-xr-x. root root system_u:object_r:httpd_sys_content_t:s0 www/

$ 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/

参考元の記事と違って、最後にs0というラベルが付いていますね。
これも含めて、新しいドキュメントルートに対し、ラベルを設定します。

今回は Web の開発マシンということで、どこでも CGI が動くようにしたいので、cgi-binに設定されているラベルを適用したいと思います。

$ sudo chcon system_u:object_r:httpd_sys_script_exec_t:s0 /mine/www/ -R
$ ls --context /mine/ | grep www
drwxrwxr-x. root  developers  system_u:object_r:httpd_sys_script_exec_t:s0 www/

ちなみにs0無しでやってみたら、設定が適用されませんでした。

設定ができたら、httpd を再起動してみます。

$ sudo systemctl restart httpd.service

特に怒られなければ成功です。

コメントを残す