Frage Benutzer pro virtuellem Host in Nginx


Ist es in Nginx möglich, verschiedene Benutzer pro virtuellem Host zu konfigurieren?

So etwas wie

 server {
     user myprojectuser myprojectgroup;
     ...
 }

26
2018-03-18 01:12


Ursprung




Antworten:


Nein, weil alle Server-Zeilengruppen in einer Nginx-Konfiguration aus derselben Gruppe von Worker-Prozessen stammen. Außerdem sind Sie aus Sicherheitsgründen besser um es so zu betreiben, da der Inhalt vom Webserver automatisch nicht überschrieben werden kann chmod -R 0777), so dass bei einer Sicherheitslücke in nginx kein Inhalt gefährdet ist.


8
2018-03-18 01:16



Es gibt also keine Möglichkeit, Benutzerdateien vor anderen Benutzern zu verbergen. Alle Inhalte des Nutzers sollten von den www-Daten lesbar sein? - Alex Netkachov
Wenn die Dateien für www-data zugänglich gemacht werden sollen (oder für welchen Benutzer der Webserver auch läuft), müssen die Dateien nicht auf andere Benutzer im System zugreifen können. - womble♦
Geben Sie dem Dokument root eine Gruppe von www-data und Dauerwellen 0710 Wenn Sie den vhost einrichten (da dies root benötigt, um nginx zu konfigurieren, ist es kein Problem, dass Ihre Automatisierung auch die notwendigen Berechtigungen setzt). Dann muss der Inhalt der Docroot einfach sein o+x für Verzeichnisse und o+r für Dateien. - womble♦
Vorsicht: Wenn ein PHP-Skript (oder ein cgi-bin-Prozess) unter läuft www-dataJeder Benutzer, der ein PHP-Skript oder einen cgi-bin-Prozess bedienen kann, kann auf jede Datei zugreifen, auf die der Benutzer zugreifen kann www-data Nutzer. Dies scheint für jeden, der Datenbankkennwörter speichert, nicht offensichtlich zu sein config.php.inc oder ähnlich auf einem freigegebenen Rechner. - Ivan Vučica
@Ricalsin Denken Sie daran, dass UNIX ein Mehrbenutzerbetriebssystem ist und Server mehr als einen Benutzer haben können. Zum Beispiel, peter und john. Sie hosten ihre Webseiten in ~/public_html. Ohne einen anderen Ansatz, der von keinem der oben genannten Personen erwähnt wurde, hat ein .php-Skript die gleichen Berechtigungen wie der Webserver, unter dem es ausgeführt wird www-data. Dies bedeutet, dass es genau wie der Webserver und der PHP-Interpreter jedes andere .php-Skript lesen kann. - Ivan Vučica


In Erwiderung auf Iwans obigen Kommentar, der auf das OP anwendbar scheint. Zwei Dinge:

  1. Das Anwendungsdokument root wäre etwas wie /blah/peterWeb/html und /blah/johnWeb/html. Sowohl NGINX als auch Apache2 erlaubten es nicht, das andere Verzeichnis zu durchsuchen oder zu betreiben, selbst wenn beide WWW-Daten als Gruppe ausführen.

  2. Wenn jeder Verzeichnisbaum unter seiner eigenen Benutzerberechtigung platziert würde, würde jeder Benutzer sich an ein UNIX-System anhängen / anmelden und seine Verzeichnisse für jeden privat halten - einfach nicht jeden Benutzer in die www-Datengruppe aufnehmen. Wenn Sie einverstanden sind, dann Ihr Satz:

    Jeder Benutzer, der ein PHP-Skript oder einen cgi-bin-Prozess bedienen kann, kann darauf zugreifen   jede Datei, auf die der Benutzer www-data zugreifen kann.

    könnte genauer geschrieben werden als:

    Jeder Benutzer, den Sie in die gleiche Gruppe wie den Apache / Nginx-Server (www-data) stellen   kann dann tun, was sie wollen (einschließlich eines PHP-Skripts) in jeder Datei, die ist   zugänglich (was im Wesentlichen alles auf einem Webserver wäre).

EDIT 1: Ich habe mich mit einigen Problemen mit dem Server-Admin beschäftigt. Ich wusste nicht, wie genau Ivans Informationen waren! Wenn Sie beabsichtigen, Benutzern die Möglichkeit zu geben, Skripts auf einer freigegebenen Hostinganordnung hochzuladen und auszuführen, sollten Sie darauf achten. Hier ist ein Ansatz. Hut Tipp an Ivan, um sicherzustellen, dass ich diese Schwachstelle verstanden habe.


5
2018-06-04 19:27



Nein, du verpasst es. PHP-Skripte werden, wenn sie im Apache-Prozess (oder einem anderen Webserver) ausgeführt werden, unter den Privilegien des Hosting-Prozesses ausgeführt. Auf einer großen Anzahl von naiven Setups ist dieser Benutzer www-data. Wenn Johnny ein Skript erstellen kann und es unter ausgeführt wird www-data (Was bei naiven Setups möglich ist), dann kann Johnnys Skript Peters Skripte lesen und sie an Johnny zurücksenden. Das hat nichts mit Gruppen zu tun. Die richtige Lösung ist suPHP (wenn naiv eingerichtet, schlechter, als schlecht geschriebener Code gefährdet dann alle Dateien dieses Benutzers) oder ein Gefängnis oder dedizierter zusätzlicher Web-Benutzer pro Benutzer. - Ivan Vučica
(Auch das Hinzufügen einer Antwort anstelle eines Kommentars ist ein Missbrauch von StackOverflow-artigen Seiten, impressum, dass Sie tatsächlich eine Antwort geben. Bitte vermeiden Sie das.) - Ivan Vučica
@ IvanVučica Aktualisiert und hinzugefügt einen hilfreichen Link, der Ihren Rat unterstützt. Vielen Dank. - Ricalsin
Upvoting wegen Link. (Vielen Dank!) - Ivan Vučica