Gestire gli utenti in Linux: i comandi useradd, userdel, usermod
Per poter accedere ad un sistema linux, in locale o in remoto, è necessario creare un utente, definendo una coppia nome utente e password.
I tre principali comandi usati per gestire gli utenti sono: useradd, userdel e usermod.
Creare un utente: useradd
Il comando useradd si utilizza per creare un nuovo utente.
E' sufficiente utilizzare useradd seguito dal nome utente che si vuole creare. Ad esempio se vogliamo creare l'utente pippo digiterò:
# useradd pippo
Utilizzando il comando useradd vengono eseguite, tra le altre, queste operazioni:
- Vengono modificati i file /etc/passwd, /etc/shadow, /etc/group e /etc/gshadow per l'account utente appena creato.
- Viene creata e popolata una directory "home" per il nuovo utente.
- Vengono impostati i permessi e le proprietà sulla directory "home".
Dopo aver creato l'utente, dobbiamo assegnargli la password con il comando passwd seguito dal nome utente appena creato. Il sistema ci chiederà di inserire due volte la password.
# passwd pippo
Changing password for user pippo.
New UNIX password:
Retype new UNIX password:
passwd: all authentication tokens updated successfully.
La password, criptata, viene salvata nel file "/etc/shadow".
Come detto, la creazione di un utente comporta la modifica del file "/etc/passwd". In particolare in questo file verrà aggiunto il nuovo utente (una riga per ogni utente creato) con una serie di informazioni a lui associate.
Questo è un esempio di riga contenuta del file "/etc/passwd" per il nuovo utente pippo
pippo:x:504:504:pippo:/home/pippo:/bin/bash
Vediamo nel dettaglio il suo contenuto
- Username: è il nome utente, la cui lunghezza deve essere compresa tra 1 e 32 caratteri.
- Password: la password dell'utente (o il carattere x) salvata nel file "/etc/shadow" in formato criptato.
- User ID (UID): ogni utente ha un UID, User Identification Number. Di default l'UID 0 è assegnato all'utente root, e UID da 1 a 99 sono riservati ad utilizzi di sistema. Gli UID da 100 a 999 sono riservati agli account di sistema e gruppi. Nel nostro esempio è stato assegnato l'UID 504
- Group ID (GID): è il Group ID (GID), o Group Identification Number, salvato nel file "/etc/group".
- User Info: è un campo opzionale e può essere usato per indicare informazioni aggiuntive come il nome utente completo.
- Home Directory: è il path assoluto alla home directory dell'utente.
- Shell: è il path assoluto della shell dell'utente, ad esempio "/bin/bash".
Utilizzando il comando useradd, seguito semplicemente dal nome utente, senza opzioni, verranno assegnate alcune impostazioni di default come ad esempio la home directory, la shell, e il gruppo di appartenza. Le impostazioni di default vengono recuperate dal file "/etc/login.defs". Per conoscere queste impostazioni o apriamo questo file, oppure utilizziamo l'opzione "-D"
# useradd -D
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
E' tuttavia possibile personalizzale queste impostazioni utilizzando, assieme al comando useradd, alcune opzioni. Vediamo le principali.
Opzione "-d": con questa opzione è possibile definire la home directory dell'utente.
Di default, la directory home viene sempre creata, in quando così è definito nel file di configurazione "/etc/login.defs", e verrà creata sotto la directory "home" ed avrà, come nome, il nome dell'utente. Se vogliamo assegnare all'utente una home directory differente, ad esempio "/home/lamiadirectory", utilizziamo questa opzione:
# useradd -d /home/lamiadirectory pippo
Opzione "-M": non creare la home directory dell'utente
Per non creare la home directory dell'account utilizziamo questa opzione
# useradd -M pippo
Opzione "m": creare la home directory dell'utente
Di default, la directory home viene sempre creata, in quando così è definito nel file di configurazione "/etc/login.defs". Ma se questo file fosse configurato in modo da NON creare di default una home directory, questa opzione consente di creare la home directory. Ad esempio se voglio creare una home directory "/home/test" userò questo comando
# useradd -m -d /home/test pippo
Opzione "-g": assegnamo l'utente ad uno specifico gruppo (GID)
Per assegnare l'utente ad un determinato gruppo id (GID), ad esempio al gruppo "500", utilizziamo questo comando
# useradd -g 500 pippo
Opzione "-u": assegnamo uno specifico UID all'utente, ad esempio l'UID "1000"
# useradd -u 1000 pippo
Opzione -"s": assegnamo all'utente una specifica shell
Per ad esempio vogliamo assegnare all'utente la shell "/bin/csh" utilizziamo questo comando
# useradd -s "/bin/csh" pippo
Per NON assegnare una shell utilizziamo
# useradd -s "/sbin/nologin" pippo
Opzione "-e": definiamo la scadenza dell'account
Se ad esempio vogliamo che l'account scada il giorno 25/04/2019, utilizziamo questo comando (il formato è ANNO-MESE-GIORNO)
# useradd pippo -e 2019-04-25
Opzione "-f": assegnare una scadenza alla password
Con questa opzion è possibile assegnare una scadenza alla password assegnata all'utente. In questo esempio scadrà tra 6 giorni.
# useradd pippo -f 6
Per avere informazioni in merito alla password utilizziamo il comando "chage -l" seguito dal nome account a cui siamo interessati:
# chage -l pippo
Last password change : Jun 20, 2018
Password expires : never
Password inactive : never
Account expires : Jul 01, 2019
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
Abbiamo visto come usare le opzioni singolarmente, ma ovviamente in fase di creazione di un account possiamo combinare assieme tutte queste opzioni, ad esempio così
# useradd pippo -d /home/lamiadirectory -g 500 -u 1000 -s "/sbin/nologin" -e 2019-04-25 -f 6
Per l'elenco completo delle opzioni si rimanda al manuale di useradd
NOTA: in Linux esiste anche il comando adduser, simile a useradd, perché è un collegamento simbolico ad esso.
Usermod: modificare un utente
Questo comando ha un utilizzo similare ad useradd, con la differenza che agisce su un account già creato e lo modifica. Le opzioni sono le medesime di useradd.
Ad esempio se voglio modificare la home directory dell'utente "pippo" lo utilizzerò così
# usermod -d /home/newpippo pippo
In aggiunta abbiamo altre opzioni tra cui quella per bloccare un account "-L" (lock) e sbloccare un account bloccato "-U" (unlock)
Ad esempio per bloccare l'utente pippo:
# usermod -L pippo
E per sbloccarlo:
# usermod -U pippo
Userdel: cancellazione di un utente
Per rimuovere un account è sufficiente utilizzare il comando "userdel" seguito dal nome utente da cancellare
# userdel pippo
Questo comando tuttavia non cancella la home directory dell'utente. Per cancellarla, assieme a tutto il suo contenuto, utilizziamo l'opzione "-r"
# userdel -r pippo
Se l'utente fosse loggato mentre vogliamo cancellare il suo account, invece di "-r" utilizziamo l'opzione "-f"
# userdel -f pippo