O soquete provavelmente não é legível e escrito em grupo.
-edit- o que é ainda mais curioso é se eu chmod 777 /var/run/php-fastcgi/php-fastcgi.socket
isto funciona. Se não for www-data, php-www (nem root), então qual usuário está tentando acessar o socket: |
-edit2- Eu adicionei chown www-data:$FASTCGI_GROUP $SOCKET
ao final do script abaixo (que está logo após spawn-fcgi
) e isso resolve o problema, mas estou confuso, www-data está no grupo php-www. Por que deve ser proprietário? Eu não mudei o FASTCGI_USER de volta para o www-data bc, ele derrotaria o propósito (ele permitiria que os arquivos PHP acessassem todos os meus arquivos como www-data, o que eu não quero)
Essencialmente, o que eu queria fazer é que o processo PHP não seja www-data, então se ele for comprometido, seu dano será limitado aos poucos sites PHP que eu tenho. O que fiz foi criar o usuário php-www e adicionar o seu grupo ao www-data. Quando eu logar como www-data eu posso acessar tudo o que for php-www, mas o php-www não pode acessar nada além dos meus sites PHP. perfeito.
Tenho o php + nginx em execução. Mas como mudar isso me dá um problema. Eu vejo a menção de www-data em um script init.d que altera a propriedade de uma pasta. Está tudo bem e eu mudei para php-www. Isso não é um problema.
Qual é o problema é o script de desova.
#!/bin/bash
FASTCGI_USER=php-www
FASTCGI_GROUP=php-www
SOCKET=/var/run/php-fastcgi/php-fastcgi.socket
PIDFILE=/var/run/php-fastcgi/php-fastcgi.pid
CHILDREN=6
PHP5=/usr/bin/php5-cgi
/usr/bin/spawn-fcgi -s $SOCKET -P $PIDFILE -C $CHILDREN -u $FASTCGI_USER -g $FASTCGI_GROUP -f $PHP5
as linhas de usuário / grupo usam para dizer www-data, mas agora eu mudei para php-www.
Eu iniciei o php-fastcgi e o nginx. Quando visito meu site, recebo um erro de gateway 502 incorreto. Quando eu olho nos logs nginx eu vejo essa linha
connect() to unix:/var/run/php-fastcgi/php-fastcgi.socket failed (13: Permission denied) while connecting to upstream
Permissão negada!?! porque!?! O www-data tem o grupo php-www e stat
que a pasta e o socket mostram o dono e o grupo php-www. Eu posso acessar o arquivo PHP com bot php-www e www-data. Por que recebo um erro de permissão? e o que estou fazendo errado?
caso você queira ver meu processo
# ps aux | egrep "php|www"
mostra
www-data 548 0.0 0.1 1908 492 ? Ss 18:08 0:00 /usr/sbin/fcgiwrap
www-data 586 0.0 0.1 1908 488 ? Ss 18:08 0:00 /usr/sbin/fcgiwrap
php-www 1611 0.0 1.9 19312 5020 ? Ss 18:20 0:00 /usr/bin/php5-cgi
php-www 1612 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1613 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1614 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1615 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1616 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
php-www 1617 0.0 0.7 19312 1856 ? S 18:20 0:00 /usr/bin/php5-cgi
www-data 1776 0.0 0.6 5428 1684 ? S 18:27 0:00 nginx: worker process
php-www 1967 0.0 1.9 19312 5020 ? Ss 18:40 0:00 /usr/bin/php5-cgi
php-www 1968 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1969 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1970 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1971 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1972 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
php-www 1973 0.0 0.7 19312 1856 ? S 18:40 0:00 /usr/bin/php5-cgi
root 2110 0.0 0.2 3300 736 pts/1 S+ 18:55 0:00 egrep php|www
Em vez de alterar as permissões de soquete, você também pode editar a configuração do nginx e alterar user www-data
para seu próprio nome de usuário
Toque no arquivo de soquete CGI do PHP (crie um arquivo vazio). Altere suas permissões para 777 e inicie php-fastcgi
adicione esta linha aos arquivos de configuração do seu pool fpm, em cada sessão de usuário que você irá adicionar.
listen.mode = 0666
como este /opt/php-5.6.3/etc/fpm.d/user1.conf
[user1]
listen.owner = user1
listen.group = user1
user = user1
group = user1
listen = /opt/php-5.6.3/sockets/user1.sock
listen.mode = 0666
Isso torna seu soquete legível. Alterar a permissão de soquete por chmod é uma solução temporária. porque depois de reiniciar o serviço, ele muda para seu estado anterior.
Mude para o que você precisar. Como 0660 para adicionar permissão apenas para grupos e proprietário. mas 0666 estaria bem.
Tags permissions nginx fastcgi