SELinux を運用しながら WordPress を更新する際に,FTP 接続情報の入力画面が表示される 問題についての解決策をまとめました。
問題の原因
SELinux により,WordPress のディレクトリ./wordpress
に対して 書き込み権限が制限されている ため,WordPress が通常の 直接更新 を行えず、FTP 接続を求めてきます。

エラーログ(ausearch
の出力)からも,httpd_sys_content_t
のコンテキストでは 書き込みが許可されていない ことが確認できます。
type=AVC msg=audit(xxxxxxxxx.xxx:xxxxx): avc: denied { write } for pid=xxxx comm="php-fpm" name="wordpress" dev="dm-0" ino=xxxxxxxxx scontext=system_u:system_r:httpd_t:s0 tcontext=unconfined_u:object_r:httpd_sys_content_t:s0 tclass=dir permissive=0
解決策
① SELinux のコンテキストを一時的に変更
以下のコマンドで,WordPress のディレクトリに書き込み権限を付与 する。
sudo chcon -R -t httpd_sys_rw_content_t .(どこか)/wordpress/
この操作で,WordPress が更新ファイルをダウンロードし,直接適用できるようになります。
② WordPress の更新を実施
管理画面から WordPress の更新 を実行する。
FTP 接続画面が表示されずに,直接更新ができるようになります。

③ 更新後、元の SELinux コンテキストに戻す
更新完了後に、本来の SELinux の設定に戻す ことで、余計な書き込み権限を解除します。
sudo restorecon -R -v .(どこか)/wordpress
これにより,WordPress ディレクトリの SELinux コンテキストがデフォルトに戻り,セキュリティが保たれます。
④ 永続的に書き込みを許可する場合(オプション)
頻繁に WordPress を更新する場合は,SELinux の設定を変更して 永続的に書き込みを許可 することもできます。(セキュリティ的にはやや劣後します)
sudo semanage fcontext -a -t httpd_sys_rw_content_t ".(どこか)/
wordpress(/.*)?"
sudo restorecon -R -v .(どこか)/wordpress
まとめ
方法 | SELinux の設定 | 更新後に戻す必要 |
---|---|---|
chcon で一時的に変更 | httpd_sys_rw_content_t を適用 | 必要(restorecon ) |
semanage fcontext で永続的に許可 | .(どこか)/wordpress/ のコンテキストを変更 | 不要 |
どの方法が適切か?
🔹 厳格なセキュリティ管理が必要な場合
✅ chcon
を使って一時的に変更し,更新後 restorecon
で戻す
🔹 他のアプリケーションの影響を最小限にしたい場合
✅ semanage fcontext
で .(どこか)/wordpress
のみ書き込み許可
また,「setsebool -P httpd_unified 1
」 を有効化する方法もあるようですが,セキュリティ的にさらに劣後することになります。これについては,他サイトを参照してください。(未検証)
これらの方法で,SELinux を有効に保ちつつ,WordPress の更新をスムーズに行えるようになるでしょう。

