Come aggiungere, modificare e rimuovere utenti in Linux?

La gestione degli utenti in qualsiasi sistema operativo è una delle attività di routine di base di un amministratore di sistema.

Per un sistema operativo basato su Linux, di solito comporta la creazione di account utente, la modifica di account esistenti come la modifica della directory home, la shell predefinita, il blocco/sblocco di uno o più account e la rimozione di account utente.

Prima di esaminare i comandi e i processi per eseguire queste attività, analizziamo brevemente come gli account utente possono essere classificati in Linux. Inoltre, tieni presente che, a meno che non sia specificato in modo esplicito, i comandi forniti funzioneranno nella maggior parte delle comuni distribuzioni Linux.

Tipi di utenti

Utente root

L’utente root è l’amministratore del sistema operativo con tutte le autorizzazioni per eseguire operazioni. Di solito, solo root può installare/disinstallare o aggiornare i programmi e le librerie di sistema di base. È l’unico account utente con privilegi a livello di sistema.

Quindi, l’utente root è l’utente più potente del sistema.

Utente speciale

Questi sono gli utenti senza login. Non hanno tutti i privilegi dell’utente root. A seconda dell’account, assumono ruoli specializzati diversi.

Questi vengono creati automaticamente al momento dell’installazione di qualsiasi applicazione. bin, sync, lp, mail, operator, squid sono alcuni esempi di utenti speciali.

Utenti comuni

Gli utenti comuni hanno privilegi completi solo nella loro directory di lavoro, solitamente la loro home directory. Non hanno i privilegi per gestire il sistema o installare il software. Non possono eseguire queste attività senza disporre di privilegi speciali tramite sudo.

Aggiunta dell’utente

Debian/Ubuntu

Su un sistema basato su Debian o Ubuntu, ci sono un paio di opzioni per aggiungere utenti dalla CLI. Il primo comando è adduser, che è uno script Perl e utilizza il comando useradd nel backend il cui utilizzo vedremo più avanti.

Poiché l’aggiunta di un utente è un’attività privilegiata, è necessario utilizzare sudo come prefisso e nome utente come argomento. Altri dettagli possono essere specificati come richiesto. Fatta eccezione per nome utente e password, il resto dei dettagli è facoltativo. Possiamo verificare che l’utente sia stato creato utilizzando 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 (incluso Debian/Ubuntu)

Il comando successivo, useradd funzionerà su distribuzioni di sistemi operativi basati su RHEL e funzionerà ugualmente bene su host Ubuntu/Debian. La sintassi più semplice (senza opzioni aggiuntive) per creare un nuovo utente è:

$ sudo useradd <username>

Esempio:

$ sudo useradd janedoe

Il comando useradd supporta più opzioni che possono essere specificate durante la creazione dell’utente, le più comuni sono l’ID utente (UID), l’ID gruppo (GID), la shell predefinita e la directory home, ecc. Di seguito è riportato uno di questi esempi:

$ sudo useradd -s /bin/sh -d /data/newhome -c "Jane Doe" -u 1005 janedoe

Puoi verificare l’utente appena creato usando il comando id:

$ id janedoe
uid=1005(janedoe) gid=1005(janedoe) groups=1005(janedoe)
$

Modifica utente

Spesso è necessario modificare alcune proprietà degli utenti esistenti in base ai requisiti dell’organizzazione, alle richieste degli utenti o alle migrazioni del sistema. La maggior parte di queste proprietà è facile da modificare, anche se è necessario garantire come influirà sull’ambiente dell’utente e sull’accesso ai file di proprietà oa cui accede l’utente.

  Come usare il gestore di password Buttercup su Linux

Shell predefinita

La shell predefinita è la shell CLI creata quando un utente avvia una nuova sessione CLI in locale o tramite SSH. La maggior parte dei sistemi moderni ha un Bash utente predefinito anche se può variare in base alla distribuzione Linux o all’ambiente dell’utente. Per modificare la shell predefinita di un utente, utilizzare:

$ 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
$

Come puoi vedere nell’output sopra, la shell è stata modificata da /bin/sh a /bin/bash per l’utente janedoe.

