Corso di Sistemi Operativi

Login

 

Alla fine della fase di avvio, il sistema si prepara ad interagire con gli utenti e il processo init avvia una copia di un programma, chiamato getty, che controlla la console ed emette il prompt in attesa che un utente acceda al sistema.
Siamo ora al run level 3, pronti per fare il log in e lanciare i programmi.

Il prompt mostrato da getty è del tipo:

Debian GNU/Linux 2.1 localhost tty1
localhost login:

Il cursore lampeggiante accanto al prompt indica la possibilità di immettere i propri dati di identificazione per accedere al sistema.
Una volta inserito il nome utente, occorre digitare anche la propria password al prompt successivamente mostrato da getty.
Il nome utente e la password così inseriti vengono poi passati ad un altro programma, chiamato login, che si occupa di controllarne la correttezza.

Perché il login vada a buon fine è necessario che i vostri dati siano già stati registrati dall'amministratore, tramite un apposito programma di sistema, nel file /etc/passwd, che contiene una sequenza di righe, ciascuna delle quali descrive un account utente.
Le informazioni sull'account sono divise in diversi campi, uno dei quali è una versione cifrata della password.

Per consentire l'accesso al sistema, il programma login esegue la crittografia della stringa inserita al prompt e controlla che le due cifrature, quella presente nel sistema e quella appena calcolata, corrispondano.
In caso affermativo l'utente può accedere al sistema, altrimenti l'accesso viene negato e viene riproposto il prompt di identificazione con un messaggio del tipo:

Login incorrect

login:

E' bene soffermarci su questo importante meccanismo di protezione implementato da tutti i sistemi basati su UNIX.
UNIX tiene nota di quali sono i proprietari dei file contenuti nel file system e da quali utenti (o gruppi di utenti) è possibile accedere ad essi ed in che modo.
Identificando l'utente all'avvio del sistema si ottengono due primi vantaggi in termini di sicurezza:
1) Possono utilizzare il sistema solo gli utenti che sono stati accettati dall'amministratore, il quale ha quindi il potere di fare una selezione delle persone autorizzate ad usare la macchina;
2) E' possibile proteggere i propri file assegnando opportunamente o negando agli altri utenti i diritti di accesso ad essi.

Oltre a questi primi meccanismi di protezione, la sicurezza del sistema è incrementata dall'utilizzo di password crittografate.
Infatti, mentre è facile passare da una password in chiaro ad una cifrata, l'inverso è molto difficile, per cui se qualcuno riesce a vedere la versione cifrata di una password non può comunque usare l'account corrispondente.
Questa soluzione comporta il piccolo svantaggio che se si dimentica la propria password, non c'è modo di recuperarla, ma si può solamente chiedere all'amministratore di cambiarla con un'altra; d'altra parte ha il vantaggio di aumentare la generalità del sistema consentendo la lettura del file /etc/passwd a tutti gli utenti.

Un uso tipico di questa caratteristica è la possibilità di ogni programma di chiedere al sistema chi è il proprietario di un file, che viene restituito come identificatore numerico, e poi cercarlo nel file delle password per determinare il nome di login dell'utente.

Infine, è importante sottolineare che il programma login non informa subito se si è immesso un nome di login errato, ma aspetta che sia stata inserita anche la password.
Se così non fosse, eventuali tentativi di intrusione verrebbero agevolati, consentendo dapprima la ricerca di un nome di login corretto e poi l’individuazione della password per quel nome utente.
In questo modo, invece, ad ogni tentativo occorre fornire una coppia di possibili valori login/password.

Se l’identificativo e la password sono corretti, il programma login compie alcune operazioni di servizio e poi avvia l’interprete di comandi, la shell, con la quale l’utente può interagire con il sistema.
Una volta che l’utente è stato riconosciuto e accettato, esso “entra” nel file system del sistema operativo, in un punto ben preciso, detto home directory, contenente i file personali dell’utente, inclusi quelli di configurazione dell’ambiente di sistema.
Le informazioni sulla home directory e sulla shell da avviare per un particolare utente sono contenuti in appositi campi del file /etc/passwd.

 

Torna all'indice Generale del corso di Corso di Sistemi Operativi di Software Planet