Capitolo 8. Login e logout

Sommario
Login via terminale
Login via rete
Cosa fa login
La shell
X e xdm
Il controllo degli accessi

"Non mi interessa appartenere ad un club che accetta gente come me come membri." (Groucho Marx)

Questa sezione descrive cosa succede quando un utente si collega o fa logout: vengono descritte in dettaglio le varie interazioni di processi in background, file di log, file di configurazione e così via.

Login via terminale

La Figura 8-1 mostra come avvengono i login via terminale. Per prima cosa, init si assicura che ci sia un programma di getty per la connessione da terminale (o da console). getty ascolta al terminale ed aspetta che l'utente sia pronto a fare il login (di solito comporta che l'utente digiti qualcosa). Quando nota un utente, getty dà in output un messaggio di saluto (che si trova in /etc/issue), chiede il nome dell'utente e infine fa partire il programma login. login prende come parametro il nome dell'utente e chiede la password; se corrispondono, login avvia la shell configurata per l'utente, altrimenti esce semplicemente e termina il processo (probabilmente dopo aver dato all'utente un'altra possibilità di inserire il nome e la password). init nota che il processo è stato terminato e avvia una nuova getty per quel terminale.

Figura 8-1. Login via terminale: l'interazione di init, getty, login e la shell.

Notare che il solo processo nuovo è quello creato da init (usando la chiamata di sistema fork); getty e login sostituiscono solo il programma che gira nel processo (usando la chiamata di sistema exec).

Per le linee seriali è necessario un programma separato per notare l'utente, dato che può essere (ed era tradizionalmente) complicato notare quando un terminale diventa attivo. getty si adatta anche alla velocità e ad altre impostazioni della connessione, cosa molto importante per le connessioni in ingresso, quando questi parametri cambiano da chiamata a chiamata.

Esistono diverse versioni di getty ed init, tutte con i loro aspetti positivi e negativi. È una buona idea studiare tutte le versioni disponibili sul vostro sistema e anche le altre (potete usare la Linux Software Map [SOFTWARE-MAP] per cercarle). Se non avete accessi in entrata via linea seriale probabilmente non avete bisogno di preoccuparvi delle getty, ma init è comunque importante.