Introduzione

Linux è un sistema multiutente, ovvero più di una persona può interagire con lo stesso sistema contemporaneamente. Come amministratore di sistema, hai la responsabilità di gestire gli utenti e i gruppi del sistema creando e rimuovendo gli utenti e assegnandoli a diversi gruppi.

Su Linux, è possibile creare un account utente e assegnare l'utente a diversi gruppi utilizzando il comando useradd. useradd è un'utilità di basso livello, gli utenti Debian e Ubuntu probabilmente useranno invece il comando adduser.

In questo articolo, parleremo di come utilizzare il comando useradd ed esplorare le sue opzioni.

Sintassi del comando Useradd

La sintassi generale per il comando useradd è la seguente:

useradd [OPTIONS] USERNAME

Per poter utilizzare il comando useradd e creare nuovi utenti è necessario aver effettuato l'accesso come root o come utente con accesso sudo.

Quando viene richiamato, useradd crea un nuovo account utente utilizzando le opzioni specificate nella riga di comando più i valori predefiniti specificati nel file /etc/default/useradd.

Le variabili definite in questo file differiscono da distribuzione a distribuzione, il che fa sì che il comando useradd produca risultati diversi su sistemi diversi.

Il comando legge anche il contenuto del file /etc/login.defs. Questo file contiene la configurazione per la suite di password shadow, ad esempio criteri di scadenza della password, intervalli di ID utente utilizzati durante la creazione del sistema e utenti regolari e altro.

Come creare un nuovo utente in Linux

Per creare un nuovo account utente digitare useradd seguito dal nome utente.

Ad esempio, per creare un nuovo utente di nome username  eseguire questo comando:

sudo useradd username

Nella sua forma più semplice se usato senza alcuna opzione, useradd creerà un nuovo account utente con le impostazioni predefinite specificate nel file/etc/default/useradd.

Il comando aggiunge una voce ai file /etc/passwd, /etc/shadow,/etc/group e /etc/gshadow.

Per poter accedere con l'utente appena creato, è necessario impostare la password dell'utente. Per farlo, esegui il comando passwd seguito dal nome utente:

sudo passwd username

Ti verrà richiesto di inserire e confermare la password. Assicurati di utilizzare una password complessa.

Changing password for user username.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

Come aggiungere un nuovo utente e creare la home directory

Nella maggior parte delle distribuzioni Linux, quando si crea un nuovo account utente con il comando useradd, la home directory dell'utente non viene creata.

Utilizzare l'opzione -m( --create-home) per creare la home directory dell'utente come /home/username:

sudo useradd -m username

Il comando sopra crea la home directory del nuovo utente e copia i file dalla directory /etc/skel alla home directory dell'utente. Se si elencano i file nella directory /home/username, verranno visualizzati i file di inizializzazione:

ls -la /home/username/
drwxr-xr-x 2 username username 4096 Dec 11 11:23 .
drwxr-xr-x 4 root     root     4096 Dec 11 11:23 ..
-rw-r--r-- 1 username username  220 Apr  4  2018 .bash_logout
-rw-r--r-- 1 username username 3771 Apr  4  2018 .bashrc
-rw-r--r-- 1 username username  807 Apr  4  2018 .profile

All'interno della home directory, l'utente può scrivere, modificare ed eliminare file e directory.

Creazione di un utente con home directory specifica

Se si desidera creare la directory home dell'utente in un'altra posizione, la directory predefinita /home  utilizza l'opzione d( --home).

Ad esempio, per creare un nuovo utente denominato username con una home directory /opt/username è necessario eseguire il comando seguente:

sudo useradd -m -d /opt/username username

Creazione di un utente con ID utente specifico

Nei sistemi operativi Linux e Unix, gli utenti sono identificati da UID e nome utente univoci.

L'identificatore utente (UID) è un numero intero positivo univoco assegnato dal sistema Linux a ciascun utente. L'UID insieme ad altri criteri di controllo dell'accesso viene utilizzato per determinare i tipi di azioni che un utente può eseguire sulle risorse di sistema.

Per impostazione predefinita, quando viene creato un nuovo utente, il sistema assegna il successivo UID disponibile dall'intervallo di ID utente specificato nel file login.defs.

Utilizzare l'opzione -u( --uid) per creare un utente con un UID specifico. Ad esempio, per creare un nuovo utente denominato username con UID 1500, digitare:

sudo useradd -u 1500 username

Puoi verificare l'UID dell'utente, usando il comando id:

id -u username
1500

Creazione di un utente con ID gruppo specifico

I gruppi Linux sono unità organizzative che vengono utilizzate per organizzare e amministrare gli account utente in Linux. Lo scopo principale dei gruppi è definire un insieme di privilegi come lettura, scrittura o esecuzione dell'autorizzazione per una determinata risorsa che può essere condivisa tra gli utenti all'interno del gruppo.

