Siamo tutti consapevoli dei comandi più popolari chiamati ‘useradd‘ o ‘adduser‘ in Linux. Ci sono momenti in cui un Amministratore di Sistema Linux è chiesto di creare account utente su Linux con proprietà, limitazioni o commenti specifici.
In Linux, il comando ‘useradd‘ è uno strumento di basso livello utilizzato per aggiungere o creare account utente in Linux e in altri sistemi operativi Unix-like. Il comando ‘adduser‘ è molto simile al comando ‘useradd‘, poiché è solo un collegamento simbolico ad esso.
In alcune distribuzioni di Linux, il comando ‘useradd‘ potrebbe avere una versione leggermente diversa. Consiglio di leggere la documentazione prima di utilizzare le nostre istruzioni per creare nuovi account utente in Linux.
Quando eseguiamo il comando ‘useradd‘ nel terminale Linux, esegue le seguenti attività principali:
- Modifica i file /etc/passwd, /etc/shadow, /etc/group e /etc/gshadow per gli account utente appena creati.
- Crea e popola una directory home per il nuovo utente.
- Imposta i permessi e le proprietà sulla directory home.
Comando Useradd Sintassi
La sintassi base del comando ‘useradd‘ è:
useradd [options] username
In questo articolo, mostreremo le 15 ‘useradd’ più comunemente utilizzate con esempi pratici in Linux.
1. Come Aggiungere un Nuovo Utente in Linux
Per aggiungere o creare un nuovo utente, è necessario utilizzare il comando ‘useradd‘ o ‘adduser‘ seguito dal ‘username‘. Il ‘username‘ è il nome di accesso che un utente utilizza per accedere al sistema.
Può essere aggiunto un solo utente, e il nome utente deve essere unico e non già esistente sul sistema.
Ad esempio, per aggiungere un nuovo utente chiamato ‘tecmint‘ utilizzare il seguente comando:
useradd tecmint
Quando aggiungiamo un nuovo utente in Linux con il comando ‘useradd‘, viene creato in uno stato bloccato. Per sbloccare quell’account utente, è necessario impostare una password per quell’account utilizzando il comando ‘passwd‘
passwd tecmint Changing password for user tecmint. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.

Una volta creato un nuovo utente, il suo ingresso viene aggiunto automaticamente al file ‘/etc/passwd‘. Questo file viene utilizzato per memorizzare le informazioni dell’utente, e l’ingresso dovrebbe essere.
tecmint:x:1000:1000:tecmint:/home/tecmint:/bin/bash

L’ingresso sopra contiene un set di sette campi separati da due punti, ogni campo avente il proprio significato.
Vediamo quali sono questi campi:
- Username – Il nome utente di accesso viene utilizzato per accedere al sistema. Dovrebbe essere lungo tra 1 e 32 caratteri.
- Password – La password dell’utente (o il carattere
'x'
) è memorizzata nel file ‘/etc/shadow‘ in formato crittografato. - User ID (UID) – Ogni utente deve avere un User ID (UID), che sta per Numero di Identificazione dell’Utente. Per impostazione predefinita, UID 0 è riservato per l’utente root, e i UID che vanno da 1 a 99 sono riservati per altri account predefiniti. Inoltre, i UID che vanno da 100 a 999 sono riservati per gli account e i gruppi del sistema.
- Group ID (GID) – Il Group ID primario (GID), che sta per Numero di Identificazione del Gruppo, è memorizzato nel file ‘/etc/group‘.
- Informazioni Utente – Questo campo è opzionale e ti permette di definire ulteriori informazioni sull’utente, come il nome completo dell’utente. Queste informazioni possono essere compilate utilizzando il comando finger.
- Directory Home – La posizione assoluta della directory home dell’utente.
- Shell – La posizione assoluta di una shell dell’utente, ovvero /bin/bash.
2. Come Creare un Utente con una Directory Home Diversa
Per impostazione predefinita, il comando ‘useradd‘ crea la directory home dell’utente sotto la directory ‘/home‘ con il nome utente. Ad esempio, come visto sopra, la directory home predefinita per l’utente ‘tecmint‘ è ‘/home/tecmint‘.
Tuttavia, questo comportamento può essere modificato utilizzando l’opzione '-d'
insieme alla posizione della nuova directory home (ad esempio, ‘/data/projects‘). Ad esempio, il seguente comando creerà un utente ‘anusha‘ con una directory home impostata su ‘/data/projects‘.
# useradd -d /data/projects anusha # passwd anusha
Puoi visualizzare la directory home dell’utente e altra informazione relativa all’utente, come ID utente, ID gruppo, shell e commenti usando il seguente comando cat.
cat /etc/passwd | grep anusha anusha:x:1001:1001::/data/projects:/bin/bash

