Hi André Laugks,
Daß der Apache selbst unter "root" gestartet werden muß, um sich an einen "niedrigen" Port zu binden, läßt sich über das httpd-Binary lösen (chown root und s-Bit - das ist dann die "Übernahme" einer getesteten Apache-Version in die "Produktion", die muß "root" pro Version einmal machen). Der Benutzer "apache" darf dann sehr wohl auch den produktiven Apache starten und stoppen, ohne dafür weitere Systemprivilegien zu besitzen.
Wo bekomme ich darüber nähere Infos?
Das ist UNIX-Basiswissen. "man chown" und "man chmod" sollten helfen.
Jedes Programm, das ein s-Bit für owner bzw. group gesetzt hat, wird mit der entsprechenden Berechtigung ausgeführt - der (privilegierte) Systemlader macht dabei intern ein "su" oder etwas Vergleichbares. (Man ist also nicht "wirklich" dieser Benutzer, sondern nur "temporär" - dies macht in gewisser Weise einen Unterschied, beim Apache ist das aber nicht relevant.)
Derjenige, der das Programm starten will, braucht dafür natürlich das entsprechende x-Bit. Also:
chown root httpd # --- setzt den owner der Datei auf "root"
chmod u+s httpd # --- setzt das s-Bit für "user" (welches der Besitzer dieser Datei ist)
chmod o+x httpd # --- setzt das x-bit für "others" (dadurch darf "apache" das Programm starten)
Der Punkt ist dabei, daß "chown" nur von "root" ausgeführt werden darf (das s-Bit dürfte auch "apache" setzen, um anderen Benutzern zu erlauben, das Programm unter der Berechtigung von "apache" zu starten). "root" darf also ein Programm so installieren, daß es von anderen Benutzern unter "root"-Berechtigung (oder einer beliebigen anderen Berechtigung, beispielsweise einer Projektkennung) ausgeführt werden kann.
Diese s-Bit-Methode ist allerdings nicht ungefährlich: Es gilt, sicherzustellen, daß das entsprechende Programm nicht dazu verwendet werden kann, eine Dialog-Shell zu öffnen oder sonst irgendwie gezielt Systemkommandos auszuführen (schon ein einziges privilegiert ausgeführtes Kommando reicht aus, eine permanente Systemlücke zu manifestieren, beispielsweise ein "chown" ...).
Es gibt also diverse Programme, die sich für diese Methode _nicht_ eignen.
Wenn Du nicht jeder Benutzerkennung, sondern nur bestimmten Kennungen erlauben willst, den Apache-Server zu starten, dann brauchst Du eine Gruppe, in der alle diese Kennungen enthalten sind, zudem muß das httpd-binary dieser Gruppe angehören, und Du setzt nur für die Gruppe das x-Bit auf die httpd-Datei, nicht aber für "others". Beispielsweise könnte der Benutzer "apache" in der Gruppe "apache" enthalten sein, und der Benutzer "laugks" ebenfalls ... ("chmod 4110 httpd" wäre die Kurznotation - ja, das sind vier Ziffern, nicht nur drei.)
Viele Grüße
Michael
T'Pol: I meant no insult.
V'Lar: Of course not. You're simply speaking your mind ... as you always have.