Guida dell'amministratore di sistema di Linux: Versione 0.6.2 | ||
---|---|---|
Indietro | Capitolo 9. La gestione degli account degli utenti | Avanti |
Il kernel di Linux tratta gli utenti come semplici numeri: ciascun utente viene identificato da un numero intero univoco, l'identificativo utente o uid, perché per un computer è più veloce e facile usare questi piuttosto che i nomi testuali. Un database separato fuori del kernel assegna un nome testuale, lo username, a ciascun identificativo utente, e contiene anche altre informazioni.
Per creare un utente bisogna aggiungere le informazioni ad esso relative al database e creargli una home directory. Può anche essere necessario educarlo ed impostargli un ambiente iniziale adatto.
La maggior parte delle distribuzioni di Linux hanno un programma per creare gli account; ce ne sono diversi disponibili. Due alternative da linea di comando sono adduser e useradd, ma ci possono essere anche degli strumenti grafici. Qualsiasi sia il programma, il risultato è che non c'è molto lavoro manuale da fare: anche se i dettagli sono molti ed intricati, questi programmi fanno sembrare tutto banale; comunque, la la sezione Creazione manuale di un utente descrive come farlo a mano.
Il database degli utenti principale in un sistema Unix è il file di testo /etc/passwd (chiamato file delle password), che elenca tutti i nomi utente validi e le informazioni ad essi associate. Il file ha una linea per ciascun nome utente e viene divisa in sette campi delimitati da due punti:
Nome utente.
Password, in forma criptata.
Id numerico dell'utente.
Id numerico del gruppo.
Nome completo o altra descrizione dell'account.
Home directory.
Shell di login (programma da avviare al login).
Qualsiasi utente sul sistema può leggere il file delle password in modo da poter, ad esempio, trovare il nome di un altro utente: ciò significa che anche la password (il secondo campo) è disponibile per tutti. Il file delle password contiene le password in forma criptata, quindi in teoria non ci sono problemi; comunque la criptazione può essere decodificata, specialmente se le password sono deboli (brevi o che si trovano nel dizionario); non è quindi una buona idea tenere le password nel file delle password.
Molti sistemi Linux hanno le shadow password: un modo alternativo per tenere le password che vengono immagazzinate criptate in un file separato, /etc/shadow, leggibile solo da root. Il file /etc/passwd contiene solo un indicatore speciale nel secondo campo. Qualsiasi programma che debba verificare un utente è setuid e quindi può accedere al file delle shadow password. I programmi normali, che usano solo gli altri campi nel file delle password, non possono arrivare a leggerle[1].
Sulla maggior parte dei sistemi non importa quali sono gli id numerici degli utenti e dei gruppi, ma se usate l'NFS (Network File System) dovete avere gli stessi uid e gid su tutti i sistemi; questo perché anche NFS identifica gli utenti con gli uid numerici. Se non usate l'NFS potete farli scegliere automaticamente al programma che crea gli account.
Se usate l'NFS dovrete inventare un meccanismo per sincronizzare le informazioni sugli account; un'alternativa è usare il sistema NIS (vedere [NAG]).
Comunque, dovreste cercare di non riutilizzare le uid numeriche (e gli username testuali), perché il nuovo padrone dell'uid (o dello username) potrebbe avere accesso ai file del vecchio utente (o alle mail, o che altro).
Quando viene creata la home directory di un nuovo utente, viene inizializzata con i file dalla directory /etc/skel. L'amministratore di sistema può creare dei file in /etc/skel che daranno un ambiente di default per gli utenti; ad esempio può creare un file /etc/skel/.profile che imposta la variabile d'ambiente EDITOR ad un editor facile da usare.
Comunque di solito è meglio cercare di tenere /etc/skel il più piccolo possibile, perché sarebbe poi quasi impossibile aggiornare i file degli utenti esistenti. Ad esempio se cambia il nome dell'editor tutti gli utenti esistenti dovrebbero modificare il proprio .profile. L'amministratore di sistema può provare a farlo automaticamente con uno script, ma è quasi certo che danneggerebbe il file di qualcuno.
Quando possibile è meglio mettere le configurazioni globali nei file globali come /etc/profile; in questo modo è possibile aggiornarlo senza rovinare le impostazioni personali degli utenti.
Per creare a mano un account seguite questi passaggi:
Modificate /etc/passwd con vipw e aggiungete una nuova linea per il nuovo account. Attenzione alla sintassi. Non modificatelo direttamente con un editor! vipw blocca il file, in modo che altri comandi non provino a modificarlo nello stesso tempo. Il campo della password dovrebbe essere impostato a `*', in modo che sia impossibile collegarsi.
Nello stesso modo, modificate /etc/group con vigr, se dovete creare anche un nuovo gruppo.
Create la home directory dell'utente con mkdir.
Copiate i file da /etc/skel alla nuova home directory.
Aggiustate l'owner e i permessi con chown e chmod. L'opzione -R è utilissima. I permessi corretti variano un po' da un sito all'altro, ma di solito questi comandi vanno bene:
cd /home/utente chown -R utente.gruppo . chmod -R go=u,go-w . chmod go= .
Impostate la password con passwd.
Dopo aver impostato la password nell'ultimo passaggio, l'account sarà funzionante. Non dovreste impostarla finché non avete fatto tutto il resto, altrimenti l'utente si potrebbe collegare inavvertitamente mentre state ancora copiando i file.
Qualche volta è necessario creare degli account fittizi[2] che non vengono usati da persone. Ad esempio, per creare un server FTP anonimo (in modo che chiunque possa scaricarne dei file senza dover avere un account) va creato un account con nome ftp. In tali casi di solito non c'è bisogno di impostare la password (l'ultimo passo qui sopra); invece, è meglio non farlo, in modo che nessuno possa usare l'account a meno di non diventare prima root, dato che root può diventare qualsiasi utente.
[1] | Sì, vuol dire che il file delle password ha tutte le informazioni su un utente tranne le password. Le meraviglie della tecnologia. |
[2] | Utenti surreali? |