WordPress と SElinux

以前悩んでいた、自分で立てたテスト用サーバーで WordPress 関連ファイルのコンテキストをどう設定すれば良いかという話。以下のコマンドで、英語版 /usr/share/wordpress の現在の設定を確認して /usr/share/wordpress-ja に適用すれば良いと思いついた。

# semanage fcontext -l | grep wordpress

ちなみにコマンド出力結果は以下の通り。

/usr/share/wordpress-mu/wp-config\.php             regular file       system_u:object_r:httpd_sys_script_exec_t:s0
/usr/share/wordpress-mu/wp-content(/.*)?           all files          system_u:object_r:httpd_sys_rw_content_t:s0
/usr/share/wordpress/.*\.php                       regular file       system_u:object_r:httpd_sys_script_exec_t:s0
/usr/share/wordpress/wp-content/upgrade(/.*)?      all files          system_u:object_r:httpd_sys_rw_content_t:s0
/usr/share/wordpress/wp-content/uploads(/.*)?      all files          system_u:object_r:httpd_sys_rw_content_t:s0

wordpress-mu は (今は配布されていない) マルチサイト用パッケージの設定だと思われ。とりあえず、以下のファイルコンテキスト設定して様子見。

# semanage fcontext -a -s system_u -t httpd_sys_script_exec_t -f -- '/usr/share/wordpress-ja/.*\.php'
# semanage fcontext -a -s system_u -t httpd_sys_rw_content_t '/usr/share/wordpress-ja/wp-content(/.*)?'
# restorecon -R /usr/share/wordpress-ja

詳しくは man semanage、man restorecon ということで。


追記:
WordPress 自体のアップグレードにはやはりこれだけでは足りなくて、FTP ユーザ/パスワード入力画面になってしまう。まあ、アップグレードするときだけ setenforce なり chcon なりで一時的にインストールディレクトリ以下を書きこみ可とするがよいのではないかな。