![]() |
ubuntu: wie kann man prozesse bei linux-start nicht als root starten?
bin bzgl. linux noch nicht wirklich versiert und bin beim arbeiten mit ubuntu auf ein paar fragen bzgl. dem start von diensten beim OS-start gestoßen.
es ist ja bekanntlich keine gute idee, bestimmte services wie z.b. einen webserver als root laufen zu lassen, weil im falle eines erfolgreichen exploits der angreifer dann entsprechende rechte hat. nun ist es aber scheinbar so, daß alle dienste, die per runlevel-script gestartet werden, unter root laufen. dies gilt dann wohl auch für einen webserver, oder? wie kann ich das unterbinden, d.h. dafür sorgen, daß der webserver nicht als root gestartet wird? kann ich das dann nicht über runlevels machen oder muß ich da dann das runlevelscript ggf. umschreiben? welche möglichkeiten existieren generell, dienste/scripts beim systemstart zu starten, abgesehen von runlevels und (in bestimmten fällen) tcpwrappern, die ja über inetd gestartet werden (der wiederum im runlevel gestartet wird)? |
nö, die dienste laufen schon mit dem richtigen user. du kannst es ja jederzeit mit ps/top überprüfen.
|
Re: ubuntu: wie kann man prozesse bei linux-start nicht als root starten?
Stimmt, alle Dienste die über initscripte gestartet werden laufen erstmal prinzipell als root. Das ist aber auch gut so, weil für diese Dinge meistens auch root Privilegien erforderlich sind. So kannst du zb. nur als root Services auf Ports <1024 binden. Alle Services, die nicht als root weiterlaufen sollen droppen im Regelfall nach dem Start automatisch ihre Priviliegien und laufen unter einem unprivilegierten User weiter. Welcher User das ist kann man in der Konfiguration der jeweiligen Applikationen konfigurieren.
Wenn eine Applikation diese Möglichkeit nicht hat (kommt so gut wie nie vor), könnte man sie im initscript mit su username -c applikation als anderer User starten. |
@mario
ok, das leuchtet mir schon ein.
hab jetzt probehalber einfach mal einen apache 2 installiert. ps -aux | grep apache gibt mir folgendes aus: Code:
root 7708 0.0 0.5 7296 2860 ? Ss 13:40 0:00 /usr/sbin/apache2 -k start -DSSL |
Re: @mario
Mach nicht ps -aux sondern ps -faux. Dann siehst du, daß nur der Apache Master Prozess als root läuft. Das ist wie oben schon mal geschrieben auch notwendig um Port 80 nutzen zu können.
Die Child Prozesse, die die eigentliche Arbeit machen, laufen unter dem User den du in der Apache Konfiguration mit User definiert hast (in deinem Fall User www-data). Siehe: http://httpd.apache.org/docs/2.0/de/invoking.html |
alles klar, danke. :)
|
| Alle Zeitangaben in WEZ +2. Es ist jetzt 23:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
© 2009 FSL Verlag