SELinuxによりWordPressのアップデートができない

プラグインの更新や、Wordpressのアップデートができなかった。ディレクトリが作成できないというメッセージだった。
ディレクトリwordpress/wp-contentのパーミッションの許可を変更したりしてみたけど、状況は変わらなかった。

%>sudo setenforce 0 でSELinuxを無効にしたらアップデートできた。
%>sudo setenforce 1 でSELinuxを有効に戻したら上図のメッセージがまた出た。

どうやらコンテキストがhttpd_sys_content_tだったのが原因のよう。httpd_sys_rw_content_tに変更が必要だった。次のようにして追加した。

%>sudo semanage fcontext -a -t httpd_sys_rw_content_t "wordpressディレクトリ(/.*)?"
%>sudo semanage fcontext -l | grep wordpress
wordpressディレクトリ(/.*)?           all files          system_u:object_r:httpd_sys_rw_content_t:s0
%>
%>restorecon -v -R wordpressディレクトリ
%>
%>less /etc/selinux/targeted/contexts/files/file_contexts.local
wordpressディレクトリ(/.*)?           all files          system_u:object_r:httpd_sys_rw_content_t:s0
%>

変更されていることが確認できた。

[almalinux9 ~/public_html/wordpress]$ ls -lZ
drwxr-xrwx.  6 apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0   127 Oct 23 16:08 wp-content/
・・・

あと、SELinuxが原因だとわかる前に、いろいろいじっていて、サーバーにアクセスすると通信がブロックされて、Access Deniedになる場合に以下の設定も必要という情報があったので念のために設定しておいた。これまで、Access Deniedになることは無かったので、いじる必要はなかったのかもしれない。

[almalinux9 ~/public_html/wordpress/wp-content]$ getsebool -a | grep httpd | sort
httpd_anon_write --> off
httpd_builtin_scripting --> on
httpd_can_check_spam --> off
httpd_can_connect_ftp --> off
httpd_can_connect_ldap --> off
httpd_can_connect_mythtv --> off
httpd_can_connect_zabbix --> off
httpd_can_manage_courier_spool --> off
httpd_can_network_connect --> on
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> off
httpd_can_network_memcache --> off
httpd_can_network_relay --> off
httpd_can_sendmail --> off

[almalinux9 ~/public_html/wordpress/wp-content]$ sudo setsebool -P httpd_can_network_connect_db
1
[almalinux9 ~/public_html/wordpress/wp-content]$ getsebool -a | grep httpd | sort
httpd_can_network_connect --> on
httpd_can_network_connect_cobbler --> off
httpd_can_network_connect_db --> on

UNIX

Posted by 伊藤 輝樹