erro de permissão com php / nginx e não usando www-data

0

-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
    
por Jeff Schaller 29.09.2011 / 03:57

4 respostas

6

O soquete provavelmente não é legível e escrito em grupo.

    
por 11.06.2012 / 06:44
2

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

    
por 17.07.2012 / 10:50
-1

Toque no arquivo de soquete CGI do PHP (crie um arquivo vazio). Altere suas permissões para 777 e inicie php-fastcgi

    
por 18.12.2012 / 14:09
-1

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.

    
por 30.11.2014 / 04:53