5.2 Lezione 1
Certificazione: |
Linux Essentials |
---|---|
Versione: |
1.6 |
Argomento: |
5 Sicurezza e Permessi sui File |
Obiettivo: |
5.2 Creazione di Utenti e Gruppi |
Lezione: |
1 di 1 |
Introduzione
La gestione di utenti e gruppi su una macchina Linux è uno degli aspetti chiave dell’amministrazione di sistema: infatti Linux è un sistema operativo multiutente in cui più utenti possono utilizzare la stessa macchina contemporaneamente.
Le informazioni su utenti e gruppi sono memorizzate in quattro file all’interno dell’albero di directory /etc/
:
/etc/passwd
-
un file di sette campi delimitati da due punti contenente informazioni di base sugli utenti
/etc/group
-
un file di quattro campi delimitati da due punti contenente informazioni di base sui gruppi
/etc/shadow
-
un file di nove campi delimitati da due punti contenente le password utente crittografate
/etc/gshadow
-
un file di quattro campi delimitati da due punti contenente le password di gruppo crittografate
Tutti questi file vengono aggiornati da un insieme di strumenti a Command Line per la gestione di utenti e gruppi di cui parleremo più avanti in questa lezione. Possono anche essere gestiti da applicazioni grafiche, specifiche per ogni distribuzione Linux, che forniscono interfacce di gestione più semplici e immediate.
Warning
|
Anche se i file sono file di testo normale, non vanno modificati direttamente. Per farlo usa sempre gli strumenti forniti con la tua distribuzione. |
Il File /etc/passwd
/etc/passwd
è un file leggibile da tutti che contiene un elenco di utenti, ciascuno su una riga separata:
frank:x:1001:1001::/home/frank:/bin/bash
Ogni riga è composta da sette campi delimitati da due punti:
- Nome Utente
-
Il nome utilizzato quando l’utente effettua il login sul sistema.
- Password
-
La password crittografata (o una
x
se vengono utilizzate le password shadow). - User ID (UID)
-
L’ID numerico assegnato all’utente nel sistema.
- Group ID (GID)
-
Il numero del gruppo primario dell’utente nel sistema.
- GECOS
-
Un campo di commento facoltativo, che viene utilizzato per aggiungere ulteriori informazioni sull’utente (come per esempio il nome completo). Il campo può contenere più voci separate da virgole.
- Directory Home
-
Il percorso assoluto della directory home dell’utente.
- Shell
-
Il percorso assoluto del programma che viene avviato automaticamente quando l’utente effettua il login sul sistema (di solito una shell interattiva come
/bin/bash
).
Il File /etc/group
/etc/group
è un file leggibile da tutti che contiene un elenco di gruppi, ciascuno su una riga separata:
developer:x:1002:
Ogni riga è composta da quattro campi delimitati da due punti:
- Nome del gruppo
-
Il nome del gruppo.
- Password del gruppo
-
La password crittografata del gruppo (o una
x
se vengono utilizzate le password shadow). - Group ID (GID)
-
L’ID numerico assegnato al gruppo nel sistema.
- Lista dei membri
-
Un elenco, delimitato da virgole, di utenti appartenenti al gruppo, a eccezione di quelli per i quali questo è il gruppo primario.
Il File /etc/shadow
/etc/shadow
è un file leggibile solo da root e dagli utenti con privilegi di root e contiene le password crittografate degli utenti, ciascuna su una riga separata:
frank:$6$i9gjM4Md4MuelZCd$7jJa8Cd2bbADFH4dwtfvTvJLOYCCCBf/.jYbK1IMYx7Wh4fErXcc2xQVU2N1gb97yIYaiqH.jjJammzof2Jfr/:18029:0:99999:7:::
Ogni riga è composta da nove campi delimitati da due punti
- Nome Utente
-
Il nome utilizzato quando l’utente effettua il login sul sistema.
- Password crittografata
-
La password crittografata dell’utente (se il valore è
!
, l’account è bloccato). - Data dell’ultima modifica della password
-
La data dell’ultima modifica della password, come numero di giorni dal 01/01/1970. Un valore pari a
0
significa che l’utente deve cambiare la password al prossimo accesso. - Durata minima della password
-
Il numero minimo di giorni, dopo una modifica della password, che deve trascorrere prima che all’utente sia consentito modificare nuovamente la password.
- Durata massima della password
-
Il numero massimo di giorni che deve trascorrere prima che sia richiesta una modifica della password.
- Periodo di avviso della password
-
Il numero di giorni, prima della scadenza della password, durante i quali l’utente viene avvisato che la password deve essere modificata.
- Periodo di inattività della password
-
Il numero di giorni, dopo la scadenza di una password, durante i quali l’utente deve aggiornare la password. Trascorso questo periodo, se l’utente non modifica la password, l’account verrà disabilitato.
- Data di scadenza dell’account
-
La data, come numero di giorni dal 01/01/1970, in cui l’account utente verrà disabilitato. Un campo vuoto significa che l’account utente non scadrà mai.
- Campo riservato
-
Un campo riservato per usi futuri.
Il File /etc/gshadow
/etc/gshadow
è un file leggibile solo da root e dagli utenti con privilegi di root e contiene le password crittografate dei gruppi, ciascuna su una riga separata:
developer:$6$7QUIhUX1WdO6$H7kOYgsboLkDseFHpk04lwAtweSUQHipoxIgo83QNDxYtYwgmZTCU0qSCuCkErmyR263rvHiLctZVDR7Ya9Ai1::
Ogni riga è composta da quattro campi delimitati da due punti:
- Nome del gruppo
-
Il nome del gruppo.
- Password crittografata
-
La password crittografata del gruppo (viene utilizzata quando un utente, che non è un membro del gruppo, desidera unirsi al gruppo utilizzando il comando
newgrp
— se la password inizia con!
a nessuno è consentito accedere al gruppo connewgrp
). - Amministratori del gruppo
-
Un elenco delimitato da virgole degli amministratori del gruppo (possono cambiare la password del gruppo e possono aggiungere o rimuovere membri del gruppo con il comando
gpasswd
). - Membri del gruppo
-
Un elenco delimitato da virgole dei membri del gruppo.
Ora che abbiamo visto dove vengono archiviate le informazioni su utenti e gruppi parliamo degli strumenti più importanti della Command Line per aggiornare questi file.
Aggiungere ed Eliminare Account Utenti
In Linux è possibile aggiungere un nuovo account utente con il comando useradd
ed eliminarlo con il comando userdel
.
Se desideri creare un nuovo account utente chiamato frank
con impostazioni predefinite, puoi eseguire quanto segue:
# useradd frank
Dopo aver creato il nuovo utente puoi impostare una password usando passwd
:
# passwd frank Changing password for user frank. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
Entrambi questi comandi richiedono privilegi di root. Quando esegui il comando useradd
, le informazioni sull’utente e sul gruppo memorizzate nei database delle password e dei gruppi vengono aggiornate per l’account utente appena creato e, se specificato, viene creata la directory home del nuovo utente e un gruppo con lo stesso nome dell’account utente.
Tip
|
Ricorda che puoi sempre utilizzare l’utility
o
per visualizzare le informazioni di base sull’account |
Le opzioni più importanti del comando useradd
sono:
-c
-
Crea un nuovo account utente con commenti personalizzati (per esempio il nome completo).
-d
-
Crea un nuovo account utente con una directory home personalizzata.
-e
-
Crea un nuovo account utente impostando una data specifica in cui verrà disabilitato.
-f
-
Crea un nuovo account utente impostando il numero di giorni, dopo la scadenza della password, durante i quali l’utente deve aggiornare la password stessa.
-g
-
Crea un nuovo account utente con uno specifico GID.
-G
-
Crea un nuovo account utente aggiungendolo a più gruppi secondari.
-m
-
Crea un nuovo account utente con la sua directory home.
-M
-
Crea un nuovo account utente senza la sua directory home.
-s
-
Crea un nuovo account utente con una specifica shell di login.
-u
-
Crea un nuovo account utente con uno specifico UID.
Una volta creato il nuovo account utente puoi usare i comandi id
e groups
per scoprire il suo UID, il suo GID e i gruppi a cui appartiene.
# id frank uid=1000(frank) gid=1000(frank) groups=1000(frank) # groups frank frank : frank
Tip
|
Ricordati di controllare ed eventualmente modificare il file |
Per eliminare un account utente puoi usare il comando userdel
. In particolare, questo comando aggiorna le informazioni memorizzate nei database degli account, eliminando tutte le voci che fanno riferimentio all’utente specificato. L’opzione -r
rimuove anche la directory home dell’utente e tutto il suo contenuto, insieme allo spool di posta dell’utente. Gli altri file, che si trovano altrove, devono essere cercati ed eliminati manualmente.
# userdel -r frank
Anche in questo caso sono necessari i privilegi di root per eliminare gli account utente.
La Directory Scheletro
Quando aggiungi un nuovo account utente, anche creando la sua directory home, la directory home appena creata viene popolata con file e cartelle che vengono copiate dalla directory scheletro (skeleton directory - per impostazione predefinita /etc/skel
). L’idea alla base di tutto ciò è semplice: un amministratore di sistema desidera aggiungere nuovi utenti con gli stessi file e le stesse directory nella propria home. Pertanto, se si desidera personalizzare i file e le cartelle che vengono creati automaticamente nella directory home dei nuovi account utente, è necessario aggiungere questi nuovi file e cartelle alla directory scheletro.
Tip
|
Nota che i file di profilo che di solito si trovano nella directory scheletro sono file nascosti. Pertanto, se vuoi elencare tutti i file e le cartelle nella directory scheletro, che verranno copiati nella directory home degli utenti appena creati, devi usare il comando |
Aggiungere ed Eliminare Gruppi
Per quanto riguarda la gestione dei gruppi, puoi aggiungere o eliminare gruppi usando i comandi groupadd
e groupdel
.
Se vuoi creare un nuovo gruppo chiamato developer
, puoi eseguire il seguente comando come root:
# groupadd -g 1090 developer
L’opzione -g
di questo comando crea un gruppo con uno specifico GID.
Se vuoi eliminare il gruppo developer
, puoi eseguire quanto segue:
# groupdel developer
Warning
|
Ricorda che quando aggiungi un nuovo account utente, il gruppo primario e i gruppi secondari a cui appartiene devono esistere prima di eseguire il comando |
Il Comando passwd
Questo comando viene utilizzato principalmente per modificare la password di un utente. Ogni utente può modificare la propria password, ma solo root può modificare la password di qualsiasi utente.
A seconda dell’opzione di passwd
usata, puoi controllare specifici aspetti relativi all’invecchiamento della password:
-d
-
Elimina la password di un account utente (impostando così una password vuota, rendendolo un account senza password).
-e
-
Forza l’account utente a modificare la password.
-l
-
Blocca l’account utente (la password crittografata viene preceduta da un punto esclamativo).
-u
-
Sblocca l’account utente (rimuove il punto esclamativo).
-S
-
Mostra informazioni sullo stato della password di uno specifico account.
Queste opzioni sono disponibili solo per root. Per vedere l’elenco completo delle opzioni, fai riferimento alle pagine man.
Esercizi Guidati
-
Indica a quale file si riferisce ciascuna delle seguenti voci:
-
developer:x:1010:frank,grace,dave
-
root:x:0:0:root:/root:/bin/bash
-
henry:$1$.AbCdEfGh123456789A1b2C3d4.:18015:20:90:5:30::
-
henry:x:1000:1000:User Henry:/home/henry:/bin/bash
-
staff:!:dave:carol,emma
-
-
Osserva il seguente output e rispondi alle prossime sette domande:
# cat /etc/passwd | tail -3 dave:x:1050:1050:User Dave:/home/dave:/bin/bash carol:x:1051:1015:User Carol:/home/carol:/bin/sh henry:x:1052:1005:User Henry:/home/henry:/bin/tcsh # cat /etc/group | tail -3 web_admin:x:1005:frank,emma web_developer:x:1010:grace,kevin,christian dave:x:1050: # cat /etc/shadow | tail -3 dave:$6$AbCdEfGh123456789A1b2C3D4e5F6G7h8i9:0:20:90:7:30:: carol:$6$q1w2e3r4t5y6u7i8AbcDeFgHiLmNoPqRsTu:18015:0:60:7::: henry:!$6$123456789aBcDeFgHa1B2c3d4E5f6g7H8I9:18015:0:20:5::: # cat /etc/gshadow | tail -3 web_admin:!:frank:frank,emma web_developer:!:kevin:grace,kevin,christian dave:!::
-
Qual è l’ID utente (UID) e l’ID di gruppo (GID) di
carol
? -
Quale shell è impostata per
dave
e perhenry
? -
Qual è il nome del gruppo primario di
henry
? -
Quali sono i membri del gruppo
web_developer
? Quali di questi sono amministratori del gruppo? -
Quale utente non può effettuare il login sul sistema?
-
Quale utente deve cambiare la password la prossima volta che effettuerà il login sul sistema?
-
Quanti giorni devono passare prima che venga richiesta una modifica della password per
carol
?
-
Esercizi Esplorativi
-
Lavorando come root, esegui il comando
useradd -m dave
per aggiungere un nuovo account utente. Quali operazioni esegue questo comando? Supponi cheCREATE_HOME
eUSERGROUPS_ENAB
in/etc/login.defs
siano impostati su yes. -
Ora che hai creato l’account
dave
, questo utente può effettuare il login sul sistema? -
Identifica l’ID utente (UID) e l’ID di gruppo (GID) di
dave
e tutti i membri del gruppodave
. -
Crea i gruppi
sys_admin
,web_admin
edb_admin
e individua i loro ID di gruppo (GID). -
Aggiungi un nuovo account utente chiamato
carol
con UID 1035 e impostasys_admin
come suo gruppo principale eweb_admin
edb_admin
come suoi gruppi secondari. -
Elimina gli account utente
dave
ecarol
e i gruppisys_admin
,web_admin
edb_admin
che hai precedentemente creato. -
Esegui il comando
ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow
e descrivi l’output ottenuto in termini di permessi sui file. Quali di questi quattro file sono oscurati per motivi di sicurezza? Supponi che il tuo sistema utilizzi le password shadow. -
Esegui il comando
ls -l /usr/bin/passwd
. Quale bit speciale è impostato e qual è il suo significato?
Sommario
In questa lezione hai imparato:
-
I fondamenti della gestione di utenti e gruppi in Linux;
-
Come gestire le informazioni di utenti e gruppi archiviate nei database delle password e dei gruppi;
-
Come gestire la directory scheletro;
-
Come aggiungere e rimuovere account utenti;
-
Come aggiungere e rimuovere account di gruppi;
-
Come modificare la password di un account utente.
In questa lezione sono stati discussi i seguenti comandi:
useradd
-
Crea un nuovo account utente.
groupadd
-
Crea un nuovo account di gruppo.
userdel
-
Elimina un account utente.
groupdel
-
Elimina un account di gruppo.
passwd
-
Modifica la password di un account utente e controlla tutti gli aspetti relativi all’invecchiamento della password.
Risposte agli Esercizi Guidati
-
Indica a quale file si riferisce ciascuna delle seguenti voci:
-
developer:x:1010:frank,grace,dave
/etc/group
-
root:x:0:0:root:/root:/bin/bash
/etc/passwd
-
henry:$1$.AbCdEfGh123456789A1b2C3d4.:18015:20:90:5:30::
/etc/shadow
-
henry:x:1000:1000:User Henry:/home/henry:/bin/bash
/etc/passwd
-
staff:!:dave:carol,emma
/etc/gshadow
-
-
Osserva il seguente output e rispondi alle prossime sette domande:
# cat /etc/passwd | tail -3 dave:x:1050:1050:User Dave:/home/dave:/bin/bash carol:x:1051:1015:User Carol:/home/carol:/bin/sh henry:x:1052:1005:User Henry:/home/henry:/bin/tcsh # cat /etc/group | tail -3 web_admin:x:1005:frank,emma web_developer:x:1010:grace,kevin,christian dave:x:1050: # cat /etc/shadow | tail -3 dave:$6$AbCdEfGh123456789A1b2C3D4e5F6G7h8i9:0:20:90:7:30:: carol:$6$q1w2e3r4t5y6u7i8AbcDeFgHiLmNoPqRsTu:18015:0:60:7::: henry:!$6$123456789aBcDeFgHa1B2c3d4E5f6g7H8I9:18015:0:20:5::: # cat /etc/gshadow | tail -3 web_admin:!:frank:frank,emma web_developer:!:kevin:grace,kevin,christian dave:!::
-
Qual è l’ID utente (UID) e l’ID di gruppo (GID) di
carol
?Lo UID è 1051 e il GID è 1015 (il terzo e il quarto campo in
/etc/passwd
). -
Quale shell è impostata per
dave
e perhenry
?dave
usa /bin/bash, mentrehenry
usa /bin/tcsh (il settimo campo in/etc/passwd
). -
Qual è il nome del gruppo primario di
henry
?Il nome del gruppo è
web_admin
(il primo campo in/etc/group
). -
Quali sono i membri del gruppo
web_developer
? Quali di questi sono amministratori del gruppo?I membri sono
grace
,kevin
echristian
(il quarto campo in/etc/group
), ma solokevin
è l’amministratore del gruppo (il terzo campo in/etc/gshadow
) . -
Quale utente non può effettuare il login sul sistema?
L’account utente
henry
è bloccato (ha un punto esclamativo davanti agli hash della password in/etc/shadow
). -
Quale utente deve cambiare la password la prossima volta che effettuerà il login sul sistema?
Se il terzo campo (Data dell’ultima modifica della password) in
/etc/shadow
è 0, l’utente deve cambiare la propria password la prossima volta che effettuerà il login sul sistema. Pertanto,dave
deve cambiare la sua password. -
Quanti giorni devono passare prima che venga richiesta una modifica della password per
carol
?60 giorni (il quinto campo in
/etc/shadow
).
-
Risposte agli Esercizi Esplorativi
-
Lavorando come root, esegui il comando
useradd -m dave
per aggiungere un nuovo account utente. Quali operazioni esegue questo comando? Supponi cheCREATE_HOME
eUSERGROUPS_ENAB
in/etc/login.defs
siano impostati su yes.Il comando aggiunge un nuovo utente, chiamato
dave
, all’elenco degli utenti del sistema. Viene creata la directory home didave
(per impostazione predefinita/home/dave
) e i file e le directory contenute nella directory scheletro (skeleton directory) vengono copiati nella directory home. Infine, viene creato un nuovo gruppo con lo stesso nome dell’account utente. -
Ora che hai creato l’account
dave
, questo utente può effettuare il login sul sistema?No, poiché l’account
dave
è bloccato (nota il punto esclamativo in/etc/shadow
).# cat /etc/shadow | grep dave dave:!:18015:0:99999:7:::
Se imposti una password per
dave
, l’account verrà sbloccato. Puoi farlo usando il comandopasswd
.# passwd dave Changing password for user dave. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
-
Identifica l’ID utente (UID) e l’ID di gruppo (GID) di
dave
e tutti i membri del gruppodave
.# cat /etc/passwd | grep dave dave:x:1015:1019::/home/dave:/bin/sh # cat /etc/group | grep 1019 dave:x:1019:
Lo UID e il GID di
dave
sono rispettivamente 1015 e 1019 (il terzo e il quarto campo in/etc/passwd
), e il gruppodave
non ha alcun membro (il quarto campo in/etc/group
è vuoto) . -
Crea i gruppi
sys_admin
,web_admin
edb_admin
e individua i loro ID di gruppo (GID).# groupadd sys_admin # groupadd web_admin # groupadd db_admin # cat /etc/group | grep admin sys_admin:x:1020: web_admin:x:1021: db_admin:x:1022:
I GID dei gruppi
sys_admin
,web_admin
edb_admin
sono rispettivamente 1020, 1021 e 1022. -
Aggiungi un nuovo account utente chiamato
carol
con UID 1035 e impostasys_admin
come suo gruppo principale eweb_admin
edb_admin
come suoi gruppi secondari.# useradd -u 1035 -g 1020 -G web_admin,db_admin carol # id carol uid=1035(carol) gid=1020(sys_admin) groups=1020(sys_admin),1021(web_admin),1022(db_admin)
-
Elimina gli account utente
dave
ecarol
e i gruppisys_admin
,web_admin
edb_admin
che hai precedentemente creato.# userdel -r dave # userdel -r carol # groupdel sys_admin # groupdel web_admin # groupdel db_admin
-
Esegui il comando
ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow
e descrivi l’output ottenuto in termini di permessi sui file. Quali di questi quattro file sono oscurati per motivi di sicurezza? Supponi che il tuo sistema utilizzi le password shadow.# ls -l /etc/passwd /etc/group /etc/shadow /etc/gshadow -rw-r--r-- 1 root root 853 mag 1 08:00 /etc/group -rw-r----- 1 root shadow 1203 mag 1 08:00 /etc/gshadow -rw-r--r-- 1 root root 1354 mag 1 08:00 /etc/passwd -rw-r----- 1 root shadow 1563 mag 1 08:00 /etc/shadow
I file
/etc/passwd
ed/etc/group
sono leggibili da chiunque e sono oscurati per motivi di sicurezza. Quando vengono utilizzate le password shadow, puoi notare unax
nel secondo campo di questi file poichè le password crittografate di utenti e gruppi sono memorizzate in/etc/shadow
ed/etc/gshadow
, che sono leggibili solo da root e, in alcuni sistemi, anche dai membri appartenenti al grupposhadow
. -
Esegui il comando
ls -l /usr/bin/passwd
. Quale bit speciale è impostato e qual è il suo significato?# ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 42096 mag 17 2015 /usr/bin/passwd
Il comando
passwd
ha impostato il bit SUID (il quarto carattere della riga), il che significa che il comando viene eseguito con i privilegi del proprietario del file (quindi root). Questo è il motivo per cui gli utenti ordinari possono modificare la propria password.