Ainda confuso com permissões - linux, nginx, php-fpm

5

Eu li a resposta canônica em Quais permissões meus arquivos / pastas do site devem ter em um servidor Linux?

No entanto, ainda estou preso. Minha configuração é:

  • Um usuário desenvolvedor 'ade' que possui os diretórios e arquivos que compõem um site
  • O servidor é nginx com php-fpm por meio de um soquete: fastcgi_pass unix:/tmp/php5-fpm.sock;
  • O site contém um diretório de uploads que deve ser gravável pelo PHP quando executado nesta configuração
  • Eu não quero definir permissões para o 777, obviamente

Eu criei um grupo webadmin e adicionei o 'ade' e o nginx a ele:

$ groups ade
ade : ade webadmin

$ groups nginx
nginx : nginx webadmin

Eu defini o proprietário de tudo no site para mim e para o grupo webadmin: chown ade:webadmin *

... como você pode ver:

drwxrwxr-x 2 ade webadmin 4096 Jul  3 13:58 logs
drwxrwxr-x 5 ade webadmin 4096 Jul  4 08:35 public
drwxrwxr-x 4 ade webadmin 4096 Jul  3 16:18 system
drwxrwsr-x 2 ade webadmin 4096 Jul  9 16:13 uploads

No entanto, apesar das permissões de uploads serem 775 (rwx para usuário e grupo), o nginx e o php não podem gravar na pasta. Somente se eu configurá-lo para o 777, ele poderá enviar imagens para ele.

Eu vi o conselho sobre o uso de chmod u+w na resposta canônica acima, mas não entendo por que isso é necessário.

    
por Ade 09.07.2013 / 18:21

1 resposta

3

Resolvido:

O php-fpm não roda como usuário nginx, é claro. Pode ser configurado (no CentOS) no arquivo /etc/php-fpm.d/www.conf . Eu editei sua configuração adicionando a linha 45:

44  ;group = nobody
45  group = webadmin

Em seguida, reiniciei:

sudo /etc/init.d/php-fpm restart
    
por 09.07.2013 / 19:36