Apache wird als Root ausgeführt, statt als in httpd.conf angegebener Benutzer.

Apache wird als Root ausgeführt, statt als in httpd.conf angegebener Benutzer.

Ich versuche, WordPress das Hochladen von Dateien in den Ordner „wp-content“ zu ermöglichen, ohne die Berechtigungen für den Ordner auf 777 zu setzen. Allerdings habe ich dabei einige Schwierigkeiten.

Die für den Ordner „wp-content“ festgelegten Gruppen und Benutzer stimmen mit den Gruppen und Benutzern überein, die Apache laut httpd.conf verwenden soll. Wenn ich jedoch den folgenden Befehl ausführe, scheint es, dass Apache tatsächlich als Root ausgeführt wird und nicht als der in httpd.conf angegebene Benutzer.

httpd.conf-Konfiguration

Benutzer xxx
Gruppe yyy

Befehl ausführen, um zu ermitteln, als welcher Benutzer Apache ausgeführt wird

ps aux | grep httpd

Ausgabe des obigen Befehls

513 1294 0,4 ​​1,4 316420 54864 ? S 08:30 0:06 /usr/sbin/httpd

513 ist die richtige UID für Benutzer xxx, daher wird das richtig angezeigt. Ich kann jedoch immer noch keine Dateien in WordPress hochladen, ohne die Berechtigungen für den Ordner wp-content auf 777 zu setzen.

Kann mir jemand sagen, worum es hier geht?

Antwort1

Apache muss immer als Root gestartet werden, dann verwendet es Setuid, um zum Benutzerkontext des in httpd.conf angegebenen Benutzers zu wechseln.

Ohne Root (UID = 0) können Sie keinen Listening-Socket auf privilegierten Ports (unter 1024) erstellen.

Weitere Einzelheiten finden Sie in diesen Dokumenten:

Vom ersten Link:

# ps -ef | grep -i http | awk '{print $1}'
root
apache
apache
apache
apache
apache

verwandte Informationen