3. Come Creare un Utente con un ID Utente Specifico
In Linux, ogni utente ha il proprio UID (Numero di Identificazione Unico). Per impostazione predefinita, quando creiamo un nuovo account utente in Linux, assegna ID utente 500, 501, 502, e così via.
Tuttavia, possiamo creare utenti con ID utente personalizzati utilizzando l’opzione '-u'
. Ad esempio, il seguente comando creerà un utente ‘navin‘ con un ID utente personalizzato ‘1002‘.
useradd -u 1002 navin
Ora, verifichiamo che l’utente creato abbia un userid definito (1002) utilizzando il seguente comando.
cat /etc/passwd | grep navin navin:x:1002:1002::/home/navin:/bin/bash

NOTA: Assicurarsi che il valore di un ID utente sia univoco da qualsiasi altro utente già creato nel sistema.
4. Come Creare un Utente con un ID Gruppo Specifico
GID (Identificatore Gruppo). Possiamo creare anche utenti con ID gruppo specifici usando l’opzione '-g'
.
In questo esempio, aggiungeremo un utente ‘tarunika‘ con un UID e GID specifici contemporaneamente con l’aiuto delle opzioni '-u'
e '-g'
.
useradd -u 1005 -g tecmint tarunika
Ora, controlla l’ID utente e l’ID gruppo assegnati nel file ‘/etc/passwd‘.
cat /etc/passwd | grep tarunika tarunika:x:1005:1000::/home/tarunika:/bin/bash
Per verificare il GID dell’utente, usa il comando id:
id -gn tarunika

5. Come Aggiungere un Utente a Più Gruppi
L’opzione '-G'
è usata per aggiungere un utente a gruppi aggiuntivi. Ogni nome gruppo è separato da una virgola, senza spazi intermedi.
In questo esempio, stiamo aggiungendo un utente ‘tecmint‘ a più gruppi, come admins, webadmin, e developers.
groupadd admins groupadd webadmin groupadd developers usermod -a -G admins,webadmin,developers tecmint useradd -G admins,webadmin,developers paddy
Successivamente, verifica che i gruppi multipli siano assegnati all’utente con il comando id.
id tecmint uid=1000(tecmint) gid=1000(tecmint) groups=1000(tecmint),1007(admins),1008(webadmin),1009(developers) context=root:system_r:unconfined_t:SystemLow-SystemHigh

6. Come Aggiungere un Utente Senza Directory Home
In alcune situazioni, in cui non vogliamo assegnare directory home per un utente per motivi di sicurezza, la directory home dell’utente sarà root quando effettuano l’accesso a un sistema appena riavviato. Quando un tale utente utilizza il comando ‘su‘, la loro directory di accesso sarà la directory home dell’utente precedente.
Per creare utenti senza le loro home directory, viene utilizzata l’opzione '-M'
. Ad esempio, il seguente comando creerà un utente ‘shilpi‘ senza una directory home.
useradd -M shilpi
Ora, verifichiamo che l’utente sia stato creato senza una directory home usando il comando ls.
ls -l /home/shilpi ls: cannot access /home/shilpi: No such file or directory

7. Come Creare un Utente con una Data di Scadenza in Linux
Per default, quando aggiungiamo utenti con il comando ‘useradd‘, l’account utente non scade mai, il che significa che la loro data di scadenza è impostata su 0 (che significa mai scaduto).
Tuttavia, possiamo impostare la data di scadenza utilizzando l’opzione '-e'
, che dovrebbe essere nel formato YYYY-MM-DD. Questo è utile per creare account temporanei per un periodo di tempo specifico.
In questo esempio, creiamo un utente ‘aparna‘ con una data di scadenza dell’account, che è il 27 agosto 2021, nel formato YYYY-MM-DD.
useradd -e 2021-08-27 aparna
Successivamente, verifichiamo le informazioni di invecchiamento dell’account e della password utilizzando il comando ‘chage‘ per l’utente ‘aparna‘ dopo aver impostato la data di scadenza dell’account.
chage -l aparna Last password change : Jun 25, 2021 Password expires : never Password inactive : never Account expires : Aug 27, 2021 Minimum number of days between password change : 0 Maximum number of days between password change : 99999 Number of days of warning before password expires : 7

8. Come Creare un Utente con una Data di Scadenza della Password
L’argomento '-f'
viene utilizzato per definire il numero di giorni dopo la scadenza di una password. Un valore di 0 disattiva l’account utente non appena la password è scaduta. Per impostazione predefinita, il valore di scadenza della password è impostato su -1
, il che significa che non scade mai.
In questo esempio, imposteremo una data di scadenza della password dell’account, che è di 45 giorni, per un utente ‘mansi‘ utilizzando le opzioni '-e'
e '-f'
.
useradd -e 2014-04-27 -f 45 mansi

