Was ist der WWW-Datennutzer?

Antworten:

36

Zur Sicherheit.

Die Dateien können nicht weltweit beschrieben werden. Sie sind auf den Eigentümer der zu schreibenden Dateien beschränkt.

Der Webserver muss unter einem bestimmten Benutzer ausgeführt werden. Dieser Benutzer muss existieren.

Wenn es unter root ausgeführt würde, müssten alle Dateien für root zugänglich sein und der Benutzer müsste root sein, um auf die Dateien zugreifen zu können. Mit root als Eigentümer hätte ein kompromittierter Webserver Zugriff auf Ihr gesamtes System. Durch die Angabe einer bestimmten ID hätte ein kompromittierter Webserver nur vollen Zugriff auf seine Dateien und nicht auf den gesamten Server.

Wenn Sie sich dafür entscheiden, es unter einer anderen Benutzer-ID auszuführen, muss dieser Benutzer der effektive Eigentümer der Dateien sein, um die richtigen Berechtigungen zu erhalten. Es kann verwirrend sein, persönlichen Besitz von systemweiten Dateien für Ihr persönliches Konto zu haben.

Das Erstellen eines bestimmten Benutzers erleichtert das Erkennen der Dateien und das Erkennen der ID chownfür neue Dateien und Ordner, die der Site hinzugefügt wurden.

Die Benutzer-ID oder der Name des Besitzers spielt keine Rolle. Was auch immer ausgewählt oder entschieden wird, muss in den Konfigurationsdateien des Webservers konfiguriert werden.

Standardmäßig befindet sich die Konfiguration des Besitzers www-datain der Ubuntu-Konfiguration von Apache2. Da dies die Standardkonfiguration ist, wissen Sie bequem, welche Eigentumsrechte für Ihre Webdateien erforderlich sind. Wenn Sie es ändern, müssten Sie die Dateien auf Ihrer Site entsprechend ändern.

Ich führe Nginx nicht aus , aber da es sich im Ubuntu-Repository befindet, bin ich sicher, dass es mit der www-dataKonfiguration als Standard getestet wurde .

LD James
quelle
2
Das ist großartig, danke, dass Sie versucht haben, auch das globale Bild zu erklären.
user61629
1
Übrigens, was ist eine "spezifische ID"?
user61629
1
Es ist www-data. Aus diesem Grund haben sie Sie wie in Ihrer Frage gebeten, die Benutzer-ID und die Gruppen-ID zu erstellen, wenn sie nicht vorhanden sind. Die Apache2-Installation erstellt den Benutzer automatisch. Bei Nqinx bin ich mir nicht sicher . Sie können prüfen, ob es existiert mit: iid -u www-data&&id -g www-data. Wenn es existiert, wird die ID-Nummer des Benutzers und der Gruppe angezeigt. Standardmäßig sind die Benutzer- und Gruppennummern unter Ubuntu 33.
LD James
Das Eingeben www-dataals Eigentümer kann auch ein Sicherheitsrisiko darstellen, wie in der base-passwdDokumentation erwähnt (siehe @ murus Antwort), da Eigentümer in der Regel über Lese- / Schreibzugriff auf alle Web-Serving-Inhalte verfügen. Sie können den Schreibzugriff auf den www-dataEigentümer entfernen oder einen anderen Eigentümer verwenden. www-dataAuf jeden Fall ist Lesezugriff auf alle zu übermittelnden Daten erforderlich. Wenn Sie jedoch nur die für jede Datei und jedes Verzeichnis erforderlichen Berechtigungen erteilen, sind Sie sicherer.
Yuval
18

www-dataist der Benutzer, den Webserver unter Ubuntu (z. B. Apache, nginx) standardmäßig für den normalen Betrieb verwenden. Der Webserver-Prozess kann auf jede Datei zugreifen, auf die zugegriffen werden www-datakann. Es hat keine andere Bedeutung.

Aus der base-passwdDokumentation ( /usr/share/doc/base-passwd/users-and-groups.txt.gz):

Einige Webserver werden als WWW-Daten ausgeführt. Der Webinhalt sollte nicht im Besitz dieses Benutzers sein, da sonst ein kompromittierter Webserver eine Website neu schreiben kann. Von Webservern geschriebene Daten gehören www-data.

muru
quelle
3
außer der diskussion, warum man www-datenzugriff nicht über webroot-dateien gewähren soll;)
kitingChris
1
Kann ich fragen, auf welche Dienste ein Webserver zugreifen muss, wenn er eine Seite bereitstellt, um dies für mich konkreter zu machen?
user61629
2
@ user61629 services? Der Webserver selbst ist nach üblichen Definitionen ein Dienst.
Muru
1
@kitingChris ja, ich habe gerade die base-passwdDokumente dafür
ausgegraben
1
www-dataist der Benutzer (und auch die Gruppe), mit dem der Dienst httpd (apache) auf Ihrem System agiert .
kitingChris