68 votes

Comment changer l'utilisateur de NGINX ?

J'ai un script PHP script qui crée un répertoire et produit une image dans ce répertoire. Cela fonctionnait très bien sous Apache, mais nous avons récemment décidé de passer à NGINX pour mieux utiliser notre RAM limitée. J'utilise la commande PHP mkdir() pour créer le répertoire :

mkdir(dirname($path['image']['server']), 0755, true);

Après le passage à NGINX, je reçois l'avertissement suivant :

Warning: mkdir(): Permission denied in ...

J'ai déjà vérifié toutes les permissions des répertoires parents, j'ai donc déterminé que je devais probablement changer l'utilisateur de NGINX ou de PHP-FPM, mais je ne sais pas trop comment faire (je n'ai jamais eu à spécifier les permissions de l'utilisateur pour APACHE). Je n'arrive pas à trouver beaucoup d'informations à ce sujet. Toute aide serait la bienvenue !

(Note : A part ce petit problème, le passage à NGINX s'est fait en douceur ; je l'utilise pour la première fois et il ne m'a fallu qu'une dizaine de minutes pour être opérationnel avec NGINX. Il ne me reste plus qu'à régler les problèmes).

94voto

plinehan Points 445

Lancer nginx et php-fpm en tant que www:www

1. Nginx

Modifiez le fichier nginx.conf et définissez utilisateur a www www; :

user www www;

Si le processus maître est exécuté en tant que root, alors nginx va setuid()/setgid() à USER/GROUP. Si GROUP n'est pas spécifié, alors nginx utilise le même nom que USER. Par défaut, il s'agit de l'utilisateur nobody et du groupe nobody ou nogroup ou les paramètres --user=USER et --group=GROUP de la commande ./configure script.

2. PHP-FPM

Editer php-fpm.conf et définir l'utilisateur et le groupe comme suit www :

[www]
user=www
group=www

user - Utilisateur Unix des processus. Valeur par défaut : "www-data"

group - Groupe de processus Unix. Valeur par défaut : "www-data"

38voto

Carlos A. Cabrera Points 449

En Ubuntu 14.04 le fichier à modifier utilisateur y groupe in PHP-FPM est : /etc/php5/fpm/pool.d/www.conf . Dans ce fichier, modifiez ces paramètres :

user = www
group = www
listen.owner = www
listen.group = www

9voto

rubynorails Points 339

Pour répondre à votre question réelle est de modifier simplement le user ligne dans nginx.conf comme suit :

user    [username];

user    www-data;

L'utilisateur préféré pour l'exécution de Nginx diffère en fait selon les systèmes d'exploitation. Parfois, Nginx est censé fonctionner en tant que www-data . D'autres fois, il est censé fonctionner en tant que nobody .

Sur certains systèmes d'exploitation (tels que Windows), cela n'a pas d'importance, et l'option user ligne dans nginx.conf peut être commentée ou entièrement exclue.

4voto

AboElnouR Points 131

La solution suivante a fonctionné en changeant l'utilisateur web en utilisant Ubuntu 18.04 LTS , nginx 1.14 y php7.2-fpm .

1. Nginx

Editer /etc/nginx/nginx.conf et définir l'utilisateur comme webuser;

user webuser;

2. PHP-FPM

Editer /etc/php/7.2/fpm/pool.d/www.conf .

user = webuser
group = webuser
...
listen.owner = webuser
listen.group = webuser

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X