Quando più persone lavorano sullo stesso sistema Linux è importante creare un account distino per ogni utente, di modo che ognuno disponga di un'area personale separata dagli altri. Allo stesso modo, quando eseguiamo processi accessibili tramite la rete, è altrettanto consigliabile che ognuno impieghi un utente dedicato e limitato a quello specifico servizio. In questo articolo vedremo dunque come creare un utente Linux da linea di comando, tramite adduser oppure useradd. La procedura è stata testata su Ubuntu Server, ma è analoga con qualsiasi distribuzione

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser - ubuntu linux useradd

nota: in questo articolo vedremo, nello specifico, come aggiungere un utente ad un sistema Linux, tramite la linea di comando. Se stai usando una distribuzione "desktop", puoi raggiungere il medesimo risultato anche tramite l'interfaccia grafica. Abbiamo visto come fare qui:

» Leggi: Guida Ubuntu: come creare/aggiungere un nuovo account utente (protetto da password)

Creare un utente Linux con adduser

Il modo più semplice per creare un nuovo account utente su Linux è tramite il comando

sudo adduser nuovoNomeUtente

Una volta impartito, ci verrà chiesto di digitare la password dell'account corrente per ottenere i privilegi di root.

A questo punto dovremo scegliere la password del nuovo utente. Digitiamola, senza preoccuparci del fatto che il terminale non mostri nulla mentre premiamo le lettere (è normale che sia così). Al termine, premiamo Invio, poi digitiamo di nuovo la stessa password per conferma

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

Subito dopo, ci viene offerta la possibilità di immettere alcune informazioni personali sul nuovo utente: nome completo, numeri di telefono eccetera. Sono tutti dati facoltativi: generalmente, vorremo battere rapidamente Invio per arrivare al passaggio di conferma conclusivo.

Non appena ci viene mostrato il messaggio Is the information correct? battere la lettera Y e poi Invio

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

A questo punto, l'utente è stato creato ed è pronto all'uso.

Creare un utente Linux con useradd

adduser è la scelta migliore nei casi in cui vogliamo creare un nuovo utente in modo "interattivo". In alcune circostanze potrebbe però essere più pratico preferire useradd:

sudo useradd nuovoNomeUtente --create-home -s /bin/bash

Alcune osservazioni:

  • --create-home: è importante esplicitarla. In caso contrario, potrebbe (dipende dalla specifica distribuzione) non essere creata la cartella "home" dell'utente (/home/nuovoNomeUtente)
  • -s /bin/bash: se non lo indichiamo, il nuovo utente si ritroverà con una shell diversa dalla classica "Bash"

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

Questo comando crea immediatamente l'utente, senza farci alcuna domanda.

Da notare che, in questo momento, l'utente non può ancora eseguire login al sistema, poiché non gli abbiamo ancora associato alcuna password. Per rimediare, impartire:

sudo passwd nuovoNomeUtente

Scegliamo ora una password per l'utente, poi digitiamola di nuovo per conferma

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

L'account utente è pronto all'uso.

Creare un utente Linux con la "home"... fuori da /home

Generalmente è una buona idea lasciare tutte le cartelle "home" dei singoli utenti sotto /home. In alcuni casi, però, potremmo voler creare un utente la cui cartella "home" si trovi in un percorso a piacere. Il comando è analogo al precedente, ma aggiungiamo --home seguito dal percorso nel quale creare la home

sudo useradd nuovoNomeUtente --create-home --home /var/www/homeNuovoUtente -s /bin/bash

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

Da notare che, se il percorso completo che porta alla cartella non esiste, verrà creato. In tal caso, il comando mostra un avviso, ma l'operazione si conclude comunque con successo.

Creare un utente Linux e aggiungerlo ad un gruppo specifico

Ogni volta che creiamo un utente tramite i comandi mostrati in questa guida, viene automaticamente creato anche un gruppo con lo stesso nome. L'utente viene poi assegnato a tale gruppo.

Per fare in modo che l'utente venga assegnato ad un gruppo specifico, otteniamo innanzitutto la lista dei gruppi disponibili:

cat /etc/group

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

Ora non ci resta altro da fare se non lanciare il comando visto in precedenza, con l'aggiunta dell'opzione -g nomeGruppo:

sudo useradd nuovoNomeUtente --create-home -s /bin/bash -g nomeGruppo

Verifichiamo poi che l'operazione sia andata a buon fine visualizzando il nome del gruppo al quale appartiene l'utente appena creato:

id -gn nuovoNomeUtente

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