Quando si crea un nuovo utente, il comportamento predefinito del comando useradd è quello di creare un gruppo con lo stesso nome del nome utente e lo stesso GID dell'UID.

Utilizzare l'opzione -g( --gid) per creare un utente con uno specifico gruppo di accesso iniziale. È possibile specificare il nome del gruppo o il numero GID. Il nome del gruppo o GID deve già esistere.

Ad esempio per creare un nuovo utente chiamato username e impostare il gruppo di accesso users digitare:

sudo useradd -g users username

Per verificare il GID dell'utente, utilizzare il comando id:

id -gn username
users

Creazione di un utente e assegnazione di più gruppi

Esistono due tipi di gruppi nei sistemi operativi Linux Gruppo primario e Gruppo secondario o supplementare. Ogni utente può appartenere esattamente a un gruppo primario e zero o più gruppi secondari.

L'opzione -G( --groups) consente di specificare un elenco di gruppi supplementari di cui l'utente sarà membro.

Il seguente comando creerà un nuovo utente denominato username con il gruppo primario users e i gruppi secondari wheel e docker.

sudo useradd -g users -G wheel,developers username

È possibile controllare i gruppi di utenti digitando

id username
uid=1002(username) gid=100(users) groups=100(users),10(wheel),993(docker)

Creazione di un utente con shell di accesso specifica

Per impostazione predefinita, la shell di accesso del nuovo utente è impostata su quella specificata nel file /etc/default/useradd. In alcune distribuzioni Linux come Ubuntu 18.04 la shell predefinita è impostata /bin/sh mentre in altre è impostata su /bin/bash.

L'opzione -s( --shell) consente di specificare la shell di accesso del nuovo utente.

Ad esempio per creare un nuovo utente chiamato username con /usr/bin/zsh come tipo di shell di accesso:

sudo useradd -s /usr/bin/zsh username

Controllare la voce dell'utente nel file /etc/passwd per verificare la shell di accesso dell'utente:

grep username /etc/passwd
username:x :1001:1001::/home/username:/usr/bin/zsh

Creazione di un utente con commento personalizzato

L'opzione -c( --comment) consente di aggiungere una breve descrizione per il nuovo utente. In genere il nome completo dell'utente o le informazioni di contatto vengono aggiunti come commento.

Nel seguente esempio stiamo creando un nuovo utente chiamato username con stringa di testo Test User Account come commento:

sudo useradd -c "Test User Account" username

Il commento viene salvato nel file /etc/passwd:

grep username /etc/passwd
username:x :1001:1001:Test User Account:/home/username:/bin/sh

Il campo dei commenti è anche noto come GECOS.

Creazione di un utente con una data di scadenza

L'opzione -e( --expiredate) consente di definire un'ora in cui i nuovi account utente scadranno. Questa opzione è utile per creare account temporanei. La data deve essere specificata usando il formato YYYY-MM-DD.

Ad esempio, per creare un nuovo account utente denominato username con tempo di scadenza impostato su 05 gennaio 2020, eseguire:

sudo useradd -e 2022-01-05 username

È possibile utilizzare il comando chage per verificare la data di scadenza dell'account utente:

sudo chage -l username

L'output sarà simile al seguente:

Last password change					: Dec 11, 2018
Password expires					: never
Password inactive					: never
Account expires						: Jan 05, 2020
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

Creazione di un utente di sistema

Non vi è alcuna reale differenza tecnica tra il sistema e gli utenti normali (normali). In genere, gli utenti del sistema vengono creati durante l'installazione del sistema operativo e dei nuovi pacchetti.

In alcune situazioni, potrebbe essere necessario creare un utente di sistema che verrà utilizzato da alcune applicazioni.

Utilizzare l'opzione -r( --system) per creare un account utente di sistema. Ad esempio, per creare un nuovo utente di sistema chiamato username è necessario eseguire:

sudo useradd -r username

Gli utenti del sistema vengono creati senza data di scadenza. I loro UID sono scelti dall'intervallo di ID utente di sistema specificato nel file login.defs che è diverso dall'intervallo utilizzato per gli utenti normali.

Modifica dei valori predefiniti di useradd

Le opzioni di useradd predefinite possono essere visualizzate e modificate utilizzando l'opzione -D, --defaults o modificando manualmente i valori nel file /etc/default/useradd.

Per visualizzare le opzioni predefinite correnti digitare:

useradd -D

L'output sarà simile al seguente:

GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/sh
SKEL=/etc/skel
CREATE_MAIL_SPOOL=no

Supponiamo che tu voglia modificare la shell di accesso predefinita da /bin/sh a /bin/bash. Per fare ciò, specifica la nuova shell come mostrato di seguito:

sudo useradd -D -s /bin/bash

È possibile verificare che il valore della shell predefinito venga modificato eseguendo il comando seguente:

sudo useradd -D | grep -i shell
SHELL=/bin/bash

Conclusione

In questo tutorial, ti abbiamo mostrato come creare nuovi account utente usando il comando useradd.