blog/content/post/2014-06-25-how_to_solve_php...

3.7 KiB
Raw Blame History

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/
38.306223
141.022694
1
a:1:{i:0;i:1862;}
O:8:"stdClass":13:{s:6:"manual";b:0;s:11:"tweet_times";s:1:"1";s:5:"delay";s:1:"0";s:7:"enabled";s:1:"1";s:10:"separation";i:60;s:7:"version";s:3:"3.7";s:14:"tweet_template";b:0;s:6:"status";i:2;s:6:"result";a:0:{}s:13:"tweet_counter";i:2;s:13:"tweet_log_ids";a:1:{i:0;i:1862;}s:9:"hash_tags";a:0:{}s:8:"accounts";a:1:{i:0;s:7:"kazu634";}}
wordpress

気づいたら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であった(nginxwww-dataphp5-fpmにアクセスする)

真因

php5-fpmのセキュリティアップデート(= php5-fpm:amd64 5.3.10-1ubuntu3.12) を適用すると、ソケットファイルのオーナー・グループのデフォルト設定値がroot:rootに変更となった。詳細は以下を参考:

対応策

/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