In alcune circostanze specifiche vorremo anche assegnare l'utente ad uno o più gruppi secondari. In tal caso, si usa -G nomeGruppo1,nomeGruppo2,nomeGrouppo3:

sudo useradd nuovoNomeUtente --create-home -s /bin/bash -g www-data -G users,staff,games

Per vedere la lista di tutti i gruppi di un utente, compresi quelli secondari, si lancia semplicemente:

id nuovoNomeUtente

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

Creare un utente Linux e consentirgli di fare "sudo"

Come caso particolare dell'esempio precedente, potremmo voler consentire al nuovo utente di eseguire comandi con i privilegi di root, cioè anteponendo sudo al comando. Allo scopo, il nuovo utente deve essere aggiunto al gruppo sudo:

sudo useradd nuovoNomeUtente --create-home -s /bin/bash -G sudo

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

Creare un utente Linux con data di scadenza

Mi capita molto spesso di vedere account Linux "temporanei", creati per consentire l'accesso a collaboratori esterni solo per pochi giorni, che vengono dimenticati e rimangono attivi per anni. Tutto questo può essere evitato creando un account con data di scadenza.

Il comando è sempre il solito, ma con l'aggiunta dell'opzione --expiredate AAAA-MM-GG (ovvero: "anno" (4 cifre), "mese" (2 cifre), "giorno" (2 cifre) di scadenza):

sudo useradd nuovoNomeUtente --create-home -s /bin/bash --expiredate 2030-12-31

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

Al sopraggiungere della data indicata, l'account smetterà di consentire il login.

Creare un utente Linux "di sistema" (senza login)

Quando dobbiamo lanciare un programma che dovrà rimanere in esecuzione per molto tempo ed interagire con la rete (come, ad esempio, un webserver, un database ecc.) è una buona idea creare un utente dedicato al processo stesso. Allo scopo, creiamo un utente senza possibilità di eseguire login al sistema:

sudo useradd --no-create-home --shell /bin/false --system nuovoNomeUtente

Dove:

  • --no-create-home: impedisce la creazione della cartella "home". È spesso il default, ma non sempre, motivo per cui è bene esplicitarlo
  • --shell /bin/false: impostiamo la shell dell'utente ad un programma che ritorna semplicemente "falso", impedendo di fatto il login
  • --system: indica appunto che si tratta di un utente "di sistema" - non fa nessuna reale differenza pratica rispetto ad omettere l'argomento, ma è una buona idea per organizzarli al meglio

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

Alcune guide indicano di usare /usr/sbin/nologin al posto di /bin/false. Vi sono alcune sottigliezze fra le due, ma il risultato è analogo: in entrambi i casi, questo utente non potrà eseguire login al PC e potrà essere utilizzato soltanto per eseguire specifici programmi o servizi.

Ottenere una lista di tutti gli utenti Linux

Dopo un po' che si "smanetta" con adduser e useradd è facile dimenticare quali utenti sono stati creati. Per ottenere una lista di tutti gli utenti presenti sul sistema Linux basta impartire:

cat /etc/passwd

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

Da notare che, in questa lista, vi sono anche molti utenti "di sistema", che sono stati creati automaticamente quando abbiamo installato la nostra distribuzione, oppure dagli script di installazione dei pacchetti aggiuntivi o, ancora, tramite il comando sopra indicato. Per escluderli dalla visualizzazione e ottenere una lista "pulita" dei soli utenti autorizzati ad eseguire login, possiamo usare:

cat /etc/passwd | grep -v /false | grep -v /nologin | grep -v /sync

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

Come eliminare un utente Linux

Infine, vediamo come eliminare completamente un utente:

sudo userdel -r -f nomeUtenteDaEliminare

Dove:

  • -r: elimina anche la cartella "home" dell'utente
  • -f: elimina la cartella "home" dell'utente anche se contiene file che hanno come proprietario un altro utente

Linux/Ubuntu: come creare utente linea comando - guida rapida useradd adduser

Da notare che il comando potrebbe mostrare un avviso simile a:

userdel: nomeUtenteDaEliminare mail spool (/var/mail/nomeUtenteDaEliminare) not found

Non è nulla di cui preoccuparsi: la cancellazione è comunque andata a buon fine.

Conclusioni

In questa guida abbiamo visto come creare un nuovo utente Linux da linea di comando. Non si tratta sicuramente di un'operazione che siamo chiamati a svolgere quotidianamente, ma è sicuramente il caso di conoscere questi comandi per i casi di necessità.