delete from hateblo.jp where 1=1;

タイトルに意味はありません。

setenforceモードでのsuexec

不特定多数のユーザーからサーバーコンテンツの変更がある場合、
サーバーにそれなりの制限を設けつつ、自由にコンテンツの変更が行われなくてはならない。
redhat系列(fedora,CentOS,RedHat,suse?)の場合、selinuxというセキュリティモジュールがある。
デフォルトではOnのPermissiveになっているはずだ。
これをEnforcingにしたとき、apache(httpd)でsuexecを有効にしている場合、セキュアコンテキスト(ls -lZ とかで出てくるuser_u:object_r:unconfined_t)の問題にあたるはずだ。
setroubleshootdを有効にしている場合は、そのヘルプメッセージに書かれている手順を実行すればよい。
しかし、複数の手順があるので紹介しておく。

セキュアコンテキストスイッチの状態の確認
sudo /usr/sbin/getsebool -a | grep httpd
allow_httpd_anon_write --> off
allow_httpd_mod_auth_pam --> off
allow_httpd_sys_script_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_network_connect --> off
httpd_can_network_connect_db --> off
httpd_can_network_relay --> off
httpd_disable_trans --> off
httpd_enable_cgi --> on
httpd_enable_ftp_server --> off
httpd_enable_homedirs --> on
httpd_rotatelogs_disable_trans --> off
httpd_ssi_exec --> off
httpd_suexec_disable_trans --> off
httpd_tty_comm --> off
httpd_unified --> off
セキュアコンテキストを適切なものに変更

サブモジュールのコンテキストをapache権限で動かす

sudo /usr/sbin/setsebool -P httpd_unified 1

対象のフォルダのコンテキストが今後正しいものになるように修正する

sudo vi /etc/selinux/targeted/contexts/files/file_contexts.local

以下を追記

/var/www/[^/]+/public_html(/.*)?         system_u:object_r:httpd_sys_content_t

設定を反映する

sudo /usr/sbin/setenforce 0
sudo restorecon -R /var/www/*/public_html
sudo /usr/sbin/setenforce 1
ls -Zd /var/www/*/public_html

コンテキストスイッチを有効にするためapacheを再起動する

sudo /etc/init.d/httpd condrestart

気が向いたら関連ページの設定一覧を翻訳...