Come aggiungere, modificare e rimuovere utenti in Linux?

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?