Warum hat Apache damit begonnen, einen einzelnen Prozess als Root und einen anderen als Root und den Benutzer wwwdata auszuführen?


8

Ich verwende Apache Worker-MPM, PHP 5.3.2 und FCGID.

Apache läuft besser als zuvor, aber ich habe festgestellt, dass ein Apache-Prozess als root und ein zweiter Prozess sowohl als root als auch als wwwdata ausgeführt werden. Der Rest der Prozesse wird als wwwdata ausgeführt.

Ist jemand schon darauf gestoßen und ist es sicher?


Wie läuft einer der Apache-Prozesse als root und wwwdata mit zwei Benutzern ab? Der Benutzer, unter dem es ausgeführt wird, wird in der Hauptkonfigurationsdatei festgelegt. Ich würde Ihre Serverzugriffsprotokolle (nicht Apachen) überprüfen. Überprüfen Sie die Zugriffs- / Benutzer- / Anwendungsprotokolle in / var / log und prüfen Sie, ob Sie etwas Verdächtiges sehen
Anagio

Keiner der Protokolle bietet etwas Ungewöhnliches. Ich habe keine Ahnung, wie es so läuft.
Flink

@Anagio " Wie läuft einer der Apache-Prozesse als root und wwwdata mit zwei Benutzern? " Ich denke nicht, dass es sich um einen Prozess handelt, der als zwei unterschiedliche Benutzer ausgeführt wird (das würde nicht funktionieren), sondern einfach um zwei Prozesse, die als unterschiedliche Benutzer ausgeführt werden . Es ist normal.
Bruno

@Bruno In der Prozessliste sind viele Apache-Prozesse aufgeführt. Es gibt einen, dessen Benutzer root ist, und einen, dessen Benutzer "root, wwwdata" ist. So sieht es aus. Ich kann mich nicht erinnern, jemals zwei so aufgeführte Benutzernamen gesehen zu haben.
Flink

@flink, mit welchem ​​Befehl listen Sie die Prozesse auf?
Bruno

Antworten:


9

Apache Httpd startet als ein Prozess, der ausgeführt wird root, um Ports <1024 abhören zu können (80 für HTTP und 443 für HTTPS). Normale Benutzer können das nicht.

Darüber hinaus können einige Konfigurationsdateien während des Startvorgangs nur von root gelesen werden. Beispielsweise sollte Ihr Apache-Benutzer (z. B. www-data) Ihre private Schlüsseldatei nicht lesen können müssen, wenn Sie SSL konfiguriert haben.

Es ist eine gute Sache, nicht alles als Root auszuführen: Auf diese Weise kann ein Fehler oder ein kompromittierter Dienst dem System nicht so viel Schaden zufügen wie beim Ausführen als Root.

BEARBEITEN:

(Ich habe nur angenommen, www-dataanstatt wwwdata, aber es spielt keine Rolle, es wird als der Benutzer ausgeführt, für den Sie es festgelegt haben.)

Keiner der Protokolle bietet etwas Ungewöhnliches. Ich habe keine Ahnung, wie es so läuft.

Es läuft einfach so: Es startet einen Prozess als root und gibt dann andere Benutzer als den von Ihnen ausgewählten Benutzer aus.

Wenn Sie die Root-Prozess-ID erhalten (z. B. mit ps auwx | grep apache2oder grep httpdabhängig von der Verteilung) und dann ausführen pstree -p -u THE_PROCESS_ID, sollten Sie die Hierarchie klar sehen. Der übergeordnete Prozess sollte immer permanent ausgeführt werden (andernfalls würden Sie auch die untergeordneten Prozesse beenden).

Siehe die UserDokumentation (Apache MPM Common Directives) :

Wenn Sie den Server als Root starten, wird der übergeordnete Prozess normalerweise weiterhin als Root ausgeführt.


1
Die UID und GID von www-data liegen unter 1000, was von suexec / fcgid nicht erlaubt ist. Deshalb habe ich einen neuen Benutzer erstellt, wwwdata mit einer höheren UID und GID, um alles auszuführen.
Flink

Das waren einige großartige Informationen. Ich brauche eine ernsthafte Kommandozeilenstudie. Vielen Dank!
Flink
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.