Ogni utente in Linux ha un ID utente univoco (UID ), che è un numero intero ordinario e un nome utente associato. Gli utenti accedono utilizzando i loro nomi utente, ma il sistema utilizza gli UID associati. Ogni account utente ha anche una home directory e una shell di accesso. Quando gli utenti accedono, vengono inseriti nella loro home directory e la loro shell di accesso viene eseguita. Tutte queste informazioni sull'account utente sono archiviate in /etc/passwd file.
Ogni utente appartiene anche a uno o più gruppi. È possibile assegnare utenti diversi allo stesso gruppo. L'accesso può essere concesso a un gruppo e a tutti i membri del gruppo vengono concessi gli stessi privilegi di accesso. Ogni account di gruppo in Linux ha un ID gruppo univoco (GID ) e un nome di gruppo associato. Le informazioni sul gruppo sono archiviate in /etc/group file.
RedHat Linux utilizza uno schema UPG (User Private Group) . Quando viene aggiunto un nuovo account utente, viene creato anche un nuovo gruppo privato utente. Il gruppo utente privato ha lo stesso nome dell'utente e il nuovo utente è l'unico membro di questo gruppo.
Sia gli utenti che i gruppi utilizzano password shadow. Le password vengono sottoposte a hash e memorizzate in file diversi, /etc/shadow per gli utenti e /etc/gshadow per gruppi. La sicurezza migliora memorizzando le password con hash in file "ombra", poiché questi file sono leggibili solo dall'utente root. L'uso di password shadow fornisce anche parametri di aging delle password e consente di applicare le politiche di sicurezza, utilizzando il file /etc/login.defs. Solo l'utente root può aggiungere, modificare o eliminare account utente e gruppo.
File di configurazione di utenti e gruppi
/etc/passwd
Quando viene aggiunto un nuovo utente, le informazioni vengono memorizzate come una singola riga separata da due punti in /etc/passwd. Ecco un esempio di una voce in questo file:
# tail -1 /etc/passwd test:x:1001:1001:test user:/home/test:/bin/bash
Quanto segue descrive questa voce:
Campo | Descrizione |
---|---|
prova | Nome utente |
x | Indica che vengono utilizzate password shadow |
1001 | UID, iniziano con 1000 e aumentano di 1 per ogni nuovo utente aggiunto. Gli UID inferiori a 1000 sono riservati per l'uso del sistema. |
1001 | GID del gruppo principale dell'utente. Questi iniziano con 1000 e aumentano di 1 per ogni nuovo gruppo. Gli utenti possono appartenere a più di un gruppo. |
utente di prova | Informazioni GECOS (General Electric Comprehensive Operating System), utilizzate solo a scopo informativo come il nome completo |
/home/test | Home directory per questo utente |
/bin/bash | Shell predefinita per questo utente |
/etc/shadow
Con le password shadow, una nuova voce viene aggiunta automaticamente a /etc/shadow quando viene creato un nuovo utente. Questo file può essere visualizzato solo da root. Ecco un esempio di una voce in questo file:
# tail -1 /etc/shadow test:$6$XBCDBQ...:17610:0:99999:7:::
Quanto segue descrive questa voce:
Campo | Descrizione |
---|---|
prova | Nome utente |
$6$XBCDBQ... | Valore della password con hash (visualizzato il valore parziale). La stessa password in testo normale non è memorizzata sul disco. Un algoritmo crea una stringa univoca da una password. |
17610 | Numero di giorni dalla modifica della password (contati in giorni dal 1 gennaio 1970). |
0 | Numero di giorni che devono trascorrere prima che la password venga modificata dall'utente. |
99999 | Numero massimo di giorni dalla modifica della password durante i quali la password può essere utilizzata. Dopo questo numero di giorni, la password deve essere modificata dall'utente. |
7 | Numero di giorni prima della data di scadenza in cui l'utente viene avvisato della politica di modifica della password in sospeso. Se la password non viene modificata dopo questo numero di giorni, l'account utente è bloccato. |
Il campo successivo è vuoto ma viene utilizzato per memorizzare l'ultima data di blocco dell'account (contata in giorni dal 1 gennaio 1970). Anche l'ultimo campo è vuoto ma non viene utilizzato.
/etc/gruppo
Poiché Oracle Linux utilizza uno schema UPG, una nuova voce viene creata automaticamente in /etc/group quando viene aggiunto un nuovo utente. Il nome del gruppo è lo stesso del nome utente. Ecco un esempio di una voce in questo file:
# tail -1 /etc/group test:x:1000:test
Quanto segue descrive questa voce:
Campo | Descrizione |
---|---|
prova | Nome gruppo |
x | Indica che vengono utilizzate password shadow |
1000 | GID |
prova | Elenco degli utenti che sono membri del gruppo |
Ogni gruppo può avere più utenti. Gli utenti possono anche appartenere a più di un gruppo. Il GID memorizzato nella voce dell'utente in /etc/passwd è il gruppo principale dell'utente.
/etc/gshadow
Le password di gruppo con hash sono archiviate in questo file. Tuttavia, le password di gruppo vengono utilizzate raramente. Ecco un esempio di una voce in questo file:
# tail -1 /etc/gshadow test:!!::test
Quanto segue descrive questa voce:
Campo | Descrizione |
---|---|
prova | Nome gruppo |
x | Password con hash. Il !! Indica che l'account è bloccato. |
oracolo | Elenco degli utenti che sono membri del gruppo |
Gli ultimi due campi vengono utilizzati per designare amministratori e membri.
Aggiunta di un account utente
aggiunta utente
Utilizzare il comando useradd per aggiungere un account utente. La sintassi è:
# useradd [options] user_name
Quando si crea un nuovo utente senza alcuna opzione, vengono applicate le impostazioni predefinite. Esempio:
# useradd john # tail -1 /etc/passwd john:x:501:501::/home/john:/bin/bash
Inoltre, per impostazione predefinita, useradd crea un account utente bloccato. Per sbloccare l'account e assegnare una password, eseguire il comando passwd user_name come root. Esempio:
# passwd john
Il comando passwd user_name richiede una nuova password. A seconda della complessità della password, potresti ricevere una notifica che la password è errata (troppo breve o troppo semplice). Reinserire la stessa password per continuare e sbloccare l'account utente. Lo stesso comando passwd viene utilizzato per modificare una password. L'utente root può sempre modificare la password di un utente. Agli utenti viene richiesto di inserire prima la password corrente.
Impostazioni predefinite
Le impostazioni predefinite per un nuovo utente possono essere visualizzate e modificate utilizzando l'opzione -D. Esempio:
# useradd -D GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
Il INATTIVO La direttiva imposta il numero di giorni dopo la scadenza di una password fino al blocco dell'account. Il valore 0 blocca l'account non appena la password scade. Un valore di -1 disabilita la funzione. Contenuti di SKEL (/etc/skel per impostazione predefinita) vengono copiati nella home directory di un nuovo utente quando viene creato l'account utente. Le impostazioni predefinite sono memorizzate in /etc/default/useradd . Le seguenti opzioni, utilizzate con –D, modificano le impostazioni predefinite del comando useradd:
- -b default_home :il prefisso del percorso iniziale per la directory home di un nuovo utente
- -e data_scaduta_predefinita :la data in cui l'account utente è disabilitato
- -f default_inactive :il numero di giorni dopo la scadenza di una password prima che l'account venga bloccato
- -g gruppo_predefinito :il nome o l'ID del gruppo per il gruppo iniziale di un nuovo utente
- -s default_shell :la shell di accesso del nuovo utente
Ad esempio, per modificare la shell di accesso di un nuovo utente nella shell Bourne, inserisci quanto segue:
# useradd –D –s /bin/sh user_name
Opzioni aggiungi utente
Sono disponibili diverse opzioni per il comando useradd per sovrascrivere le impostazioni predefinite. Di seguito sono elencate alcune delle opzioni più comunemente utilizzate:
- -c commento :le informazioni GECOS del nuovo utente, come il nome completo
- -d home_dir :il prefisso del percorso iniziale per la directory home di un nuovo utente
- -e scadenza_data :la data (formato AAAA-MM-GG) in cui l'account utente è disabilitato
- -g gruppo_iniziale :il nome del gruppo o il numero del gruppo di accesso iniziale dell'utente. Il nome del gruppo deve esistere. Un numero di gruppo deve fare riferimento a un gruppo già esistente.
- -Gruppo G :un elenco di gruppi secondari di cui l'utente è anche membro. Ogni gruppo è separato dal successivo da una virgola, senza spazi bianchi intermedi.
- -p passwd :Imposta la password del nuovo utente.
- -s shell :il nome della shell di accesso dell'utente
Ad esempio, per creare un nuovo nome utente di "john" e includere il nome dell'utente e modificare la shell di accesso nella shell C, inserisci quanto segue:
# useradd –c "John Smith" –s /bin/csh john
Shell di accesso
Quando aggiungi un nuovo account utente, all'utente viene concesso l'accesso alla shell per impostazione predefinita. È possibile creare un account utente con shell nologin per l'esecuzione di un servizio come SMTP, FTP o per l'esecuzione di un server Web, ad esempio. Un utente senza una shell di accesso non può accedere a un sistema e, pertanto, non può eseguire alcun comando in modo interattivo sul sistema. Tuttavia, i processi possono essere eseguiti come quell'utente.
L'accesso come utente con una shell nologin viene gentilmente rifiutato e viene visualizzato un messaggio che informa che l'account non è disponibile. Se il file /etc/nologin.txt esiste, nologin mostra il contenuto del file anziché il messaggio predefinito. Per creare un utente nologin, assicurati innanzitutto che nologin esista in /etc/shells file:
# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /bin/dash
Per aggiungere un nuovo utente chiamato test senza accesso alla shell:
# useradd -s /sbin/nologin test
Tentativo di accesso mentre viene visualizzato il test utente:
# su – test This account is currently not available.
Modifica o eliminazione degli account utente
modutente
Utilizzare il comando usermod per modificare un account utente esistente. La sintassi è:
# usermod [options] user_name
Uno degli usi più comuni del comando usermod è aggiungere un utente a un altro gruppo (secondario). Usa –a e –G opzioni seguite da un elenco separato da virgole dei gruppi secondari a cui aggiungere l'utente. L'esempio seguente elenca il contenuto di /etc/group prima e dopo aver modificato un utente e averlo aggiunto a un gruppo secondario:
# grep 1017 /etc/group students:x:1017:
# usermod –aG 1017 mary # grep 1017 /etc/group students:x:1017:mary
utentedel
Utilizzare il comando userdel per eliminare un account utente. Esempio:
# userdel john
Amministrazione account di gruppo
aggiungere gruppo
Utilizzare il comando groupadd per aggiungere un account di gruppo. La sintassi è:
# groupadd [options] group_name
mod di gruppo
Utilizzare il comando groupmod per modificare un account di gruppo. La sintassi è:
# groupmod [options] group_name
Gruppo
Utilizzare il comando groupdel per eliminare un account di gruppo. La sintassi è:
# groupdel group_name
Puoi rimuovere i gruppi anche se ci sono membri nel gruppo. Non è possibile rimuovere il gruppo principale di alcun utente esistente. Devi rimuovere l'utente prima di rimuovere il gruppo.
gpasswd
Utilizzare il comando gpasswd per amministrare /etc/group e /etc/gshadow. Ogni gruppo può avere amministratori, membri e una password. La sintassi è:
# gpasswd [options] group_name
gruppi
Il comando gruppi mostra i gruppi a cui appartiene un utente. L'esempio seguente illustra che l'utente oracle appartiene a due gruppi, oracle (gruppo principale) e studenti (gruppo secondario):
$ grep oracle /etc/passwd oracle:x:1000:1000:Oracle Student:/home/oracle/bin/bash
$ grep oracle /etc/group oracle:x:1000: students:x:1056:student1,student2,oracle
Il comando groups (registrato come Oracle) verifica queste appartenenze ai gruppi.
$ whoami oracle $ groups oracle students
nuovogrp
Il comando newgrp esegue una nuova shell e cambia l'identificazione del gruppo reale di un utente. L'esempio seguente illustra l'ID del gruppo prima e dopo l'esecuzione del comando. Illustra anche che viene eseguita una nuova shell.
$ id uid=1000(oracle) gid=1000(oracle) groups=1000(oracle),1066(students)...
Nota che il gid è uguale a 1000(oracolo).
$ ps PID TTY TIME CMD 20279 pts/0 00:00:00 bash 20411 pts/0 00:00:00 ps
$ newgrp students
$ id uid=1000(oracle) gid=1066(students) groups=1000(oracle),1066(students)...
Nota che il gid ora è uguale a 1066 (studenti). Nota anche che è stata eseguita una nuova shell:
$ ps PID TTY TIME CMD 20279 pts/0 00:00:00 bash 20464 pts/0 00:00:00 bash 20486 pts/0 00:00:00 ps
Il comando newgrp non riconosce i numeri ID del gruppo e puoi solo cambiare il nome del tuo gruppo reale in un gruppo di cui sei membro. L'esecuzione del comando senza un argomento imposta l'identificazione del gruppo reale sul gruppo principale dell'utente.
Configurazione password
L'invecchiamento della password richiede agli utenti di modificare periodicamente la propria password. Utilizzare il comando chage per configurare la scadenza della password. La sintassi è:
# chage [options] user_name
Immettere il comando chage, seguito da un nome utente, per visualizzare i valori di aging delle password esistenti e apportare modifiche. Ad esempio, per visualizzare e modificare i valori per l'utente john, digitare (come utente root):
# chage john Changing the aging information for john Enter the new value, or press ENTER for the default Minimum Password Age [0]: Maximum Password Age [99999]: Last Password Change (YYYY-MM-DD) [2018-03-24]: Password Expiration Warning [7]: Password Inactive [-1]: Account Expiration Date (YYYY-MM-DD) [-1]:
Le informazioni sull'invecchiamento della password sono memorizzate nel file /etc/shadow. Per visualizzare la voce dell'utente john prima di apportare modifiche:
# grep john /etc/shadow john:$6$fJB4dWkt$...:17614:0:99999:7:::
La modifica del valore dell'età minima della password su 14 e del valore dell'età massima della password su 30 significa che in 14 giorni l'utente ha 30 giorni per modificare la password. La nuova voce appare come:
# grep john /etc/shadow john:$6$fJB4dWkt$...:17614:14:30:7:::
Sulla base di queste informazioni, l'utente viene avvisato di modificare la propria password sette giorni prima della data di scadenza della password. La direttiva INACTIVE viene utilizzata per impostare il numero di giorni di inattività dopo la scadenza di una password prima che l'account utente venga bloccato. L'impostazione INACTIVE su -1 disabilita questa funzione.
Opzioni di modifica
Sono disponibili diverse opzioni per il comando chage. Per elencare le informazioni sull'invecchiamento:
# chage -l john Last password change : Mar 24, 2018 Password expires : never Password inactive : never Account expires : never 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
Per forzare un utente a impostare immediatamente una nuova password (forza la scadenza immediata), imposta il valore dell'ultima modifica della password su 0. Esempio:
# chage –d 0 john
Dopo l'accesso, all'utente viene richiesto di modificare la propria password.
authconfig
Anche l'algoritmo di hashing della password dell'utente Linux è configurabile. Utilizzare il comando authconfig per determinare l'algoritmo corrente in uso o per impostarlo su qualcosa di diverso. Per determinare l'algoritmo corrente:
# authconfig --test | grep hashing password hashing algorithm is sha512
Per modificare l'algoritmo, usa il –passalgo opzione con uno dei seguenti come parametro:decrittografa , bigcrypt , md5 , sha256 o sha512 , seguito dall'–aggiornamento opzione. Ad esempio, per modificare l'algoritmo in MD5:
# authconfig --passalgo=md5 --updateCentOS / RHEL:gestione dell'invecchiamento delle password per gli utenti che utilizzano chage (con esempi pratici)
Comprensione del file /etc/login.defs