Autorizzazioni Linux per servizi


7

Come funzionano le autorizzazioni per i servizi in Linux? So già che posso impostare read, writee executele autorizzazioni per i file e le directory con chmodciascuno per owner, groupe other usersma come faccio permessi di lavoro per un servizio in esecuzione? Come posso vedere quali autorizzazioni ha un servizio su determinati file / directory?

Risposte:


4

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 roote da www-data. Apache utilizza il rootprocesso 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-datadi 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 rootprocesso) che delega le attività all'utente meno privilegiato
  • Un processo eseguito come utente creato ( bindper BIND, www-dataper Apache, proftpdper proftpd, ecc.). Tieni presente che i nomi di questi variano in base al sistema (Apache a volte funziona come apacheo apache2invece di www-data).

Alcuni processi vengono eseguiti nobodyinvece 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 auxper vedere a quale utente è in esecuzione un processo.


1
Grazie uomo! È esattamente quello che cerco ... un'altra domanda, come posso cambiare l'utente per un processo?
Gigitsu,

1
@Gigitsu che dipende dal servizio; per Apache, ad esempio, è necessario modificare APACHE_RUN_USERe APACHE_RUN_GROUP. Dovrai controllare la documentazione per il servizio che stai guardando, poiché è diverso per ognuno.
Tom Marthenal,

Beh, mi dispiace divagare, ma noto che haproxy può funzionare come haproxy (non come root) e associare tcp 80 port. Come ci riesce? Qualche illuminazione?
kiiwii,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.