Rychlý blogpost pro ty, kteří se setkají se stejným problémem. Jak se mi aktualizací rozbilo PHP na serveru a jak jsem to opravil.
Dneska ráno jsem aktualizoval na serveru (Debian stable) balíčky s PHP na verzi 5.4.4–14+deb7u10. Důvodem byly nějaké bezpečnostní záplaty, které bránily v eskalaci práv kvůli chybné výchozí konfiguraci.
Po restartu PHP se ale ukázalo, že Nginx ječí 502 Bad gateway a že se prostě s PHP neumí domluvit. Velmi rychle jsem v logu web serveru objevil problém:
*709 connect() to unix:/var/run/php5-fpm.debian.sock failed (13: Permission denied) while connecting to upstream,
Všechny sockety PHP-FPM totiž měly jako vlastníka i skupinu roota, takže se není čemu divit, že se Nginx nedokázal připojit. Ovšem s konfigurací se nehýbalo a očividně se načítala, protože sockety se vytvořily, jen se k nim nenastavilo správné právo.
Procházel jsem všechno možné, ale nemohl jsem na to přijít. Určitou nápovědu dal až blogpost na NginxTips.com, kde autor popisuje stejný problém. Po nahlédnutí do výchozí konfigurace PHP-FPM v Debianu už to pak bylo jasné. Nově je třeba kromě určení uživatele, pod kterým běží worker, nastavit také uživatele socketu.
K původní konfiguraci ( /etc/php5/fpm/users.d/debian.conf
):
[debian] listen = /var/run/php5-fpm.debian.sock user = debian group = www-debian
Je tedy třeba připsat ještě další dva řádky:
listen.owner = debian listen.group = www-debian
Pak budou uživatelé správně nastaveni a Nginx (pokud jeho worker používá stejného uživatele) se k datům dostane. Pro úplnost: ještě existuje volba listen.mode
, která umožňuje nastavovat práva k souborům, výchozí stav 0660 je ale v pořádku, takže obvykle není nutné ji zapínat.
stale treba citat oznamenia ... php-fpm nepouzivam, ale v oznameni sa presne pise o nutnosti zmenit konfiguraciu - https://www.debian.org/security/2014/dsa-2943 ... zaroven odporucam pouzivat balik apt-listchanges, pripadne cron-apt, ktory takisto zobrazi changelog alebo news
php5 (5.4.4-14+deb7u9) stable; urgency=medium
* The default PHP FPM socket permission has been changed from 0666
to 0660 to mitigate security vulnerability (CVE-2014-0185) in PHP
FPM that allowed any local user to run a PHP code under the active
user of FPM process via crafted FastCGI client.
The default Debian setup now correctly sets the listen.owner and
listen.group to www-data:www-data in default php-fpm.conf. If you
have more FPM instances or a webserver not running under www-data
user you need to adjust the configuration of FPM pools in
/etc/php5/fpm/pool.d/ so the accessing process has rights to
access the socket.
-- Ondřej Surý Mon, 12 May 2014 14:23:05 +0200
Petr Krčmář pracuje jako šéfredaktor serveru Root.cz. GNU/Linuxem a Unixem obecně se zabývá již více než deset let a věnuje se především jeho nasazení v počítačových sítích a bezpečnostní politice. Zde bloguje o Root.cz, Linuxu, internetu a světě kolem sebe.
Přečteno 112 290×
Přečteno 89 764×
Přečteno 73 160×
Přečteno 58 108×
Přečteno 54 434×