107.1 Lezione 1
Certificazione: |
LPIC-1 |
---|---|
Versione: |
5.0 |
Argomento: |
107 Attività Amministrative |
Obiettivo: |
107.1 Gestire account utente e gruppo e file di sistema correlati |
Lezione: |
1 di 2 |
Introduzione
L’amministrazione di utenti e gruppi è una parte molto importante del lavoro di qualsiasi amministratore di sistema. Le moderne distribuzioni Linux implementano interfacce grafiche che permettono di gestire tutte le attività relative a questo aspetto chiave in modo rapido e semplice. Queste interfacce sono diverse l’una dall’altra in termini di layout grafico, ma le caratteristiche sono le stesse. Con questi strumenti è possibile visualizzare, modificare, aggiungere ed eliminare utenti e gruppi locali. Tuttavia, per una gestione più avanzata è necessario lavorare attraverso la riga di comando.
Aggiungere un Account Utente
In Linux è possibile aggiungere un nuovo account utente con il comando useradd
. Per esempio, agendo con i privilegi di root, è possibile creare un nuovo account utente chiamato michael
con un’impostazione predefinita, come segue:
# useradd michael
Quando si esegue 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 anche la home directory del nuovo utente. Viene anche creato un gruppo con lo stesso nome del nuovo account utente.
Una volta creato il nuovo utente, è possibile impostare la sua password usando il comando passwd
. È possibile rivedere i propri User ID (UID), Group ID (GID) e i gruppi a cui appartiene attraverso i comandi id
e groups
.
# passwd michael Changing password for user michael. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully. # id michael uid=1000(michael) gid=100(michael) groups=100(michael) # groups michael michael : michael
Note
|
Ricorda che qualsiasi utente può rivedere il proprio UID, GID e i gruppi a cui appartiene semplicemente usando i comandi |
Le opzioni più importanti che si applicano al comando useradd
sono:
-c
-
Crea un nuovo account utente con commenti personalizzati (per esempio il nome completo dell’utente).
-d
-
Crea un nuovo account utente con una home directory personalizzata.
-e
-
Crea un nuovo account utente impostando una data specifica in cui sarà 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 (altrimenti l’account sarà disabilitato).
-g
-
Crea un nuovo account utente con un GID specifico.
-G
-
Crea un nuovo account utente aggiungendolo a più gruppi secondari.
-k
-
Crea un nuovo account utente copiando i file skeleton da una specifica directory personalizzata (questa opzione è valida solo se viene specificata l’opzione
-m
o--create-home
). -m
-
Crea un nuovo account utente con la sua directory home (se non esiste).
-M
-
Crea un nuovo account utente senza la sua home directory.
-s
-
Crea un nuovo account utente con una specifica shell di login.
-u
-
Crea un nuovo account utente con uno specifico UID.
Vedi le pagine di manuale del comando useradd
per la lista completa delle opzioni.
Modificare un Account Utente
A volte è necessario cambiare un attributo di un account utente esistente, come il nome di login, la shell di login, la data di scadenza della password e così via. In questi casi, è necessario utilizzare il comando usermod
.
# usermod -s /bin/tcsh michael # usermod -c "Michael User Account" michael
Proprio come il comando useradd
, il comando usermod
richiede i privilegi di root.
Negli esempi qui sopra, viene cambiata prima la shell di login di michael
e poi viene aggiunta una breve descrizione a questo account utente. Ricorda che puoi modificare più attributi contemporaneamente, specificandoli in un unico comando.
Le opzioni più importanti che si applicano al comando usermod
sono:
-c
-
Aggiunge un breve commento all’account utente specificato.
-d
-
Cambia la home directory dell’account utente specificato. Quando viene usato con l’opzione
-m
, il contenuto della home directory corrente viene spostato nella nuova home directory, che viene creata se non esiste già. -e
-
Imposta la data di scadenza dell’account utente specificato.
-f
-
Imposta il numero di giorni dopo la scadenza di una password durante i quali l’utente deve aggiornare la password (altrimenti l’account verrà disabilitato).
-g
-
Cambia il gruppo primario dell’account utente specificato (il gruppo deve esistere).
-G
-
Aggiunge gruppi secondari all’account utente specificato. Ogni gruppo deve esistere e deve essere separato dal successivo da una virgola, senza spazi intermedi. Se usata da sola, questa opzione rimuove tutti i gruppi esistenti a cui l’utente appartiene, mentre se usata con l’opzione
-a
, aggiunge semplicemente nuovi gruppi secondari a quelli esistenti. -l
-
Cambia il nome di login dell’account utente specificato.
-L
-
Blocca l’account utente specificato. Inserisce un punto esclamativo davanti alla password criptata nel file
/etc/shadow
, disabilitando così l’accesso con password per quell’utente. -s
-
Cambia la shell di login dell’account utente specificato.
-u
-
Cambia l’UID dell’account utente specificato.
-U
-
Sblocca l’account utente specificato. Rimuove il punto esclamativo davanti alla password criptata con il file
/etc/shadow
.
Consultare le pagine di manuale del comando usermod
per la lista completa delle opzioni.
Tip
|
Ricorda che quando cambiate il nome di login di un account utente dovresti probabilmente rinominare la home directory di quell’utente e altri elementi relativi all’utente come i file di spool della posta. Ricorda anche che quando cambia l’UID di un account utente dovresti probabilmente fissare la proprietà dei file e delle directory al di fuori della home directory dell’utente (l’ID utente viene cambiato automaticamente per la casella di posta dell’utente e per tutti i file di proprietà dell’utente e situati nella home directory dell’utente). |
Eliminare un Account Utente
Se vuoi eliminare un account utente, puoi usare il comando userdel
. In particolare, questo comando aggiorna le informazioni memorizzate nei database degli account, cancellando tutte le voci che si riferiscono 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. Altri file, situati altrove, devono essere cercati e cancellati manualmente.
# userdel -r michael
Come per useradd
e usermod
, hai bisogno dell’autorità di root per cancellare gli account utente.
Aggiungere, Modificare e Rimuovere i Gruppi
Proprio come per la gestione degli utenti, puoi aggiungere, modificare e cancellare gruppi usando i comandi groupadd
, groupmod
e groupdel
con privilegi di root. Se vuoi creare un nuovo gruppo chiamato developer
, puoi eseguire il seguente comando:
# groupadd -g 1090 developer
L’opzione -g
di questo comando crea un gruppo con un GID specifico.
Warning
|
Ricorda che quando aggiungi un nuovo account utente, il gruppo primario e i gruppi secondari a cui appartiene devono esistere prima di lanciare il comando |
In seguito, se vuoi rinominare il gruppo da developer
a web-developer
e cambiare il suo GID, puoi eseguire quanto segue:
# groupmod -n web-developer -g 1050 developer
Tip
|
Ricorda che se cambi il GID usando l’opzione |
Infine, se vuoi eliminare il gruppo web-developer
, puoi eseguire quanto segue:
# groupdel web-developer
Non puoi eliminare un gruppo se è il gruppo principale di un account utente. Pertanto, è necessario rimuovere l’utente prima di rimuovere il gruppo. Come per gli utenti, se si elimina un gruppo, i file appartenenti a quel gruppo rimangono nel filesystem e non vengono cancellati o assegnati a un altro gruppo.
La Directory Skeleton
Quando si aggiunge un nuovo account utente, anche creando la sua home directory, la home directory appena creata viene popolata con file e cartelle che vengono copiati dalla directory skeleton (di default /etc/skel
). L’idea alla base è semplice: un amministratore di sistema vuole aggiungere nuovi utenti che abbiano gli stessi file e cartelle nella loro home directory. Quindi, se vuoi personalizzare i file e le cartelle che vengono creati automaticamente nella home directory dei nuovi account utente, devi aggiungere questi nuovi file e cartelle alla directory skeleton.
Tip
|
Nota che se vuoi elencare tutti i file e le directory nella directory skeleton, devi usare il comando |
Il File /etc/login.defs
In Linux, il file /etc/login.defs
specifica i parametri di configurazione che controllano la creazione di utenti e gruppi. Inoltre, i comandi mostrati nelle sezioni precedenti prendono i valori predefiniti da questo file.
Le direttive più importanti sono:
UID_MIN
eUID_MAX
-
L’intervallo di ID utente che può essere assegnato ai nuovi utenti ordinari.
GID_MIN
eGID_MAX
-
L’intervallo di ID di gruppo che può essere assegnato ai nuovi gruppi ordinari.
CREATE_HOME
-
Specifica se una home directory deve essere creata di default per i nuovi utenti.
USERGROUPS_ENAB
-
Specifica se il sistema debba creare di default un nuovo gruppo per ogni nuovo account utente con lo stesso nome dell’utente, e se, eliminando l’account utente, debba rimuovere anche il gruppo primario dell’utente qualora non contenga più membri.
MAIL_DIR
-
La directory di spool della posta.
PASS_MAX_DAYS
-
Il numero massimo di giorni in cui una password può essere usata.
PASS_MIN_DAYS
-
Il numero minimo di giorni consentito tra un cambio di password e l’altro.
PASS_MIN_LEN
-
La lunghezza minima accettabile della password.
PASS_WARN_AGE
-
Il numero di giorni di preavviso prima che una password scada.
Tip
|
Quando si gestiscono utenti e gruppi, controllare sempre questo file per visualizzare ed eventualmente cambiare il comportamento predefinito del sistema se necessario. |
Il Comando passwd
Questo comando è usato principalmente per cambiare la password di un utente. Come descritto prima, ogni utente può cambiare la propria password, ma solo root può cambiare la password di qualsiasi utente. Questo accade perché il comando passwd
ha il bit SUID impostato (una s
al posto del flag eseguibile per il proprietario), il che significa che viene eseguito con i privilegi del proprietario del file (quindi root).
# ls -l /usr/bin/passwd -rwsr-xr-x 1 root root 42096 mag 17 2015 /usr/bin/passwd
A seconda delle opzioni passwd
usate, si possono controllare aspetti specifici della scadenza delle password:
-d
-
Cancella la password di un account utente (disabilitando così l’utente).
-e
-
Forza l’account utente a cambiare la password.
-i
-
Imposta il numero di giorni di inattività dopo la scadenza di una password durante i quali l’utente dovrebbe aggiornare la password (altrimenti l’account sarà disabilitato).
-l
-
Blocca l’account utente (la password criptata è preceduta da un punto esclamativo nel file
/etc/shadow
). -n
-
Imposta la durata minima della password.
-S
-
Mostra informazioni sullo stato della password di uno specifico account utente.
-u
-
Sblocca l’account utente (il punto esclamativo viene rimosso dal campo password nel file
/etc/shadow
). -x
-
Imposta la durata massima della password.
-w
-
Imposta il numero di giorni di preavviso prima che la password scada, durante i quali l’utente viene avvisato che la password deve essere cambiata.
Note
|
I gruppi possono anche avere una password, che può essere impostata usando il comando |
Il Comando chage
Questo comando, che sta per “change age”, è usato per cambiare le informazioni sulla scadenza della password di un utente. Il comando chage
è limitato a root, tranne che per l’opzione -l
, che può essere usata dagli utenti comuni per elencare le informazioni sulla password del proprio account.
Le altre opzioni che si applicano al comando chage
sono:
-d
-
Imposta l’ultimo cambio di password per un account utente.
-E
-
Imposta la data di scadenza per un account utente.
-I
-
Imposta il numero di giorni di inattività dopo la scadenza di una password durante i quali l’utente dovrebbe aggiornare la password (altrimenti l’account sarà disabilitato).
-m
-
Imposta la durata minima della password per un account utente.
-M
-
Imposta la durata massima della password per un account utente.
-W
-
Imposta il numero di giorni di preavviso prima della scadenza della password durante i quali l’utente viene avvisato che la password deve essere cambiata.
Esercizi Guidati
-
Per ciascuno dei seguenti comandi, identifica lo scopo corrispondente:
usermod -L
passwd -u
chage -E
groupdel
useradd -s
groupadd -g
userdel -r
usermod -l
groupmod -n
useradd -m
-
Per ciascuno dei seguenti comandi
passwd
, identifica il corrispondente comandochage
:passwd -n
passwd -x
passwd -w
passwd -i
passwd -S
-
Spiega in dettaglio lo scopo dei comandi nella domanda precedente:
-
Quali comandi si possono usare per bloccare un account utente? E quali comandi per sbloccarlo?
Esercizi Esplorativi
-
Usando il comando
groupadd
, crea i gruppiadministrators
edevelopers
. Supponiamo che tu stia lavorando come root. -
Ora che hai creato questi gruppi, esegui il seguente comando:
useradd -G administrators,developers kevin
. Quali operazioni esegue questo comando? Assumiamo cheCREATE_HOME
eUSERGROUPS_ENAB
in/etc/login.defs
siano impostati suyes
. -
Crea un nuovo gruppo chiamato
designers
, rinominalo inweb-designers
e aggiungi questo nuovo gruppo ai gruppi secondari dell’account utentekevin
. Identifica tutti i gruppi a cui appartienekevin
e i loro ID. -
Rimuovi solo il gruppo
developers
dai gruppi secondari dikevin
. -
Imposta la password per l’account utente
kevin
. -
Usando il comando
chage
, prima controlla la data di scadenza dell’account utentekevin
e poi cambiala al 31 dicembre 2022. Quale altro comando puoi usare per cambiare la data di scadenza di un account utente? -
Aggiungi un nuovo account utente chiamato
emma
con UID 1050 e impostaadministrators
come gruppo primario edevelopers
eweb-designer
come gruppi secondari. -
Cambia la shell di login di
emma
in/bin/sh
. -
Elimina gli account utente
emma
ekevin
e i gruppiadministrators
,developers
eweb-designers
.
Sommario
In questa lezione abbiamo imparato:
-
I fondamenti della gestione utenti e gruppi in Linux.
-
Come aggiungere, modificare e rimuovere gli account utente.
-
Come aggiungere, modificare e rimuovere gli account dei gruppi.
-
Mantenere la directory skeloton.
-
Modificare il file che controlla la creazione di utenti e gruppi.
-
Cambiare le password degli account utente.
-
Cambiare le informazioni sulla scadenza delle password degli account utente.
I seguenti file e comandi sono stati discussi in questa lezione:
useradd
-
Crea un nuovo account utente.
usermod
-
Modifica un account utente.
userdel
-
Elimina un account utente.
groupadd
-
Crea un nuovo account di gruppo.
groupmod
-
Modifica un account di gruppo.
groupdel
-
Elimina un account di gruppo.
passwd
-
Cambia la password degli account utente e controlla tutti gli aspetti della scadenza delle password.
chage
-
Cambia le informazioni sulla scadenza della password dell’utente.
/etc/skel
-
La posizione predefinita della directory skeleton.
/etc/login.defs
-
Il file che controlla la creazione di utenti e gruppi e fornisce valori predefiniti per diversi parametri dell’account utente.
Risposte agli Esercizi Guidati
-
Per ciascuno dei seguenti comandi, identifica lo scopo corrispondente:
usermod -L
Blocca l’account dell’utente
passwd -u
Sblocca l’account utente
chage -E
Imposta la data di scadenza per l’account utente
groupdel
Elimina il gruppo
useradd -s
Crea un nuovo account utente con una specifica shell di login
groupadd -g
Crea un nuovo gruppo con un GID specifico
userdel -r
Rimuove l’account utente e tutti i file nella sua home directory, la home directory stessa e lo spool di posta dell’utente
usermod -l
Cambia il nome di login dell’account utente
groupmod -n
Cambiare il nome del gruppo
useradd -m
Creare un nuovo account utente e la sua home directory
-
Per ciascuno dei seguenti comandi
passwd
, identifica il corrispondente comandochage
:passwd -n
chage -m
passwd -x
chage -M
passwd -w
chage -W
passwd -i
chage -I
passwd -S
chage -l
-
Spiega in dettaglio lo scopo dei comandi nella domanda precedente:
In Linux, puoi usare il comando
passwd -n
(ochage -m
) per impostare il numero minimo di giorni tra i cambi di password, il comandopasswd -x
(ochage -M
) per impostare il numero massimo di giorni durante i quali una password è valida, il comandopasswd -w
(ochage -W
) per impostare il numero di giorni di avviso prima che la password scada, il comandopasswd -i
(ochage -I
) per impostare il numero di giorni di inattività durante i quali l’utente dovrebbe cambiare la password; infine il comandopasswd -S
(ochage -l
) per mostrare brevi informazioni sulla password dell’account utente. -
Quali comandi si possono usare per bloccare un account utente? E quali comandi per sbloccarlo?
Se vuoi bloccare un account utente, puoi usare uno di questi comandi:
usermod -L
,usermod --lock
epasswd -l
. Invece, se vuoi sbloccarlo, puoi usareusermod -U
,usermod --unlock
epasswd -u
.
Risposte agli Esercizi Esplorativi
-
Usando il comando
groupadd
, crea i gruppiadministrators
edevelopers
. Supponiamo che tu stia lavorando come root.# groupadd administrators # groupadd developers
-
Ora che hai creato questi gruppi, esegui il seguente comando:
useradd -G administrators,developers kevin
. Quali operazioni esegue questo comando? Assumiamo cheCREATE_HOME
eUSERGROUPS_ENAB
in/etc/login.defs
siano impostati suyes
.Il comando aggiunge un nuovo utente, chiamato
kevin
, alla lista degli utenti nel sistema, crea la sua home directory (CREATE_HOME
è impostato su yes e quindi si può omettere l’opzione -m) e crea un nuovo gruppo, chiamatokevin
, come gruppo primario di questo account utente (USERGROUPS_ENAB
è impostato su yes). Infine, i file e le cartelle contenuti nella directory skeleton vengono copiati nella home directory dikevin
. -
Crea un nuovo gruppo chiamato
designers
, rinominalo inweb-designers
e aggiungi questo nuovo gruppo ai gruppi secondari dell’account utentekevin
. Identifica tutti i gruppi a cui appartienekevin
e i loro ID.# groupadd designers # groupmod -n web-designers designers # usermod -a -G web-designers kevin # id kevin uid=1010(kevin) gid=1030(kevin) groups=1030(kevin),1028(administrators),1029(developers),1031(web-designers)
-
Rimuovi solo il gruppo
developers
dai gruppi secondari dikevin
.# usermod -G administrators,web-designers kevin # id kevin uid=1010(kevin) gid=1030(kevin) groups=1030(kevin),1028(administrators),1031(web-designers)
Il comando
usermod
non ha un’opzione per rimuovere un solo gruppo; quindi, è necessario specificare tutti i gruppi secondari a cui l’utente appartiene. -
Imposta la password per l’account utente
kevin
.# passwd kevin Changing password for user kevin. New UNIX password: Retype new UNIX password: passwd: all authentication tokens updated successfully.
-
Usando il comando
chage
, prima controlla la data di scadenza dell’account utentekevin
e poi cambiala al 31 dicembre 2022. Quale altro comando puoi usare per cambiare la data di scadenza di un account utente?# chage -l kevin | grep "Account expires" Account expires : never # chage -E 2022-12-31 kevin # chage -l kevin | grep "Account expires" Account expires : dec 31, 2022
Il comando
usermod
con l’opzione-e
è equivalente achage -E
. -
Aggiungi un nuovo account utente chiamato
emma
con UID 1050 e impostaadministrators
come gruppo primario edevelopers
eweb-designer
come gruppi secondari.# useradd -u 1050 -g administrators -G developers,web-designers emma # id emma uid=1050(emma) gid=1028(administrators) groups=1028(administrators),1029(developers),1031(web-designers)
-
Cambia la shell di login di
emma
in/bin/sh
.# usermod -s /bin/sh emma
-
Elimina gli account utente
emma
ekevin
e i gruppiadministrators
,developers
eweb-designers
.# userdel -r emma # userdel -r kevin # groupdel administrators # groupdel developers # groupdel web-designers