La gestione degli utenti rappresenta un’operazione fondamentale e ricorrente per gli amministratori di sistema, indipendentemente dal sistema operativo in uso.
In un ambiente Linux, ciò si traduce abitualmente nella creazione di nuovi account, nella modifica di quelli esistenti (come la directory home o la shell predefinita), nell’abilitazione o disabilitazione di accessi e nella rimozione degli account non più necessari.
Prima di esaminare nel dettaglio i comandi e le procedure per queste attività, è utile analizzare le diverse tipologie di account utente presenti in Linux. È importante sottolineare che, salvo indicazioni specifiche, i comandi presentati funzioneranno sulla maggior parte delle distribuzioni Linux.
Tipologie di Utenti
Utente Root
L’utente root incarna la figura dell’amministratore di sistema, dotato di tutti i permessi operativi. Generalmente, solo l’utente root può installare, disinstallare o aggiornare software e librerie di sistema. Questo account detiene i privilegi più elevati all’interno del sistema.
In sintesi, l’utente root è il soggetto più potente in un ambiente Linux.
Utenti Speciali
Questi utenti, privi di possibilità di login diretto, non godono dei privilegi dell’utente root. Ogni utente speciale è deputato a ruoli specifici, a seconda del contesto in cui opera.
Solitamente vengono creati automaticamente durante l’installazione di un’applicazione. Tra gli esempi si annoverano bin, sync, lp, mail, operator e squid.
Utenti Comuni
Gli utenti comuni operano con pieni diritti solamente all’interno della propria directory di lavoro, di norma la loro home directory. Non dispongono dei permessi per modificare il sistema o installare software, a meno che non ottengano privilegi elevati attraverso l’utilizzo di sudo.
Aggiunta Utenti
Debian/Ubuntu
Nei sistemi Debian e Ubuntu, sono disponibili diverse opzioni per l’aggiunta di utenti da linea di comando. Il comando adduser
, uno script Perl che si appoggia a useradd
, è una delle alternative più utilizzate.
Poiché la creazione di un utente è un’azione che richiede privilegi elevati, è necessario anteporre sudo
al comando, specificando il nome utente come argomento. È possibile personalizzare ulteriori dettagli, se necessario. Oltre a nome utente e password, gli altri dati sono facoltativi. L’avvenuta creazione dell’utente può essere verificata mediante il comando id
.
$ sudo adduser johndoe Adding user `johndoe' ... Adding new group `johndoe' (1003) ... Adding new user `johndoe' (1003) with group `johndoe' ... Creating home directory `/home/johndoe' ... Copying files from `/etc/skel' ... New password: Retype new password: passwd: password updated successfully Changing the user information for johndoe Enter the new value, or press ENTER for the default Full Name []: John Doe Room Number []: Work Phone []: Home Phone []: Other []: Is the information correct? [Y/n] Y $ $ id johndoe uid=1003(johndoe) gid=1003(johndoe) groups=1003(johndoe) $
CentOS/RHEL/Fedora (e Debian/Ubuntu)
Il comando useradd
, efficace sulle distribuzioni basate su RHEL, funziona altrettanto bene su sistemi Ubuntu e Debian. La sintassi di base per la creazione di un nuovo utente è:
$ sudo useradd <username>
Esempio:
$ sudo useradd janedoe
useradd
supporta diverse opzioni, come UID, GID, shell predefinita e directory home. Un esempio d’uso è:
$ sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe
La creazione dell’utente può essere verificata con id
:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $
Modifica Utenti
Spesso si rende necessario modificare le proprietà degli utenti esistenti, in base alle esigenze aziendali, alle richieste degli utenti o alle migrazioni di sistema. Molte di queste modifiche sono semplici da eseguire, pur richiedendo attenzione per l’impatto sull’ambiente dell’utente e sull’accesso ai file.
Shell Predefinita
La shell predefinita è l’interfaccia a riga di comando avviata quando un utente apre una nuova sessione, localmente o tramite SSH. La maggior parte dei sistemi moderni utilizza Bash, ma la shell può variare a seconda della distribuzione o delle preferenze dell’utente. Per modificare la shell predefinita, si usa:
$ sudo usermod -s <shell> <username>
Esempio:
$ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/sh $ sudo usermod -s /bin/bash janedoe $ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/bash $
Nell’esempio, la shell di janedoe
è stata modificata da /bin/sh
a /bin/bash
.
Directory Home
La home directory può essere modificata con:
$ sudo usermod -d <new_directory_path> <username>
Nell’esempio, la home directory di janedoe
è stata spostata in /data/janedoe
:
$ getent passwd janedoe janedoe:x:1005:1005::/data/newhome:/bin/bash $ sudo usermod -d /data/janedoe janedoe $ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $
È essenziale verificare che la nuova directory abbia proprietà e permessi corretti per evitare problemi di accesso.
ID Utente
L’UID di un utente può essere modificato tramite:
$ sudo usermod -u <new_uid> <username>
Esempio:
$ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $ sudo usermod -u 1010 janedoe $ getent passwd janedoe janedoe:x:1010:1005::/data/janedoe:/bin/bash $
La modifica dell’UID influisce su come il filesystem associa proprietà e permessi. Assicurarsi che la home directory e tutti i file appartenenti all’utente siano aggiornati con il nuovo UID, per evitare malfunzionamenti.
Gruppo Predefinito
Il gruppo predefinito è quello creato all’atto dell’aggiunta dell’utente, a meno che non sia specificato un GID diverso. Il gruppo predefinito può essere modificato con:
$ sudo usermod -g <new_gid or group_name> <username>
Esempio:
$ getent passwd janedoe janedoe:x:1010:1005::/data/janedoe:/bin/bash $ sudo usermod -g 1001 janedoe $ getent passwd janedoe janedoe:x:1010:1001::/data/janedoe:/bin/bash $
Anche in questo caso, accertarsi che il nuovo GID sia applicato alla home directory e ai file pertinenti.
Aggiunta/Rimozione Gruppi Secondari
Oltre al gruppo predefinito, un utente può appartenere a gruppi secondari. L’aggiunta o rimozione di un utente da un gruppo può essere effettuata con usermod
:
$ sudo usermod -a -G <group_id or group_name> <username>
Esempio:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo usermod -a -G docker janedoe $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker) $
Per rimuovere un utente da un gruppo secondario, utilizzare gpasswd
:
$ sudo gpasswd -d <username> <groupname>
Esempio:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe),1001(docker) $ sudo gpasswd -d janedoe docker Removing user janedoe from group docker $ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $
Commento GECOS
Il campo GECOS in /etc/passwd
contiene informazioni aggiuntive sull’utente. Può essere modificato tramite:
$ sudo usermod -c <comment> <username>
Esempio:
$ getent passwd janedoe janedoe:x:1005:1005::/data/janedoe:/bin/bash $ sudo usermod -c "Jane Doe - System Admin" janedoe $ getent passwd janedoe janedoe:x:1005:1005:Jane Doe - System Admin:/data/janedoe:/bin/bash $
Se il commento include spazi, è necessario racchiuderlo tra virgolette.
Nome di Login
Il nome di login dell’utente può essere modificato tramite usermod
con il flag -l
:
$ sudo usermod -l <new_username> <old_username>
Esempio:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo usermod -l jane_doe janedoe $ id jane_doe uid=1005(jane_doe) gid=1005(janedoe) groups=1005(janedoe) $
Aggiornare tutti i riferimenti all’utente in base al nuovo nome.
Rimozione Utenti
Un utente può essere rimosso da Linux usando userdel
.
$ sudo userdel <username>
Esempio:
$ id janedoe uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe) $ sudo userdel janedoe $ id janedoe id: ‘janedoe’: no such user $
Per rimuovere l’utente, la sua home directory e la posta, aggiungere il flag -r
.
$ sudo userdel -r <username>
In particolare, sui sistemi Ubuntu, è possibile utilizzare deluser
per rimuovere un utente:
$ sudo deluser <username>
Per rimuovere anche la home directory e lo spool di posta, utilizzare:
$ sudo deluser --remove-home <username>
Per ulteriori informazioni e opzioni supportate, consultare le pagine man dei comandi:
$ man adduser $ man useradd $ man usermod $ man deluser $ man userdel
Conclusione
Questo articolo ha illustrato diversi aspetti della gestione degli utenti in un sistema Linux, includendo la categorizzazione degli utenti, le modalità di aggiunta e rimozione e le opzioni per la modifica dei parametri. Pur non esaustivo, l’articolo copre le principali operazioni che un amministratore di sistema deve affrontare quotidianamente.
Potrebbe anche interessarti leggere: Come rimuovere file e directory in Linux?