7.4.2 I diritti di un processo

Come illustrato nella sez. 7.4, un processo ha i diritti dell’utente che lo ha lanciato, o meglio, dell’utente che il processo stesso impersona, cioè del suo effective UID (e effective GID). All’avvio il kernel impersona il superuser e quindi ha qualunque diritto sul sitema. Esso avvia il primo processo (init) che avrà quindi i permessi del superuser (poiché lanciato da un processo che impersona il superuser). A sua volta il processo di avvio del sistema, gestito da init, provvederà a lanciare altri processi necessari al funzionamento del sistema stesso.

Così facendo però i processi avrebbero tutti i permessi del superuser, ovvero potrebbero eseguire qualunque operazione sul sistema. Questo viene evitato per mezzo del meccanismo di impersonamento degli utenti (v. sez. 6.7). Infatti, supponendo ad esempio che debba essere lanciato in esecuzione il processo relativo al server HTTP, poiché esso non ha bisogno di privilegi di esecuzione particolari, il relativo script di avvio, eseguibile soltanto dal superuser, contiene al suo interno una particolare istruzione che fa impersonare, all’esecuzione dello script stesso, un altro utente che non è un amministratore del sistema.27 Quindi lo script lancerà in esecuzione il server HTTP che avrà i diritti dell’utente impersonato dal sistema appena prima che il server HTTP venisse lanciato. In questo modo è quindi possibile ridurre i privilegi che gli utenti hanno sul sistema, rendendo così il funzionamento del sistema stesso più stabile e sicuro.

Allo stesso modo, il processo getty (o derivato) che permette l’accesso al sistema da parte degli utenti, viene eseguito con i diritti del superuser. Questo attende che venga inserito lo username dell’utente che desidera effettuare l’accesso e quindi lancia in esecuzione login che provvede a richiedere la password ed a stabilire se l’utente può avere accesso al sistema. In caso positivo, login stesso impersona l’utente che vuole accedere al sistema e quindi lancia una shell con i diritti dell’utente. Così ogni utente ha sul sistema i diritti per lui previsti.