3.7 KiB
3.7 KiB
title | author | date | url | geo_latitude | geo_longitude | geo_public | wordtwit_posted_tweets | wordtwit_post_info | categories | ||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Ubuntu Precise で Php5-fpm のソケットファイルのオーナー・グループが気づかぬうちに変わってた | kazu634 | 2014-06-25 | /2014/06/25/how_to_solve_php5-fpm_bug/ |
|
|
|
|
|
|
気づいたらWordPress
サイトがInternal Server Error
を出すようになっていたので、トラブルシュートしてました。結論を言うと、Ubuntuで提供しているphp5-fpm
パッケージのセキュリティアップデートを適用すると、問答無用でオーナー・グループがroot:root
になってしまうようです。
事象
WordPress
サイトがInternal Server Error
を出してアクセスできなくなった。
直接的な原因
以下のログがnginx
のログに出力されていることから、php5-fpm
のソケットファイルにアクセスできなかったことが原因と思われる。
[crit] 1131#0: *304 connect() to unix:/var/run/php5-fpm.sock failed (13: Permission denied) while connecting to upstream, client: xxx.xxx.xxx.xxx, server: _, request: "GET / HTTP/1.0", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:"
実際に/var/run/php5-fpm.sock
のオーナー・グループを確認すると、root:root
でありパーミッションが660
であった(nginx
はwww-data
でphp5-fpm
にアクセスする)
真因
php5-fpm
のセキュリティアップデート(= php5-fpm:amd64 5.3.10-1ubuntu3.12
) を適用すると、ソケットファイルのオーナー・グループのデフォルト設定値がroot:root
に変更となった。詳細は以下を参考:
- UbuntuUpdates – Package “php5-fpm” (trusty 14.04)
- Bug #1307027 “php5-fpm: Possible privilege escalation due to ins…” : Bugs : “php5” package : Ubuntu
対応策
/etc/php5/fpm/pool.d/www.conf
でソケットファイルのユーザ・グループ・パーミッションを明示的に指定する (= 我々ユーザからはlisten.owner
, listen.group
, listen.mode
のデフォルト値が変更されたように見えるのが今回のバグのようだ):
; Set permissions for unix socket, if one is used. In Linux, read/write ; permissions must be set in order to allow connections from a web server. Many ; BSD-derived systems allow connections regardless of permissions. ; Default Values: user and group are set as the running user ; mode is set to 0666 listen.owner = www-data listen.group = www-data listen.mode = 0660