9. Come Aggiungere un Utente con Commenti in Linux
L’opzione '-c'
consente di aggiungere commenti personalizzati, come il nome completo dell’utente, il numero di telefono, ecc., al file ‘/etc/passwd‘. Il commento può essere aggiunto come singola riga senza spazi.
Ad esempio, il seguente comando aggiungerà un utente ‘mansi‘ e inserirà il nome completo di quell’utente, Manis Khurana, nel campo commento.
useradd -c "Manis Khurana" mansi
È possibile visualizzare il commento inserito nel file ‘/etc/passwd‘ nella sezione dei commenti utilizzando il comando tail.
tail -1 /etc/passwd mansi:x:1010:1013:Manis Khurana:/home/mansi:/bin/sh

10. Come Creare una Shell di Accesso Utente in Linux
A volte, aggiungiamo utenti che non hanno nulla a che fare con la shell di accesso o talvolta ci viene richiesto di assegnare shell diverse ai nostri utenti. Possiamo assegnare diverse shell di accesso a ciascun utente con l’opzione ‘-s‘.
Ecco un esempio in cui aggiungeremo un utente ‘tecmint‘ senza un login shell, cioè con shell ‘/sbin/nologin‘.
useradd -s /sbin/nologin tecmint
Puoi controllare la shell assegnata all’utente nel file ‘/etc/passwd‘.
tail -1 /etc/passwd tecmint:x:1011:1014::/home/tecmint:/sbin/nologin

11. Come Creare un Utente con Home, Shell e Commento Specificati
Il seguente comando creerà un utente ‘ravi‘ con una directory home ‘/var/www/tecmint‘, una shell predefinita ‘/bin/bash‘, e informazioni aggiuntive sull’utente.
useradd -m -d /var/www/ravi -s /bin/bash -c "TecMint Owner" -U ravi

Nel comando sopra, le opzioni '-m'
e '-d'
creano un utente con una directory home specificata, e l’opzione '-s'
imposta la shell predefinita dell’utente su ‘/bin/bash‘. L’opzione '-c'
aggiunge informazioni extra sull’utente e l’argomento '-U'
crea/aggiunge un gruppo con lo stesso nome dell’utente.
12. Come Creare un Utente con Home, Shell, Commento, UID/GID Definiti
Il comando è molto simile a quello sopra, ma qui definiamo la shell come ‘/bin/zsh‘ e impostiamo un UID e un GID personalizzati per un utente ‘tarunika’. L’opzione '-u'
definisce l’UID del nuovo utente (cioè, 100), e l’opzione '-g'
definisce il GID (cioè, 1000).
useradd -m -d /var/www/tarunika -s /bin/zsh -c "TecMint Technical Writer" -u 1000 -g 100 tarunika

13. Come Creare un Utente con Home, Senza Shell, Commento e UID
Il seguente comando è molto simile ai due precedenti. L’unica differenza è che qui abbiamo disabilitato la shell di accesso per un utente chiamato ‘avishek‘ con un ID utente personalizzato (cioè 1019).
L’opzione '-s'
imposta la shell predefinita su /bin/bash, ma in questo caso, abbiamo impostato la shell di accesso su ‘/usr/sbin/nologin‘. Ciò significa che l’utente ‘avishek‘ non sarà in grado di accedere al sistema.
useradd -m -d /var/www/avishek -s /usr/sbin/nologin -c "TecMint Sr. Technical Writer" -u 1019 avishek

14. Come Creare un Utente con una Home, Shell, Skeleton e UID Specifici
L’unica modifica in questo comando è che abbiamo utilizzato l’opzione '-k'
per impostare la directory skeleton personalizzata su /etc/custom.skell invece di quella predefinita, /etc/skel. Abbiamo anche utilizzato l’opzione '-s'
per definire una shell diversa, /bin/tcsh, per l’utente ‘navin‘.
useradd -m -d /var/www/navin -k /etc/custom.skell -s /bin/tcsh -c "No Active Member of TecMint" -u 1027 navin

15. Come Creare un Utente senza Home, Shell o Gruppo, con Commento
Il seguente comando è molto diverso dagli altri comandi spiegati sopra. Qui abbiamo utilizzato l’opzione '-M'
per creare un utente senza la directory home dell’utente, e l’opzione '-N'
è utilizzata per istruire il sistema a creare solo un nome utente (senza un gruppo). L’opzione '-r'
serve per creare un utente di sistema.
useradd -M -N -r -s /bin/false -c "Disabled TecMint Member" clayton

Per ulteriori informazioni e opzioni su ‘useradd‘, eseguire il comando ‘useradd‘ nel terminale per vedere le opzioni disponibili.
useradd
Se desideri modificare gli attributi dell’account utente come modificare il nome utente, l’ID utente (UID), la directory home, la shell e altro ancora, utilizza il comando usermod.