Gestire gli utenti da riga di comando in Linux
La gestione degli utenti è una delle attività fondamentali per chi amministra sistemi Linux. Che tu segua una singola macchina o un parco server, tenere ordine tra gli account aiuta a mantenere il controllo e a rafforzare la sicurezza. L’accesso dovrebbe essere concesso solo a chi ne ha davvero bisogno e solo per il tempo necessario: permessi superflui possono esporre dati sensibili o risorse critiche. In questa guida vediamo gli strumenti da terminale per creare, modificare e rimuovere account direttamente dalla shell.
File chiave per la gestione degli utenti in Linux
Linux conserva le informazioni su utenti e gruppi in alcuni file di sistema. Qui trovi dati sugli account, password e configurazioni dei gruppi che gli amministratori usano per gestire accessi e permessi.
-
/etc/passwd
Contiene UID, GID, directory home e shell predefinita. È leggibile da tutti, modificabile solo da root/sudo. -
/etc/group
Elenca nome del gruppo, GID e membri. Serve a gestire appartenenze e permessi di gruppo. -
/etc/sudoers
Definisce quali utenti/gruppi possono eseguire comandi come root. Va modificato con estrema cautela. -
/etc/shadow
Conserva gli hash delle password, scadenze e informazioni sull’account. Accessibile solo a root. -
/etc/gshadow
Include password e scadenze dei gruppi. Accesso riservato a root. -
/etc/skel
Modelli di file (come .bashrc e .profile) copiati nelle home dei nuovi utenti. -
/etc/login.defs
Imposta regole di sicurezza come invecchiamento e scadenza delle password.
Visualizzare gli utenti esistenti
Il modo più rapido per vedere gli utenti presenti su un sistema Linux è consultare il file /etc/passwd, che raccoglie le informazioni di base su tutti gli account:
sudo cat /etc/passwd
Ogni riga corrisponde a un utente.
Altri comandi utili per interrogare gli account:
id username
groups username
getent passwd username
- id mostra UID, GID e tutti i gruppi a cui l’utente appartiene.
- groups elenca solo i gruppi dell’utente, senza UID/GID.
- getent interroga le basi dati di sistema (come /etc/passwd, LDAP o altre fonti configurate) per restituire i dettagli dell’account.
Nota: sui sistemi moderni gli hash delle password non si trovano in /etc/passwd. Le password cifrate vengono salvate in /etc/shadow, leggibile esclusivamente da root.
Creare utenti con il comando useradd
useradd è un binario “di basso livello” disponibile sulla maggior parte delle distro. È meno amichevole rispetto ad adduser, ma le differenze sono minime e si può tranquillamente utilizzare.
Per approfondire opzioni e sintassi:
man useradd
useradd --help
Per aggiungere un nuovo utente creando anche la directory home:
sudo useradd --create-home username
Senza l’opzione –create-home l’account viene creato senza directory personale. Dopo la creazione puoi verificare con:
grep username /etc/passwd
Creare utenti con il comando adduser
adduser è di solito uno script Perl che crea utenti in modo simile a useradd, ma con una procedura interattiva: ti chiede password, percorso della home, e altre informazioni. In alcune distribuzioni (ad esempio Red Hat e CentOS) adduser è un link simbolico a useradd; su Arch Linux adduser è disponibile come pacchetto non installato di default.
Normalmente, la creazione di un utente genera anche un gruppo omonimo. Le impostazioni predefinite per useradd sono spesso gestite in /etc/default/useradd, dove puoi definire shell di default, posizione delle home e altre proprietà degli account.
Esempio di creazione utente:
sudo adduser testuser
Ti verrà chiesto di impostare e confermare la password, inserire dati opzionali e confermare la creazione dell’account.
Impostare o cambiare la password di un utente
Dopo aver creato un account, puoi definire o aggiornare la password con passwd:
sudo passwd username
Ti verrà richiesto di inserire e confermare la nuova password. Se un utente non privilegiato esegue passwd senza sudo, potrà modificare esclusivamente la propria password.
I requisiti di complessità sono gestiti da PAM e, su Ubuntu, sono configurati in /etc/pam.d/common-password. Per dettagli su come modificarli, consulta la pagina man di pam-auth-update.
Modificare gli utenti con usermod
Il comando usermod permette di cambiare gli attributi di un account esistente: ID utente, nome di login, directory home, appartenenze ai gruppi e altro.
- Aggiornare l’UID:
sudo usermod -u NUOVO_UID username
Fai attenzione nel modificare ID o nome utente: potresti alterare la proprietà dei file o i permessi.
- Cambiare la directory Home:
sudo usermod -d /nuovo/percorso/home username
- Bloccare o sbloccare un account:
sudo usermod -L username # blocca
sudo usermod -U username # sblocca
- Impostare la data di scadenza dell’account:
sudo usermod --expiredate YYYY-MM-DD username
Queste opzioni ti consentono di controllare l’accesso e le impostazioni dell’utente senza doverlo eliminare.
Aggiungere utenti ai gruppi
I gruppi permettono a più utenti di condividere gli stessi permessi. Sono utili, ad esempio, per gestire accessi a file, servizi o attività amministrative.
Per aggiungere un utente a uno o più gruppi con usermod:
sudo usermod -a -G gruppo1,gruppo2 username
- L’opzione -a (append) è fondamentale: senza di essa, l’elenco dei gruppi dell’utente verrebbe sovrascritto.
In alternativa, puoi usare gpasswd:
sudo gpasswd -a username groupname # aggiungi al gruppo
sudo gpasswd -d username groupname # rimuovi dal gruppo
Rimuovere utenti
Se un account non serve più, puoi eliminarlo con userdel:
sudo userdel username
Questo rimuove l’account ma lascia intatta la home. Per eliminare anche la directory personale e i file associati:
sudo userdel -r username
Nota: userdel non può eliminare un utente se ci sono processi attivi in esecuzione con il suo account.
Consultare l’attività di accesso degli utenti
Monitorare gli accessi aiuta a individuare tentativi non autorizzati e a risolvere problemi di autenticazione.
- Su Ubuntu e Debian i tentativi di login sono registrati in /var/log/auth.log:
sudo tail /var/log/auth.log
- Su Red Hat e CentOS i log si trovano in /var/log/secure.
- Sui sistemi con systemd puoi visionare gli eventi di autenticazione, ad esempio relativi a SSH, con:
sudo journalctl | grep ssh
Una gestione attenta degli account mantiene il sistema ordinato e riduce il rischio di accessi non autorizzati. Se vuoi rendere ancora più produttiva la tua esperienza a terminale, esplora anche strumenti e utility che velocizzano il lavoro in shell.

