Frage Wie ändere ich den NGINX-Benutzer?


Ich habe ein PHP-Skript, das ein Verzeichnis erstellt und ein Bild an das Verzeichnis ausgibt. Das hat unter Apache gut funktioniert, aber wir haben kürzlich entschieden, zu NGINX zu wechseln, um unseren begrenzten RAM mehr zu nutzen. Ich verwende den Befehl PHP mkdir (), um das Verzeichnis zu erstellen:

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

Nach dem Wechsel zu NGINX bekomme ich folgende Warnung:

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

Ich habe bereits alle Berechtigungen der übergeordneten Verzeichnisse überprüft, daher habe ich festgestellt, dass ich wahrscheinlich den NGINX- oder PHP-FPM-Benutzer ändern muss, aber ich bin mir nicht sicher, wie ich das tun soll (ich musste nie einen Benutzer angeben Berechtigungen für APACHE). Ich kann nicht viele Informationen dazu finden. Jede Hilfe wäre großartig!

(Anmerkung: Abgesehen von dieser kleinen Unterbrechung war der Wechsel zu NGINX ziemlich nahtlos; ich benutze es zum ersten Mal und es dauerte buchstäblich nur etwa 10 Minuten, um mit NGINX zu arbeiten. Jetzt bügele ich nur die Knicke aus.)


25
2017-09-29 15:12


Ursprung


Wenn nginx von einem Paketmanager installiert wurde, ist es wahrscheinlich das Beste, einfach 'ps' zu verwenden, um zu sehen, welcher Benutzer nginx als läuft und den Besitzer des Verzeichnisses zu diesem Benutzer zu ändern. Normalerweise ist die Sicherheit von den Paketen ziemlich gut eingerichtet, ein veränderter Benutzer kann etwas anderes stören. - Joachim Isaksson
nginx.conf und www.conf standardmäßig IIRC. - PeeHaa
Wenn Sie fastcgi verwenden, überprüfen Sie, ob Sie die phpscripts verkürzen können. Dadurch können Sie verschiedene Websites unter ihrem jeweiligen Benutzer ausführen. Ich bin sicher, einige Setup-Anweisungen sind online verfügbar. - hakre


Antworten:


Führen Sie nginx & php-fpm als www: www

1. Nginx

Editiere nginx.conf und setze Nutzer zu www www;

Wenn der Master-Prozess als root ausgeführt wird, wird nginx   setuid () / setgid () zu USER / GROUP. Wenn GROUP nicht angegeben ist, dann nginx   verwendet denselben Namen wie USER. Standardmäßig ist es niemand Benutzer und niemand oder   nogroup group oder die --user = USER und --group = GROUP aus der   ./configure Skript.

2. PHP-FPM

Bearbeiten php-fpm.conf und setze Benutzer und Gruppe auf www.

Benutzer - Unix-Benutzer von Prozessen. Standard "www-Daten"

Gruppe - Unix-Gruppe von Prozessen. Standard "www-Daten"


48
2017-09-29 15:23



Okay, ich habe gerade nginx.conf geändert (es wurde auf ... eingestellt user www-data). Ich sehe jedoch nicht irgendein Benutzerdefiniert in php-fpm.conf. Sollte ich es nur mit der gleichen Syntax an die Spitze hinzufügen (user www www) - David
php-conf Syntax ist nicht die gleiche os nginx.conf. Finden [www] Teile und füge hinzu user=www in der nächsten Zeile und group=wwwim nächsten. - glavić
Beim Neustart von nginx ist folgender Fehler aufgetreten: Neustart von nginx: [emerg] getpwnam("www") failed in /etc/nginx/nginx.conf:1 nginx: configuration file /etc/nginx/nginx.conf test failed. - David
Dann können Sie entweder Nginx und php-fpm als Benutzer mit den entsprechenden Berechtigungen für die entsprechenden Verzeichnisse ausführen oder einen neuen Benutzer namens www erstellen, indem Sie "sudo useradd -g www www" ausführen. Bitte lassen Sie uns wissen, wenn Sie eine ausführlichere Erklärung benötigen. - Roman Prykhodchenko
@xorinzor: Nein, benutze was du hast: D - glavić


Im Ubuntu 14.04 die zu ändernde Datei Nutzer und Gruppe im PHP-FPM ist: /etc/php5/fpm/pool.d/www.conf. In dieser Datei ändern Sie diese Parameter:

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

19
2017-11-07 13:17



Dies gilt auch für Ubuntu 16.10. - Craimasjien
Dies gilt auch für Ubuntu 18.04 - siliconrockstar
Dies wäre eine sehr gute Ergänzung zur angenommenen Antwort. - اشکان نظری


Um deine zu beantworten aktuelle Frage ist es, nur das zu ändern user einreihen nginx.conf so:

user    [username];

Beispiel:

user    www-data;

Der bevorzugte Benutzer, für den Nginx ausgeführt werden soll, unterscheidet sich tatsächlich zwischen den Betriebssystemen. Manchmal soll Nginx als laufen www-data. Andere Male soll es eigentlich so laufen nobody.

Auf einigen Betriebssystemen (wie Windows) ist es nicht einmal wichtig, und die user einreihen nginx.conf kann auskommentiert oder ganz ausgeschlossen werden.


5
2017-11-07 13:25



Wenn ich die Benutzer-Anweisung in den Nginx-Dienst einfüge und den Dienst neu starte, wird ein Fehler ausgegeben, der besagt, dass der "Benutzer" eine unknown-Anweisung ist - ist es also ok, es einfach wegzulassen? - JoeTidee
Ja, abhängig von Betriebssystem und / oder Nginx benötigen einige Versionen keine explizite Benutzeranweisung. - rubynorails
Ich musste die Benutzeranweisung ganz oben in meiner Nginx-Konfigurationsdatei platzieren, damit sie erkannt wird. - JoeTidee