pourquoi le processus nginx s'exécute avec l'utilisateur personne

16

J'essayais de configurer nginx pour qu'il s'exécute avec l'une de mes applications rails, lorsque ps -e | grep nginxj'ai regardé la sortie , j'ai réalisé que les processus de travail nginx s'exécutaient avec l'utilisateur nobody.

Y a-t-il une raison pour laquelle ils ne fonctionnent pas en tant que www-data?

mu 無
la source
1
Semble une question raisonnable qui a conduit à une réponse informative - pourquoi l'interrogateur a-t-il marqué un point?
pas un patch du

Réponses:

25

Y a-t-il une raison pour laquelle ils ne fonctionnent pas en tant que www-data?

Oui. Vous n'avez probablement pas spécifié l'utilisateur dans votre configuration nginx .

Directive utilisateur: http://nginx.org/en/docs/ngx_core_module.html#user

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

Comment exécuter nginx en tant qu'utilisateur particulier?

Vous pouvez spécifier l'utilisateur / groupe sous lequel nginx s'exécute, dans la configuration nginx.

Voici un exemple de ce à quoi pourrait ressembler une configuration nginx (notez la directive utilisateur):

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
}

Mettez simplement à jour votre configuration, puis rechargez ou redémarrez nginx et vous devriez être prêt à partir.

Bien sûr, vous devez choisir l'utilisateur qui fonctionne le mieux pour votre système, dans Debian / Ubuntu, il y a un www-data par défaut, c'est donc un choix judicieux.

Drew Khoury
la source
www-data est à ma connaissance plutôt le propriétaire / groupe de / var / www et ce n'est pas une bonne idée d'utiliser le même utilisateur pour le processus nginx ( stackoverflow.com/questions/22336186/… ) Une nouvelle installation de nginx via apt sur debian utilise l'utilisateur nginx. Vous voudrez peut-être changer l'exemple en utilisant l'utilisateur nginx.
anomalie binaire
4

Le processus maître est exécuté en tant que root, puis nginx sera setuid()/ setgid()vers USER/ GROUP. Si GROUPn'est pas spécifié, alors nginx utilise le même nom que USER.

Par défaut, il s'agit du groupe d' nobodyutilisateurs et / nobodyou de nogroup ou du --user=USERet --group=GROUPdu ./configurescript.

Vous pouvez éditer nginx.conf et set user to www www;

ankso
la source