Lab 6: Gestione Utenti e Gruppi
Obiettivi¶
Dopo aver completato questo laboratorio, si sarà in grado di:
- Aggiungere e rimuovere utenti dal sistema
- Aggiungere e rimuovere gruppi dal sistema
- Modificare utenti e gruppi sul sistema
- Cambiare la password
Tempo stimato per terminare il laboratorio: 40 minuti
Account utente¶
La gestione degli utenti è importante in qualsiasi sistema operativo di rete multiutente. Linux è un sistema operativo di rete multiutente. Senza gli utenti, non ci sarebbe bisogno di un sistema operativo di rete multiutente!
La gestione degli utenti su un sistema è strettamente legata alla sicurezza del sistema stesso. C'è un vecchio proverbio che dice:
Un sistema è tanto sicuro quanto il suo utente più debole.
Linux eredita la vecchia tradizione UNIX di governare l'accesso a file, programmi e altre risorse in base ad utente e gruppi.
Proprio come tutte le altre configurazioni in Linux, la gestione degli utenti può essere effettuata modificando i file di configurazione che possono essere trovati nella gerarchia del file system. Questo laboratorio esplorerà la gestione degli utenti attraverso il metodo manuale e anche con l'uso delle utility di sistema.
Esamineremo anche in breve la proprietà e i permessi dei file.
Di seguito i file importanti per la gestione di utenti e gruppi. Vengono discussi anche alcuni campi o voci dei file.
/etc/passwd¶
- Scopo: informazioni sull'account utente
- Contenuto:
- username
- password criptata
- id utente (UID)
- id del gruppo (GID)
- nome completo dell'utente
- home directory dell'utente
- shell di default
/etc/shadow¶
- Scopo: proteggere le informazioni dell'account utente
- Contenuto:
- nome di login
- hash della password
- numero di giorni relativi all'ultimo cambio password, a partire dal 01/01/1970
- giorni prima dei quali la password non può essere modificata. Generalmente è pari a zero.
- numero di giorni dopo i quali la password deve essere cambiata
- numero di giorni antecedenti alla scadenza della password in cui l'utente viene avvertito che la password sta per scadere
- numero di giorni successivi alla scadenza della password, in cui l'account è considerato inattivo e disabilitato
- giorni a partire dal 1/01/1970 di quando l'account sarà disabilitato
- riservato
/etc/group¶
- Scopo: informazioni sui gruppi
- Contenuto:
- nome del gruppo
- password del gruppo
- id del gruppo (GID)
- elenco degli utenti appartenenti al gruppo
/etc/skel¶
- Scopo: contiene dei template da applicare ai nuovi account
Utilità comuni¶
Di seguito sono elencate alcune utilità comunemente utilizzate nelle attività quotidiane di gestione degli utenti e dei gruppi:
useradd¶
-
Il comando
useraddè uno strumento di gestione degli utenti che consente agli amministratori di sistema di creare nuovi account utente direttamente dalla riga di comando.Usage: useradd [options] LOGIN useradd -D useradd -D [options] Options: --badname do not check for bad names -b, --base-dir BASE_DIR base directory for the home directory of the new account --btrfs-subvolume-home use BTRFS subvolume for home directory -c, --comment COMMENT GECOS field of the new account -d, --home-dir HOME_DIR home directory of the new account -D, --defaults print or change default useradd configuration -e, --expiredate EXPIRE_DATE expiration date of the new account -g, --gid GROUP name or ID of the primary group of the new account -G, --groups GROUPS list of supplementary groups of the new account -h, --help display this help message and exit -k, --skel SKEL_DIR use this alternative skeleton directory -K, --key KEY=VALUE override /etc/login.defs defaults -l, --no-log-init do not add the user to the lastlog and faillog databases -m, --create-home create the user's home directory -M, --no-create-home do not create the user's home directory -N, --no-user-group do not create a group with the same name as the user -o, --non-unique allow to create users with duplicate (non-unique) UID -p, --password PASSWORD encrypted password of the new account -r, --system create a system account -R, --root CHROOT_DIR directory to chroot into -P, --prefix PREFIX_DIR prefix directory where are located the /etc/* files -s, --shell SHELL login shell of the new account -u, --uid UID user ID of the new account -U, --user-group create a group with the same name as the user -Z, --selinux-user SEUSER use a specific SEUSER for the SELinux user mapping
groupadd¶
-
Il comando
groupaddè un'utilità per la gestione dei gruppi di utenti sul sistema. Disponibile nella maggior parte delle distribuzioni Linux, questo comando consente agli amministratori di creare nuovi gruppi, specificando opzioni quali il GID (Group ID), il nome del gruppo e altre proprietà.Usage: groupadd [options] GROUP Options: -f, --force exit successfully if the group already exists, and cancel -g if the GID is already used -g, --gid GID use GID for the new group -h, --help display this help message and exit -K, --key KEY=VALUE override /etc/login.defs defaults -o, --non-unique allow to create groups with duplicate (non-unique) GID -p, --password PASSWORD use this encrypted password for the new group -r, --system create a system account -R, --root CHROOT_DIR directory to chroot into -P, --prefix PREFIX_DIR directory prefix -U, --users USERS list of user members of this group
passwd¶
-
Il comando
passwdè uno strumento per la gestione delle password degli utenti. Consente agli utenti di modificare le proprie password, mentre gli amministratori (root) possono reimpostare le password di altri account, gestire la scadenza delle password e configurare le politiche di sicurezza.Usage: passwd [OPTION...] <accountName> Options: -k, --keep-tokens keep non-expired authentication tokens -d, --delete delete the password for the named account (root only); also removes password lock if any -l, --lock lock the password for the named account (root only) -u, --unlock unlock the password for the named account (root only) -e, --expire expire the password for the named account (root only) -f, --force force operation -x, --maximum=DAYS maximum password lifetime (root only) -n, --minimum=DAYS minimum password lifetime (root only) -w, --warning=DAYS number of days warning users receives before password expiration (root only) -i, --inactive=DAYS number of days after password expiration when an account becomes disabled (root only) -S, --status report password status on the named account (root only) --stdin read new tokens from stdin (root only) Help options: -?, --help Show this help message --usage Display brief usage message
Esercizi¶
1. Creare manualmente un nuovo utente¶
Finora, durante i laboratori precedenti, si è utilizzato il sistema come utente con i privilegi più elevati, ovvero l'utente root. Questa non è una buona pratica in un sistema di produzione perché rende il sistema vulnerabile dal punto di vista della sicurezza. L'utente root può causare danni illimitati al sistema, sia in modo permanente che temporaneo.
Ad eccezione del superutente, tutti gli altri utenti hanno un accesso limitato ai file e alle directory. Utilizzare sempre il computer come un utente normale. Due concetti confusi saranno chiariti qui.
- In primo luogo, la directory home dell'utente root è
/root. - In secondo luogo, la directory principale è la directory più alta, nota come directory
/(barra). (/rootè diverso da/“)
In questo laboratorio si creerà un nuovo utente chiamato "Me Mao". Il nome utente per "Me Mao" sarà il nome proprio - “me”. Questo nuovo utente apparterrà al gruppo “me”. La password sarà “a1b2c3”
Attenzione
Le configurazioni di sistema sono solitamente conformi a un formato specifico. È sempre importante attenersi a questo formato quando si modificano manualmente i file di configurazione. Un modo per farlo è trovare e copiare una voce esistente nel file, quindi modificare la riga/sezione copiata con le nuove modifiche. Questo aiuterà a ridurre le possibilità di commettere errori.
-
Log in nel computer come root
-
Utilizzare il comando
tailper visualizzare le ultime 4 voci nella parte inferiore del file/etc/passwd.[root@localhost root]# tail -n 4 /etc/passwd apache:x:48:48:Apache:/var/www:/sbin/nologin xfs:x:43:43:X Font Server:/etc/X11/fs:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin gdm:x:42:42::/var/gdm:/sbin/nologin
Modificare il file passwd utilizzando il formato sopra riportato.
Creare l'utente¶
-
Sarà necessario modificare il file
/etc/passwd.Avviare l'editor preferito e aprire il file
/etc/passwdAggiungere il testo sottostante alla fine del file:
me:x:500:500:me mao:/home/me:/bin/bash -
Salvare le modifiche e chiudere il file passwd.
-
Successivamente modificheremo il file
/etc/shadow.
Avviare l'editor e aprire il file/etc/shadow.
Aggiungere una nuova voce come quella riportata di seguito alla fine del file, inserendo un asterisco (*) nel campo della password. Digitare:bash me:x:11898:11898:99999:7 ::: -
Salvare le modifiche e chiudere il file shadow.
-
Modificare ora il file
/etc/group. Avviare l'editor e aprire il file/etc/group. Alla fine del file aggiungere una nuova voce:me:x:1000:me -
Salvare le modifiche e chiudere il file group.
-
È ora di creare la directory home.
Copiare l'intero contenuto della directory
/etc/skelnella directory/home, rinominando la nuova directory con il nome dell'utente, ovvero/home/me. Digitare:[root@localhost root]# cp -r /etc/skel /home/me -
L'utente root è il proprietario della directory che hai appena creato, perché è stato lui a crearla. Affinché l'utente "me mao" possa utilizzare la directory, si dovranno modificare i permessi/proprietà della cartella. Digitare:
[root@localhost root]# chown -R me:me /home/me -
Creare una password per l'utente. Impostare il valore della password su a!b!c!d!. Si utilizzerà l'utility
passwd. Digitare “passwd me” e seguire le istruzioni[root@localhost root]# passwd me Changing password for user me. New password: Retype new password: passwd: all authentication tokens updated successfully. -
Uscire dal sistema una volta finito.
2. Creazione automatica di un nuovo utente¶
Esistono numerose utility disponibili per semplificare tutte le attività/passaggi che abbiamo eseguito manualmente nell'esercizio precedente. Abbiamo approfondito soltanto il procedimento manuale di creazione di un utente, così che tu possa vedere ciò che realmente avviene in background.
In questo esercizio verranno utilizzate alcune utility comuni per gestire e semplificare il processo. Creerai un altro account utente per l'utente “Ying Yang” con nome di accesso ying.
La password per ying sarà y@i@n@g@.
Creerai anche un gruppo chiamato “common” e aggiungerai gli utenti me e ying al gruppo.
Creare automaticamente un nuovo account¶
-
Accedere al sistema come root.
-
Creare l'utente ying utilizzando tutte le impostazioni predefinite del comando
useradd. Digitare:[root@localhost root]# useradd -c "Ying Yang" ying -
Utilizzare il comando
tailper esaminare l'inserimento appena effettuato al file/etc/passwd. Digitare:bash flatpak:x:982:982:User for flatpak system helper:/:/sbin/nologin pesign:x:981:981:Group for the pesign signing daemon:/run/pesign:/sbin/nologin me:x:1000:1000:99999:7 ::: ying:x:1001:1001:Ying Yang:/home/ying:/bin/bashDomanda
Elencare qui la nuova voce?
-
L'utente ying non potrà accedere al sistema finché non sarà stata creata una password per l'utente. Impostare la password di Ying su y@i@n@g@. Digitare:
[root@localhost root]# passwd ying Changing password for user ying. New password: ********** Retype new password: ********** passwd: all authentication tokens updated successfully. -
Utilizzare l'utilità
idper visualizzare rapidamente le informazioni relative ai nuovi utenti appena creati. Digitare:[root@localhost root]# id me uid=1000(me) gid=1000(me) groups=1000(me) -
Fare la stessa cosa per l'utente ying. Digitare:
[root@localhost root]# id ying uid=501(ying) gid=501(ying) groups=501(ying)
Creazione automatica di un nuovo gruppo¶
-
Utilizzare il programma
groupaddper creare il nuovo gruppo common.[root@localhost root]# groupadd common -
Esaminare la parte finale del file
/etc/groupper vedere il nuovo inserimento.Domanda
Qual è il comando per farlo?
-
Utilizzare il comando
usermodper aggiungere un utente esistente a un gruppo esistente. Si aggiunge l'utente ying al gruppo common appena creato nel passaggio 1. Digitare:[root@localhost root]# usermod -G common -a ying -
Fare le stessa cosa per l'utente me. Digitare:
[root@localhost root]# usermod -G common -a me -
Eseguire nuovamente il comando
idsugli utenti ying e me.Domanda
Cosa è cambiato?
-
Utilizzare il comando
grepper visualizzare le modifiche apportate alla voce del gruppo common nel file. Digitare:[root@localhost root]# grep common /etc/group common:x:1002:ying,me
Modifica del profilo di un utente¶
-
Utilizzare il comando
usermodper modificare il campo commento dell'utente me. Il nuovo commento che si aggiungerà sarà “first last”. Digitare:[root@localhost root]# usermod -c "first last" meUtilizzare il comando
tailper esaminare le modifiche apportate al file/etc/passwd.Domanda
Scrivi la riga modificata qui sotto.
Domanda
Qual è la shell di login dell'utente me?
-
Utilizzare nuovamente il comando
usermodper modificare la shell di login di me in shellcsh. Digitare:[root@localhost root]# usermod -s /bin/csh me -
Infine, utilizzare il comando
usermodper annullare tutte le modifiche apportate all'utente "me" sopra.Ripristina i valori (shell di login ecc.) ai valori originali.
Domanda
Quali sono i comandi per farlo?
3. Impostazione utente¶
Non sempre è conveniente uscire completamente dal sistema per accedere con un altro utente. Questo potrebbe essere dovuto al fatto che sono in esecuzione determinate attività che non si desidera terminare. Il programma su (set user) viene utilizzato per diventare temporaneamente un altro utente. È possibile passare da un account utente normale all'account root o viceversa utilizzando il comando "su".
Cambia l'utente corrente in modo che abbia i diritti di accesso dell'utente temporaneo.
Le variabili di ambiente HOME, LOGNAME e USER saranno impostate di default su quelle dell'utente temporaneo.
Per diventare temporaneamente un altro utente¶
-
Dopo aver effettuato l'accesso come utente root, passare all'utente "me". Digitare:
[root@localhost root]# su me [me@localhost root]$Il comando
sunon ha richiesto la password dell'utente me perché siete root -
Passare alla directory home di me.
[me@localhost root]$ cd [me@localhost me]$ cd -
Mentre si è temporaneamente connessi come me, usare
super effettuare il login come utente ying. Digitare:[me@localhost me]$ su ying password: [ying@localhost me]$ -
Per uscire dall'account di ying, digitare:
[ying@localhost me]$ exitQuesto vi riporterà all'account me.
-
Uscire dall'account di me per tornare all'account root.
Domanda
Qual è il comando?
Ereditare tutte le variabili ambientali del nuovo utente con su¶
-
Per forzare
sua utilizzare tutte le variabili ambientali dell'utente temporaneo. Digitare:[root@system1 root]# su - me [me@system1 me]$La differenza è immediatamente evidente. Notare la directory di lavoro corrente.
-
Uscire completamente dal sistema e riavviare il computer.
-
Tutto fatto con Lab 6!
Author: Wale Soyinka
Contributors: Steven Spencer, Ganna Zhyrnova, Franco Colussi