Sto cercando di capire come funzionano le autorizzazioni utente in Linux. Il kernel si avvia e inizia init
come root, giusto? Init quindi esegue gli script di avvio ed esegue getty
( agetty
), di nuovo come root. Agetty legge solo il nome utente ed esegue login
, sempre come root, credo. Niente di interessante ancora. Ma cosa fa il login ? Non sono riuscito a trovare niente di meglio di "tenta di accedere". Supponiamo che il login trovi che la password corrisponde (e stiamo provando ad accedere come al solito utente), come cambia l'ID utente? Ho pensato che ci sarebbe dovuto essere una richiesta di sistema, ma non sono riuscito a trovarlo (forse sono solo cieco?)
Inoltre, circa su
. su
ha il bit 'setuid' impostato, quindi quando lo eseguiamo, funziona sempre come root. Ma quando gli diciamo di accedere come al solito utente, deve nuovamente cambiare l'ID utente. Capisco correttamente che accade la stessa "magia" in su
e login
quando devono cambiare utente? In tal caso, perché avere due programmi diversi? Ci sono altri tipi di seri affari in corso durante l'esecuzione dell'accesso?