Directory principale

Come la shell predefinita, la home directory di un utente può essere modificata in una posizione diversa utilizzando:

$ sudo usermod -d <new_directory_path> <username>

Nell’esempio seguente, la home directory dell’utente janedoe è stata modificata 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
$

Prima di effettuare il passaggio, assicurati che la nuova directory disponga della proprietà e delle autorizzazioni corrette. In caso contrario, l’utente potrebbe riscontrare problemi durante l’accesso o durante l’utilizzo della nuova directory home.

  Ricevi promemoria salutari sul desktop Linux usando Stretchly

ID utente

È possibile modificare l’ID utente di un utente esistente utilizzando:

$ 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
$

Anche in questo caso, la modifica dell’UID cambia il modo in cui il filesystem Linux associa la proprietà e l’autorizzazione a un file o una directory. Assicurarsi che la home directory dell’utente, il suo contenuto e tutti gli altri file in qualsiasi parte del sistema, originariamente di proprietà dell’utente (con vecchio UID), siano cambiati in UID mappato. In caso contrario, potrebbero verificarsi problemi nella sessione CLI e nell’accesso ai file da parte dell’utente.

Gruppo predefinito

Il gruppo predefinito è in genere l’ID gruppo predefinito dell’utente, che viene creato durante la creazione dell’utente a meno che non venga specificato un altro GID. Linux consente di modificare anche il gruppo predefinito di un utente utilizzando il comando usermod. Ecco la sintassi da usare:

$ sudo usermod -g <new_gid or group_name> <username>

Ecco un 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, assicurati che il nuovo ID gruppo sia impostato sulla directory home dell’utente, sui contenuti e su tutti gli altri file o directory applicabili per migrare correttamente le autorizzazioni di proprietà.

Aggiunta/rimozione di gruppi

Oltre al gruppo predefinito, un utente in Linux può far parte di gruppi secondari. Possiamo sempre aggiungere o rimuovere gruppi aggiuntivi a cui appartiene un utente usando il comando 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)
$

Allo stesso modo, per rimuovere un utente da uno dei gruppi secondari, utilizzare il comando gpasswd come mostrato di seguito:

$ 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 sull’utente o commenti. Possiamo modificare queste informazioni per un utente esistente come:

$ 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
$

Tieni presente che se il tuo commento o i dettagli dell’utente contengono spazi, racchiudi quel campo tra virgolette come fatto nell’esempio sopra.

  Ricevi promemoria salutari sul desktop Linux usando Stretchly

Nome di login

Il nome di accesso dell’utente può anche essere modificato utilizzando il comando usermod utilizzando -l flag:

$ 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)
$

Ricordarsi di aggiornare i riferimenti utente secondo il nuovo nome ovunque utilizzato. Anche in comandi come id, dovrebbe essere specificato il nuovo nome utente.

Rimozione dell’utente

Un utente può essere rimosso da Linux usando il comando 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 un utente insieme alla sua home directory e allo spool di posta, aggiungi anche il flag -r.

$ sudo userdel -r <username>

In particolare per i sistemi basati su Ubuntu, puoi anche utilizzare il comando deluser per rimuovere un utente:

$ sudo deluser <username>

Allo stesso modo, per rimuovere anche la home directory e lo spool di posta, utilizzare:

$ sudo deluser --remove-home <username>

Per informazioni dettagliate e altre opzioni supportate, fare riferimento alla pagina principale dei vari comandi utilizzando:

$ man adduser
$ man useradd
$ man usermod
$ man deluser
$ man userdel

Conclusione

Questo articolo ha mostrato vari aspetti della gestione degli utenti in un sistema Linux. Ciò include una spiegazione di varie categorie di utenti e come aggiungerle e rimuoverle. Copre anche varie opzioni che aiutano a modificare i parametri di un utente esistente. Sebbene non copra tutte le possibilità supportate da vari comandi, copre molte attività di amministrazione comuni che un amministratore di sistema incontrerà nel lavoro quotidiano.

Potresti anche essere interessato a leggere: Come rimuovere file e directory in Linux?