Gestione degli utenti su server Linux
Livello: Principiante
Tempo stimato: ~30 minuti
Obiettivo: Conoscere gli strumenti da riga di comando per creare e gestire gli account, configurare l'accesso standard ai servizi e mantenere la disponibilità in sicurezza.
Introduzione
La gestione degli utenti in Linux è una competenza fondamentale per ogni amministratore di sistema. Un controllo degli accessi adeguato garantisce stabilità, sicurezza e tracciabilità del server. In questa guida vedremo le basi per aggiungere account, concedere privilegi (compresa l'escalation dei privilegi in Linux) e mantenere in sicurezza la configurazione standard dei servizi.
Prerequisiti
Prima di iniziare, assicurarsi che siano soddisfatte le seguenti condizioni:
- Sistema operativo: Ubuntu 22.04/24.04 LTS, Debian 12/13, AlmaLinux/Rocky Linux 8/9/10, RHEL 8/9/10
- Accesso: accesso sudo o root al server tramite SSH
- Sistema: gestore di pacchetti funzionante
- Conoscenze richieste: buona padronanza della riga di comando di Linux
Concetti fondamentali
Prima di apportare modifiche, è opportuno capire come funzionano gli account:
- UID (User ID): un identificatore numerico univoco assegnato a ciascun utente per tracciare proprietà e permessi.
- GID (Group ID): un identificatore numerico primario che assegna un utente a uno specifico gruppo. I gruppi Linux organizzano più utenti per condividere i permessi.
- Home directory: la directory predefinita (
/home/username) in cui sono memorizzati i file e le configurazioni personali dell'utente. - Shell di login: l'interprete dei comandi (ad es.
/bin/bash) che si avvia quando un utente autorizzato effettua l'accesso. Un utente autorizzato è un account a cui è consentito accedere al sistema. - Password: una stringa segreta di caratteri usata per l'autenticazione degli utenti in Linux. L'autenticazione è il processo di verifica dell'identità di un utente.
- Adduser: uno script interattivo (front-end) per creare account, usato principalmente sui sistemi Debian/Ubuntu.
- Useradd: un'utilità binaria nativa e di basso livello per creare account su tutte le distribuzioni Linux.
- Blocco dell'account (Account lock): l'azione di disabilitare gli accessi basati su password per mettere in sicurezza il server.
- Scadenza dell'account (Account expiration): l'azione di disabilitare automaticamente un account a una data specifica.
Passaggio 1: Creare un nuovo utente
Per creare un nuovo utente si usa il comando adduser (su Debian/Ubuntu) oppure il comando useradd (su RHEL/AlmaLinux).
Negli esempi seguenti, sostituire johndoe con il nome utente desiderato. Eseguire il comando seguente per creare un utente chiamato johndoe:
sudo adduser johndoe
Verrà richiesto di inserire una password e alcuni dati facoltativi dell'utente.
Output previsto:
L'output conterrà righe relative alla creazione del gruppo, dell'utente e della home directory, e alla copia dei file da /etc/skel. Il valore esatto di UID/GID dipende dal sistema.
Su RHEL/AlmaLinux, usare sudo useradd -m johndoe (il flag -m garantisce la creazione di /home/johndoe) e impostare la password manualmente con il comando passwd: sudo passwd johndoe.
Passaggio 2: Comprendere sudo su un server Linux
Gli utenti standard non possono modificare la configurazione di sistema né installare software. Il comando sudo di Linux consente agli utenti autorizzati di eseguire comandi con privilegi di root.
2.1 Aggiungere un utente al gruppo sudo
Il modo più semplice per concedere i privilegi è aggiungere l'utente al gruppo amministrativo predefinito usando il comando usermod.
Ubuntu/Debian:
sudo usermod -aG sudo johndoe
RHEL/AlmaLinux:
sudo usermod -aG wheel johndoe
Il comando usermod aggiunge (-a) l'utente al gruppo supplementare (-G). L'utente johndoe può ora eseguire attività amministrative anteponendo sudo ai comandi. In caso di successo il comando non produce output. È possibile verificarlo con groups johndoe: il gruppo sudo (o wheel) dovrebbe comparire nell'elenco.
Passaggio 3: Modificare le proprietà dell'utente
Potrebbe essere necessario bloccare un account o cambiarne la password.
3.1 Cambiare una password
Per forzare il cambio di una password o aggiornare una password dimenticata, eseguire quanto segue con il comando passwd:
sudo passwd johndoe
Verrà richiesto di inserire e confermare la nuova password. Al termine, l'utente potrà accedere con le nuove credenziali.
3.2 Bloccare un account
Se un utente lascia l'azienda, è opportuno eseguire un blocco dell'account per mettere in sicurezza il server:
sudo usermod -L johndoe
L'account viene bloccato immediatamente, impedendo qualsiasi nuovo accesso basato su password. Per sbloccarlo in seguito, usare sudo usermod -U johndoe.
Entrambi i comandi non producono output. È possibile verificare lo stato con passwd -S johndoe (stato L = bloccato, P = attivo).
3.3 Impostare la scadenza dell'account
Per disabilitare automaticamente un account a una data specifica, impostare una scadenza dell'account:
sudo usermod -e 2026-12-31 johndoe
In questo modo i collaboratori temporanei perdono l'accesso automaticamente.
È possibile controllare la data di scadenza con sudo chage -l johndoe. Potrebbe mostrare la data con un giorno di anticipo a causa dell'elaborazione del limite UTC: è normale e l'account scadrà comunque correttamente.
Passaggio 4: Usare il comando sudo di Linux in modo sicuro per la sicurezza del server
Il file sudoers (/etc/sudoers) controlla esattamente chi può usare sudo e che cosa può eseguire.
Per modificare il file sudoers, usare sempre visudo. Controlla la presenza di errori di sintassi prima del salvataggio, evitando blocchi dell'accesso.
Una buona pratica consigliata è creare un file separato per ogni regola, anziché modificare il file principale:
sudo visudo -f /etc/sudoers.d/johndoe
Ciò semplifica il ripristino delle regole e riduce il rischio di danneggiare la configurazione principale di sudoers.
Per consentire a johndoe di riavviare il servizio di sincronizzazione dell'ora senza password, aggiungere la riga appropriata per il proprio sistema operativo:
Ubuntu/Debian:
johndoe ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart systemd-timesyncd
RHEL/AlmaLinux:
johndoe ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart chronyd
Salvare e uscire. johndoe può ora riavviare il servizio senza che gli venga richiesta la password.
L'utente johndoe deve eseguire il comando come sudo systemctl restart systemd-timesyncd (o chronyd), cioè specificamente tramite sudo. Una chiamata diretta per riavviare il servizio senza sudo restituirà un errore di polkit che richiede l'autenticazione interattiva.
Non modificare mai i file sudoers direttamente con nano o vim. Un errore di sintassi comprometterà l'accesso sudo per l'intero sistema e richiederà un avvio in modalità di ripristino per correggerlo.
Passaggio 5: Eliminare un utente
Quando un account non è più necessario, rimuoverlo per mantenere ordinato il server.
Per eliminare l'utente conservando i suoi file:
sudo deluser johndoe
Su RHEL/AlmaLinux: sudo userdel johndoe
Eseguendo il comando senza --remove-home (o -r), /home/johndoe e i file dell'utente restano sul disco. Ciò è utile per archiviare i dati, ma occorre essere consapevoli dei file rimanenti.
Per eliminare l'utente e la sua home directory:
sudo deluser --remove-home johndoe
Su RHEL/AlmaLinux: sudo userdel -r johndoe
Per rimuovere il file sudoers dell'utente, se ne è stato creato uno, eseguire:
sudo rm -f /etc/sudoers.d/johndoe
L'account utente è ora completamente rimosso dal sistema.
Prima di rimuovere un utente, assicurarsi che nessun servizio in background dipenda dal suo UID o dai suoi gruppi Linux.
Verifica
Per verificare il nuovo utente e le sue appartenenze ai gruppi, usare il comando id:
id johndoe
Output previsto:
L'output mostrerà l'UID, il GID (che può differire da 1001) e un elenco di gruppi. Verificare che sia presente il gruppo sudo (Debian/Ubuntu) o wheel (RHEL/AlmaLinux). Su Debian/Ubuntu potrebbe comparire nell'elenco anche il gruppo users: è normale.
Per verificare l'accesso sudo, passare al nuovo utente:
su - johndoe
Quindi eseguire un comando che richiede privilegi:
sudo ls /root
Se richiesto, inserire la password di johndoe (quella impostata nel Passaggio 1), non quella di root. Dovrebbe comparire il contenuto della directory /root.
Risoluzione dei problemi
- Errori di sintassi in sudoers: se si danneggia accidentalmente il file sudoers, spesso è possibile correggerlo eseguendo
pkexec visudoda un'altra sessione. Sepkexecnon è disponibile, sarà necessario avviare il server in modalità di ripristino/utente singolo per modificare il file. - Accesso sudo perso: se si perde l'accesso sudo ma si dispone ancora della password di root, accedere direttamente come root (ad es. con
su -) per correggere le appartenenze ai gruppi. - Verifica dei privilegi dell'utente: per controllare esattamente quali comandi un utente può eseguire, usare
sudo -l -U johndoe.
Rollback
Se è necessario annullare le modifiche apportate in questa guida:
- Rimuovere l'utente dal gruppo sudo:
sudo gpasswd -d johndoe sudo(owheel). - Annullare le eventuali aggiunte effettuate tramite
visudo. - Eliminare l'utente e la sua home directory:
sudo deluser --remove-home johndoe(osudo userdel -r johndoe). - Rimuovere il relativo file sudoers dedicato:
sudo rm -f /etc/sudoers.d/johndoe.
Conclusione
Configurare correttamente gli account consente di gestire gli utenti in Linux in sicurezza, senza compromettere la sicurezza del sistema. Comprendendo il comando adduser, il comando usermod e il comando passwd, insieme a una configurazione sicura di sudo, si mantiene un ambiente stabile e tracciabile.
Versione del documento: 1.0
Ultimo aggiornamento: maggio 2026
Responsabile: Team di documentazione tecnica