por que o processo nginx é executado com o usuário ninguém

16

Eu estava tentando configurar o nginx para rodar com um dos meus aplicativos rails. Ao analisar a saída ps -e | grep nginx, percebi que os processos do operador do nginx são executados com o usuário ninguém.

Existe uma razão pela qual eles não estão sendo executados como www-data?

mu 無
fonte
11
Parece uma pergunta razoável que levou a uma resposta informativa - por que o questionador foi questionado?
não é um patch

Respostas:

25

Existe uma razão pela qual eles não estão sendo executados como www-data?

Sim. Você provavelmente não especificou o usuário na sua configuração nginx .

Diretiva do usuário: http://nginx.org/en/docs/ngx_core_module.html#user

syntax: user user [group];
default:    
user nobody nobody;
context:    main

Como executar o nginx como um usuário específico?

Você pode especificar o usuário / grupo que o nginx executa como, na configuração do nginx.

Este é um exemplo de como pode ser uma configuração do nginx (observe a diretiva do usuário):

pid                 /path/to/nginx.pid;
user                www-data www-data;
worker_processes    1;

events {
   worker_connections  1024; # usually 1024 is a good default
}

http {
   # more code goes here
}

Simplesmente atualize sua configuração e, em seguida, recarregue ou reinicie o nginx e você deve estar pronto.

Claro que você deve escolher o usuário que funciona melhor para o seu sistema, no Debian / Ubuntu há um www-data por padrão, então essa é uma escolha sensata.

Drew Khoury
fonte
www-data é, no meu entender, o proprietário / grupo de / var / www e não é uma boa ideia usar o mesmo usuário para o processo nginx ( stackoverflow.com/questions/22336186/… ) Uma nova instalação do nginx via apt no debian usa o usuário nginx. Talvez você queira alterar o exemplo para usar o usuário nginx.
Binaryanomaly
4

O processo mestre é executado como root e o nginx irá setuid()/ setgid()para USER/ GROUP. Se GROUPnão for especificado, o nginx usa o mesmo nome que USER.

Por padrão, ele é nobodyusuário e nobodyou nogroup grupo ou do --user=USERe --group=GROUPdo ./configurescript.

Você pode editar o nginx.conf e set user to www www;

ankso
fonte