Wenn ich den ps -efH
Befehl ausführe, um den gesamten Prozess aufzulisten, sehe ich, dass Apache als ausgeführt wird root
und dass anscheinend Unterprozesse als ausgeführt werden www-data
. Hier ist der Auszug:
root 30117 1 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30119 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30120 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 30121 30117 0 09:10 ? 00:00:00 /usr/sbin/apache2 -k start
Kann ich dafür sorgen, dass Apache und alle Unterprozesse als unterschiedliche Benutzer ausgeführt werden apache2d:apache2d
? Wenn das so ist, wie? Ich habe irgendwo gelesen, dass die Einstellungen dafür in zu finden sind, /etc/apache2/httpd.conf
aber diese Datei scheint leer zu sein? Kann dies erreicht werden, indem der Eigentümer und die Gruppe des /etc/init.d/apache2
Skripts geändert werden und dann das Flag setuid darauf gesetzt wird?
quelle
@bahamat erklärt es ziemlich gut, aber ich werde ein wenig mehr Details hinzufügen.
Im normalen Betrieb führt der Apache-Prozess, der sich im Besitz von Root befindet, keine anderen tatsächlichen Vorgänge aus, als Port 80 abzuhören und eingehende Verbindungen an seine (sicher nicht privilegierten, als
www-data
Benutzer) Kinder weiterzuleiten .Der Speicherort der Masterkonfigurationsdatei hängt von den Kompilierungsoptionen ab und variiert je nach Distribution
/etc/apache2/apache2.conf
.Wenn Sie ein Mehrbenutzer-Webhosting-System einrichten, sollten Sie sich auch mit SuExec und fcgid befassen, damit der Apache-Prozess jedes einzelnen Webhosting-Benutzers als dieser Benutzer ausgeführt wird Benutzer sind nicht betroffen.
quelle
Zumindest in Ubuntu sind die Einstellungen dafür in
/etc/apache2/envvars
. Optimieren Sie diese, starten Sie Apache neu und Sie können loslegen.quelle
Schauen Sie sich auch Apache2 ITK MPM an .
Es gabelt einen Apache-Thread mit dem zugewiesenen
uid
/gid
, das können Sie weiterhin verwendenmod_php
. Nicht mehrchmod
/chown
etc.quelle
mpm_itk
ist eine signifikante Verbesserung gegenüber suexec / fcgidMac OS X:
Was bei mir funktioniert hat, ist die Apache-Konfigurationsdatei:
In dieser Datei habe ich nach Benutzer oder Gruppe gesucht
und stieß auf:
Ich habe es in den Benutzer / die Gruppe geändert, den / die ich benötigt habe (in meinem Fall in den Benutzer / die Gruppe, der / die der Eigentümer meiner Web-App-Dateien ist, die Sie sehen können. Und das können Sie mit dem einfachen 'ls -l' überprüfen. Befehl)
quelle