Lab 6: Gestione di 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
¶
```bash
Utilizzo: useradd [options] LOGIN
useradd -D
useradd -D [options]
Opzioni:
--badname non controllare i nomi non validi
-b, --base-dir BASE_DIR directory di base per la directory home del nuovo account
--btrfs-subvolume-home utilizza il sottovolume BTRFS per la directory home.
-c, --comment COMMENT Campo GECOS del nuovo account
-d, --home-dir HOME_DIR directory home del nuovo account
-D, --defaults stampa o modifica la configurazione predefinita di useradd
-e, --expiredate EXPIRE_DATE data di scadenza del nuovo account
-g, --gid GROUP nome o ID del gruppo principale del nuovo account
-G, --groups GROUPS elenco dei gruppi supplementari del nuovo account
-h, --help visualizza questo messaggio di aiuto e esci
-k, --skel SKEL_DIR utilizza questa directory scheletro alternativa.
-K, --key KEY=VALUE sovrascrivere le impostazioni predefinite di /etc/login.defs
-l, --no-log-init non aggiungere l'utente ai database lastlog e faillog.
-m, --create-home creare la directory home dell'utente
-M, --no-create-home non creare la directory home dell'utente.
-N, --no-user-group non creare un gruppo con lo stesso nome dell'utente.
-o, --non-unique consenti la creazione di utenti con UID duplicati (non univoci)
-p, --password PASSWORD password crittografata del nuovo account
-r, --system creare un account di sistema
-R, --root CHROOT_DIR directory in cui eseguire il chroot
-P, --prefix PREFIX_DIR directory dei prefissi in cui si trovano i file /etc/*
-s, --shell SHELL shell di accesso del nuovo account
-u, --uid UID ID utente del nuovo account
-U, --user-group creare un gruppo con lo stesso nome dell'utente
-Z, --selinux-user SEUSER utilizzare un SEUSER specifico per la mappatura degli utenti SELinux
```
groupadd
¶
```bash
Utilizzo: groupadd [options] GROUP
Opzioni:
-f, --force esci correttamente se il gruppo esiste già e annulla -g se il GID è già utilizzato.
-g, --gid GID utilizza il GID per il nuovo gruppo
-h, --help visualizza questo messaggio di aiuto e esci
-K, --key KEY=VALUE sovrascrivere le impostazioni predefinite di /etc/login.defs
-o, --non-unique consenti la creazione di gruppi con GID duplicati (non univoci)
-p, --password PASSWORD Utilizza questa password crittografata per il nuovo gruppo.
-r, --system creare un account di sistema
-R, --root CHROOT_DIR directory in cui eseguire il chroot
-P, --prefix PREFIX_DI prefisso della directory
-U, --users USERS elenco degli utenti membri di questo gruppo
```
passwd
¶
```bash
Utilizzo: passwd [OPTION...] <accountName>
-k, --keep-tokens conserva i token di autenticazione non scaduti
-d, --delete elimina la password dell'account specificato (solo root); rimuove anche il blocco della password, se presente.
-l, --lock blocca la password per l'account specificato (solo root)
-u, --unlock sblocca la password per l'account specificato (solo root)
-e, --expire scadenza della password per l'account specificato (solo root)
-f, --force funzionamento forzato
-x, --maximum=DAYS durata massima della password (solo root)
-n, --minimum=DAYS durata minima della password (solo root)
-w, --warning=DAYS numero di giorni di preavviso che gli utenti ricevono prima della scadenza della password (solo root)
-i, --inactive=DAYS numero di giorni dopo la scadenza della password in cui un account viene disabilitato (solo root)
-S, --status segnalare lo stato della password sull'account specificato (solo root)
--stdin leggi nuovi il token da stdin (solo root)
Opzioni di aiuto:
-?, --help Mostra questo messaggio di aiuto
--usage Visualizza breve messaggio di utilizzo
```
Esercizio 1¶
Creazione manuale di 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
tail
per 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
Si modificherà il file passwd utilizzando il formato sopra indicato.
Creazione dell'utente¶
Sarà necessario modificare il file
/etc/passwd
.Avviare l'editor preferito e aprire il file "/etc/passwd"
Aggiungere 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/skel" nella directory /home, rinominando la nuova directory con il nome dell'utente, ad esempio "/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'utilità "passwd". Digitare "passwd" 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.
Esercizio 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 solo illustrato il processo manuale di creazione di un utente, in modo che si possa vedere cosa succede effettivamente in background.
In questo esercizio verranno utilizzate alcune utilità comuni per gestire e semplificare il processo.
Si creerà un altro account utente per l'utente "Ying Yang"; il nome di accesso sarà "ying".
E la password per "ying" sarà "y@i@n@g@".
Inoltre, si creerà un gruppo denominato “common” e si aggiungeranno gli utenti “me” e “ying” al gruppo.
Per 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
tail
per 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/bash
Domanda
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à
id
per 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
groupadd
per creare il nuovo gruppo "common".[root@localhost root]# groupadd common
Esaminare la parte finale del file
/etc/group
per vedere il nuovo inserimento.Domanda
Qual è il comando per farlo?
Utilizzare il comando
usermod
per aggiungere un utente esistente a un gruppo esistente. Si aggiunge l'utente ying al gruppocommon
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
id
sugli utenti "ying" e "me".Domanda
Cosa è cambiato?
Utilizzare il comando
grep
per visualizzare le modifiche apportate alla voce del gruppocommon
nel file. Digitare:bash [root@localhost root]# grep common /etc/group common:x:1002:ying,me
Modifica del profilo di un utente¶
Utilizzare il comando
usermod
per modificare il campo commento dell'utente "me". Il nuovo commento che si aggiungerà sarà "first last". Digitare:[root@localhost root]# usermod -c "first last" me
Utilizzare il comando
tail
per 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
usermod
per modificare la shell di login di me in shell csh. Digitare:[root@localhost root]# usermod -s /bin/csh me
Infine, utilizzare il comando
usermod
per 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?
Esercizio 3¶
Impostazione dell'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 verranno 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
su
non ha richiesto la password dell'utente me perché siete rootPassare alla directory home di me.
[me@localhost root]$ cd [me@localhost me]$ cd
Mentre si è temporaneamente connessi come me, usare
su
per 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]$ exit
Questo 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
su
a 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