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
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
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
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"
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
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
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
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
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
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
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
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
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
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
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
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à.