Product SiteDocumentation Site

8.4. Database di utenti e gruppi

La lista degli utenti è generalmente memorizzata nel file /etc/passwd, mentre il file /etc/shadow memorizza l'hash delle password. Entrambi sono file di testo, in un formato relativamente semplice, che può essere letto e modificato con un editor. Ogni utente è elencato su una riga con diversi campi separati dai due punti (“:”).

8.4.1. Lista utenti: /etc/passwd

Questa è la lista dei campi nel file /etc/passwd:
  • login, per esempio rhertzog;
  • password: si tratta di una password crittografata da una funzione unidirezionale (crypt), basandosi su DES, MD5, SHA-256 o SHA-512. Il valore speciale "x" indica che la password criptata è memorizzata in /etc/shadow;
  • uid: numero univoco che identifica ciascun utente;
  • gid: numero univoco che identifica il gruppo principale dell'utente (Debian crea in via predefinita un gruppo specifico per ogni utente);
  • GECOS: campo dati che normalmente contiene il nome completo dell'utente;
  • directory di login, assegnata all'utente per conservare i propri file personali (la variabile d'ambiente $HOME punta generalmente qui);
  • programma eseguito dopo il login. Questo è generalmente un interprete dei comandi (shell), che dà all'utente carta bianca. Se viene specificato /bin/false (il quale non fa nulla e ritorna immediatamente il controllo), l'utente non può eseguire il login.
Come già detto, questo file si può modificare direttamente. Tuttavia ci sono modi più eleganti per modificarli, come descritto in Sezione 8.4.3, «Modificare un account o password esistente».

8.4.2. Il file delle password nascoste e cifrate: /etc/shadow

Il file /etc/shadow contiene i seguenti campi:
  • login;
  • password cifrata;
  • diversi campi gestiscono la scadenza della password.
Con questo file è possibile far scadere le password od impostare dopo quanto tempo dalla scadenza della password l'account sarà disattivato .

8.4.3. Modificare un account o password esistente

I seguenti comandi permettono di modificare le informazioni memorizzate in campi specifici del database degli utenti: passwd permette ad un utente normale di cambiare la propria password, ed aggiorna il file /etc/shadow (chpasswd permette agli amministratori di aggiornare le password di un elenco di utenti in modalità batch); chfn (CHange Full Name), riservato al super-utente (root), modifica il campo GECOS. chsh (CHange SHell) permette all'utente di cambiare la propria shell di accesso; tuttavia, le scelte disponibili saranno limitate a quelle elencate in /etc/shells; l'amministratore, invece, non è vincolato da questa restrizione e può impostare la shell su qualsiasi programma di sua scelta.
Infine il comando chage (CHange AGE) consente all'amministratore di cambiare le impostazioni di scadenza della password (l'opzione -l utente elenca le impostazioni attuali). È possibile inoltre forzare la scandenza di una password utilizzando il comando passwd -e utente, il quale richiede all'utente di cambiare la password al prossimo accesso.
Oltre a questi strumenti, il comando usermod permette di modificare tutti i dettagli sopra menzionati.

8.4.4. Disabilitare un account

Può capitare di dover "disabilitare un account" (bloccare un utente) come misura disciplinare, ai fini di un'indagine o semplicemente in caso di assenza prolungata o definitiva di un utente. Un account disabilitato significa che l'utente non può effettuare il login o accedere alla macchina. L'account rimane intatto sulla macchina e non vengono eliminati file o dati; è semplicemente inaccessibile. Ciò si ottiene con il comando passwd -l utente (blocca). La riabilitazione dell'account avviene in modo simile, con l'opzione -u (sblocca). In questo modo, però, si impedisce solo l'accesso tramite password da parte dell'utente. L'utente potrebbe ancora essere in grado di accedere al sistema utilizzando una chiave SSH (se configurata). Per evitare anche questa possibilità è necessario far scadere l'account usando chage -E 1utente o usermod -e 1 utente (dando un valore di -1 in uno di questi comandi si reimposta la data di scadenza a mai). Per disabilitare (temporaneamente) tutti gli account utente basta creare il file /etc/nologin.
È possibile disabilitare un account utente non solo bloccandolo come descritto sopra, ma anche cambiando la sua shell di login predefinita (chsh -s shell utente). Se quest'ultima viene cambiata in /usr/sbin/nologin, l'utente riceve un messaggio di cortesia che lo informa che non è possibile effettuare il login, mentre /bin/false esce semplicemente restituendo false. Non esiste uno switch per ripristinare la shell precedente. È necessario tenere traccia di queste informazioni prima di modificare l'impostazione. Queste shell sono spesso utilizzate per gli utenti di sistema che non richiedono alcun accesso.

8.4.5. Lista dei gruppi: /etc/group

I gruppi sono elencati nel file /etc/group, un semplice database testuale in un formato simile a quello del file /etc/passwd, con i seguenti campi:
  • nome gruppo;
  • password (opzionale): Questa è utilizzata unicamente per aggiungersi ad un gruppo quando non si è un utente abituale (con i comandi newgrp o sg, si veda il riquadro FONDAMENTALE Lavorare con diversi gruppi);
  • gid: numero univoco di identificazione di un gruppo;
  • lista di membri: lista di nomi degli utenti che sono membri del gruppo, separati da virgole.
I comandi addgroup e delgroup, rispettivamente, aggiungono o rimuovono un gruppo. Il comando groupmod modifica le informazioni di un gruppo (il suo gid o identificativo). Il comando gpasswd gruppo cambia la password per il gruppo mentre il comando gpasswd -r gruppo la cancella.