Un servizio è vincolato da regolari restrizioni di autorizzazione. Tutto dipende da quale utente viene eseguito il servizio. I servizi sono solo processi regolari che sono sempre in esecuzione.
Per esempio,
$ ps aux | grep apache2
radice 2845 0,0 0,2 75596 4508? Ss Sep06 0:19 / usr / sbin / apache2 -k start
www-data 25608 0,0 0,1 74428 2232? S Sep09 0:00 / usr / sbin / apache2 -k start
www-data 25609 0,0 0,1 75596 2288? S Sep09 0:02 / usr / sbin / apache2 -k start
www-data 25610 0,0 0,4 2003664 8436? Sl Sep09 0:37 / usr / sbin / apache2 -k start
www-data 25611 0,0 0,4 2003788 8584? Sl Sep09 0:36 / usr / sbin / apache2 -k start
www-data 25700 0,0 0,4 2003648 8528? Sl Sep09 0:36 / usr / sbin / apache2 -k start
Puoi vedere che il servizio è gestito da root
e da www-data
. Apache utilizza il root
processo solo per l'associazione alla porta 80 (o qualsiasi porta che hai configurato). Ricordiamo che l'associazione alle porte <1024 richiede di essere root.
Per motivi di sicurezza, tuttavia, Apache distribuisce tutta l'elaborazione delle richieste ai processi eseguiti come www-data
. A cosa possono accedere questi processi dipende da te. Se le autorizzazioni dei file nella radice del documento non consentono www-data
di accedere ai file, Apache non sarà in grado di servirli.
Questo è lo stesso per qualsiasi servizio; in genere hanno
- Un processo in esecuzione come
root
(se devono associarsi a una porta <1024; non tutti i servizi dispongono di un root
processo) che delega le attività all'utente meno privilegiato
- Un processo eseguito come utente creato (
bind
per BIND, www-data
per Apache, proftpd
per proftpd, ecc.). Tieni presente che i nomi di questi variano in base al sistema (Apache a volte funziona come apache
o apache2
invece di www-data
).
Alcuni processi vengono eseguiti nobody
invece che come utenti specifici. Questa può essere una cattiva idea, ma dipende dal processo e da cosa sta facendo.
Queste sono solo regole generali; alcuni processi vengono eseguiti interamente come root (come sshd
, anche se utilizzerà un processo utente quando qualcuno si connette). Utilizzare ps aux
per vedere a quale utente è in esecuzione un processo.