configuração nginx como um usuário, mas whoami relata um usuário diferente

1

Eu tenho nginx configurado em uma máquina de teste, hospedando o Wordpress. Eu estava tentando descobrir alguns problemas de permissões e encontrei algo que não consigo entender.

Embora em todos os lugares que eu saiba, estou dizendo que ele seja executado como o usuário 'nginx', whoami reporta o 'apache'.

  • No arquivo nginx.conf, eu tenho a configuração nginx do usuário.
  • Se eu executar ps aux | grep [n]ginx , o processo mestre é executado como raiz, o trabalhador está sendo executado como nginx.
  • Meu arquivo de configuração do site não tem nada que mencione o apache
  • Eu tenho <?php echo(exec("whoami")); ?> em uma página php e ela responde como 'apache'
  • As permissões estão vinculadas a essa conta do Apache. Como em, eu tenho problemas de permissões se public_html pasta está definida para nginx, mas funciona bem se o apache.

Não consigo encontrar nenhum outro lugar onde esteja vendo essa conta do Apache. Eu ainda gostaria de removê-lo, mas userdel diz que o usuário está logado quando eu tento isso.

    
por jmlumpkin 10.09.2012 / 18:14

2 respostas

3

Em uma configuração Nginx, você provavelmente usa o PHP-FPM para interpretar scripts PHP. O PHP-FPM possui sua própria configuração, que define pools. Cada pool pode ser executado como seu próprio usuário. Em essência: O Nginx precisa ser capaz de ler arquivos (estáticos) que você serve diretamente dele (e atravessar (ou seja, x) as permissões no diretório) O PHP-FPM (o conjunto relevante) precisa ter acesso de leitura aos arquivos e gravar o acesso à pasta (ou a quaisquer arquivos que você queira modificar) (e passar permissões).

A configuração do PHP-FPM geralmente está localizada em /etc/php-fpm.conf e /etc/php-fpm.d / *. conf

A parte relevante de uma configuração PHP-FPM pode se parecer com o seguinte:

[pool_name]

listen = 127.0.0.1:9000

user = apache
group = apache

Verifique se o usuário está executando o PHP-FPM com: ps -ef | grep php-fpm (você pode ter várias instâncias do php-fpm, possivelmente com mais de um usuário, se tiver vários pools).

(Como um aparte, se você olhar em sua configuração Nginx, provavelmente encontrará uma referência ao manipulador FastCGI como: fastcgi_pass 127.0.0.1:9000; . O endereço e a porta especificados aqui precisam corresponder ao endereço e à porta do pool usuário / grupo que você está modificando).

Além disso, apenas para fins de diagnóstico, em vez de olhar para o usuário em que o nginx estava sendo executado, você pode ter pesquisado qual programa estava sendo executado como o usuário apache (por exemplo, ps -ef | grep apache ).

    
por 10.09.2012 / 18:28
2

Isso depende de como seus scripts PHP são executados, eles estão sendo executados em um servidor apache e nginx redireciona solicitações php para ele ou estão sendo executados por um processo php-fpm / FastCGI em execução como apache. Você precisa verificar isso e fazê-los funcionar como nginx se é isso que você precisa.
Se o php-fpm está sendo usado, você precisa encontrar a configuração correspondente em /etc/php-fpm.d/, como /etc/php-fpm.d/somesite.conf e certificar-se de que as próximas linhas estejam como abaixo:

user = nginx
group = nginx

Em seguida, reinicie sua instalação do php-fpm emitindo:

service php-fpm restart

ou

/etc/init.d/php-fpm restart
    
por 10.09.2012 / 18:24