NOTE: CentOS Enterprise Linux is built from the Red Hat Enterprise Linux source code. Other than logo and name changes CentOS Enterprise Linux is compatible with the equivalent Red Hat version. This document applies equally to both Red Hat and CentOS Enterprise Linux.
Linuxtopia - CentOS Enterprise Introduzione al System Administration - Informazioni specifiche su Red Hat Enterprise Linux
Red Hat Enterprise Linux 4: Introduzione al System Administration
6.3. Informazioni specifiche su Red Hat Enterprise Linux
Le seguenti sezioni descrivono i diversi contenuti specifici di Red Hat Enterprise Linux in relazione all'amministrazione degli user account e delle risorse associate.
6.3.1. User Account, Gruppi, e Permessi
Con Red Hat Enterprise Linux, un utente � in grado di eseguire il log in nel sistema e usare qualsiasi applicazione o file, ai quali essi sono abilitati per l'accesso, dopo la creazione di un normale user account. Red Hat Enterprise Linux determina se un utente o un gruppo pu� accedere a queste risorse in base ai loro permessi.
Sono presenti tre diversi tipi di permessi, essi si riferiscono ai file, alle directory e alle applicazioni. Questi permessi sono usati per un controllo dei diversi tipi di accesso. Per descrivere ogni permesso in un elenco della directory, vengono utilizzati diversi caratteri. Ecco riportati i seguenti esempi:
r — Indica una categoria di utenti in grado di leggere un file.
w — Indica una categoria di utenti in grado di scrivere in un file.
x — Indica una categoria di utenti in grado di eseguire un file.
Un quarto simbolo (-) indica che non � consentito alcun accesso.
Ogni permesso viene assegnato a tre diverse categorie di utenti. Le categorie sono:
owner — Il proprietario del file o dell'applicazione
group — Il gruppo che possiede il file o l'applicazione
everyone — Tutti gli utenti che hanno accesso al sistema.
Come precedentemente affrontato, � possibile visualizzare i permessi per un file, richiamando un elenco completo tramite il comando ls -l. Per esempio, se l'utente juan crea un file eseguibile chiamato foo, l'output del comando ls -l foo sar� il seguente:
-rwxrwxr-x 1 juan juan 0 Sep 26 12:25 foo
I permessi per questo file verranno elencati all'inizio della riga, iniziando con rwx. Questo insieme di simboli definisce l'accesso del proprietario — in questo esempio, il proprietario juan detiene un accesso completo, ed � in grado di leggere, scrivere ed eseguire il file. Il set successivo rwx, definisce l'accesso del gruppo (viene riportato ancora un accesso completo), mentre l'ultimo set di simboli definisce il tipo di accesso autorizzato per tutti gli altri utenti. Qui, tutti gli altri utenti possono leggere ed eseguire il file, ma potrebbero non essere in grado di apportare alcuna modifica.
Una cosa da ricordare per quanto riguarda i permessi e gli user account, � che ogni applicazione eseguita su Red Hat Enterprise Linux viene eseguita nel contesto di un utente specifico. Generalmente, questo significa che se l'utente juan lancia un'applicazione, la stessa viene eseguita usando il contesto dell'utente juan. Tuttavia in alcuni casi l'applicazione potrebbe aver bisogno di un livello d'accesso pi� privilegiato per poter portare a termine un compito. Tali applicazioni includono anche le applicazioni in grado di modificare le impostazioni del sistema oppure il log in dell'utente. Per questa ragione, sono stati creati permessi speciali.
Sono presenti tre permessi speciali all'interno di Red Hat Enterprise Linux. Essi sono:
setuid — usato solo per le applicazioni, questo permesso indica che l'applicazione deve essere eseguita come proprietario del file, e non come utente che esegue l'applicazione. Questo viene indicato dal carattere s al posto di x nella categoria del proprietario. Se il proprietario del file non possiede i permessi di esecuzione, comparir� il carattere S.
setgid — usato principalmente per le applicazioni, questo permesso indica che l'applicazione deve essere eseguita come il gruppo proprietario del file e non come il gruppo dell'utente che esegue l'applicazione.
Se applicato ad una directory, tutti i file creati all'interno della directory sono posseduti dal gruppo che detiene la directory e non dal gruppo dell'utente che crea il file. Il permesso setgid viene indicato dal carattere s al posto di x nella categoria del gruppo.Se il gruppo proprietario del file o della directory non possiede i permessi di esecuzione, verr� visualizzato il carattere S.
sticky bit — usato principalmente sulle directory, la parola bit indica che il file creato nella directory pu� essere rimosso solo dall'utente che ha creato il file. Viene indicato dal carattere t al posto di x in ogni categoria. Se ogni categoria non possiede i permessi di esecuzione, verr� visualizzata la lettera T.
Con Red Hat Enterprise Linux, sticky bit viene impostato per default sulla directory /tmp/ per questa ragione.
6.3.1.1. Nome utente e UID, Gruppi e GID
Con Red Hat Enterprise Linux, l'user account ed i group name sono principalmente per comodit� delle persone. Internamente, il sistema usa identificatori numerici. Per gli utenti, questo identificatore � conosciuto come UID, mentre per i gruppi � GID. I programmi che rendono disponibili le informazioni inerenti l'utente o il gruppo sono in grado di tradurre i valori di UID/GID in valori facilmente leggibili dalle persone.
Importante
Se desiderate condividere file e risorse tramite la rete all'interno della vostra organizzazione, UID e GID devono essere unici. Altrimenti nonostante implementiate qualsiasi tipo di controllo per l'accesso, esso potrebbe non funzionare correttamente in quanto il suddetto controllo � basati sugli UID e GID, e non sul nome utente o quello dei gruppi.
In modo pi� specifico, se i file /etc/passwd e /etc/group su di un file server ed una workstation presentano UID e GID diversi, i permessi inerenti l'applicazione potrebbero compromettere la sicurezza.
Per esempio, se l'utente juan ha un UID pari a 500 su di un computer desktop, i file creati da juan su di un file server, saranno creati con un UID di 500. Tuttavia, se l'utente bob esegue un log in in modo locale al file server (o su di un altro computer), e l'account di bob possiede un UID di 500, bob otterr� un accesso completo ai file di juan, e viceversa.
Per questo motivo � sempre consigliabile evitare i conflitti tra UID e GID.
Ci possono essere due casi dove il valore numerico di un UID e GID hanno un significato specifico. Un UID e GID pari a zero (0) vengono generalmente usati per l'utente root, e sono trattati in modo particolare da Red Hat Enterprise Linux —, l'accesso completo viene garantito in modo automatico.
Il secondo � quello dove tutti gli UID e GID hanno un valore inferiore a 500, e sono riservati per l'uso del sistema. A differenza di UID/GID con il valore zero, gli UID e GID sotto i 500 non vengono trattati in modo particolare da Red Hat Enterprise Linux. Tuttavia, questi UID/GID non devono mai essere assegnati ad un utente, in quanto potrebbe essere probabile che un componente del sistema usa o user� questi UID/GID. Per maggiori informazioni su questi utenti e gruppi standard, controllare il capitolo Utenti e Gruppi nella Red Hat Enterprise Linux Reference Guide.
Quando vengono aggiunti i nuovi user account usando i tool standard di Red Hat Enterprise Linux per la creazione degli utenti, vengono assegnati ai nuovi user account gli UID e GID disponibili il cui valore inizia da 500. All'user account successivo viene assegnato un UID/GID pari a 501, seguito da UID/GID 502, e cos� via.
Pi� avanti nel capitolo verr� affrontato brevemente l'argomento inerente i vari tool disponibili con Red Hat Enterprise Linux, per la creazione dell'utente. Ma prima di affrontare tale argomento, la sezione successiva affronta i file usati da Red Hat Enterprise Linux per definire gli account ed i gruppi del sistema.
6.3.2. File che controllano gli User Account ed i Gruppi
Su Red Hat Enterprise Linux, le informazioni sugli user account e gruppi sono conservate in diversi file di testo all'interno della directory /etc/. Quando un amministratore di sistema crea nuovi user account, questi file devono essere modificati manualmente oppure � necessario usare alcune applicazioni per eseguire i suddetti cambiamenti.
La seguente sezione riporta i file presenti nella directory /etc/, che conservano le informazioni sugli utenti e sui gruppi presenti su Red Hat Enterprise Linux.
6.3.2.1. /etc/passwd
Il file /etc/passwd pu� essere letto da tutti e contiene un elenco di utenti, ognuno dei quali riportato in righe separate. Ogni riga rappresenta un elenco delimitato dai due punti e contiene le seguenti informazioni:
Nome utente — Il nome che l'utente digita quando esegue il log in nel sistema.
Password — Contiene la password cifrata (o una serie di x se viene usata la password shadow — pi� avanti tratteremo questo argomento in modo pi� approfondito).
User ID (UID) — L'equivalente numerico del nome utente riferito dal sistema e dalle applicazioni quando si determinano i privilegi d'accesso.
Group ID (GID) — L'equivalente numerico del gruppo primario riferito dal sistema e dalle applicazioni quando si determinano i privilegi d'accesso.
GECOS — Nominato per ragioni storiche, il campo GECOS[1] � facoltativo e viene usato per conservare informazioni supplementari (come ad esempio il nome completo dell'utente). Entry multiple possono essere conservate in un elenco delimitato da un virgola. Le utility come ad esempio finger, possono accedere questo campo per fornire informazioni aggiuntive sull'utente.
Home directory — Path assoluta per la home directory dell'utente, come ad esempio /home/juan/.
Shell — Il programma viene lanciato automaticamente ogni qualvolta un utente esegue il log in. Questo � generalmente chiamato command interpreter (oppure shell). Con Red Hat Enterprise Linux, il valore di default � /bin/bash. Se invece viene lasciato vuoto, viene usato /bin/sh. Se viene impostato su di un file non esistente, allora l'utente non sar� in grado di eseguire il log in nel sistema.
Ecco un esempio di una entry /etc/passwd:
root:x:0:0:root:/root:/bin/bash
Questa riga mostra che l'utente root possiede una password shadow, e una UID e GID pari a 0. L'utente root ha /root/ come home directory, e usa /bin/bash come shell.
Per maggiori informazioni su /etc/passwd, consultare la pagina man di passwd(5).
6.3.2.2. /etc/shadow
A causa della necessit� che il file /etc/passwd sia letto da tutti (la ragione principale � che questo file viene usato per eseguire un cambiamento da UID a nome utente), potrebbe essere rischioso conservare le password in /etc/passwd. � vero le password sono cifrate. Tuttavia � possibile eseguire attacchi contro le password se le stesse sono disponibili.
Se un aggressore � in grado di ottenere una copia di /etc/passwd, � possibile che egli stesso possa eseguire un attacco in tutta segretezza. Invece di rischiare di essere scoperto usando la password fornita dal password-cracker, l'aggressore pu� seguire le seguenti fasi:
Un attacco con l'utilizzo del password-cracker � in grado di generare password potenziali
Ogni password viene cifrata usando lo stesso algoritmo del sistema
La password viene paragonata con le password cifrate in /etc/passwd
L'aspetto pi� pericoloso di questo attacco � rappresentato dal fatto che esso pu� essere portato a termine su di un sistema esterno alla vostra organizzazione. Per questo motivo, l'aggressore � in grado di usare un hardware disponibile ad altissime-prestazioni, in modo tale da analizzare un numero elevatissimo di parole molto velocemente.
Per questo motivo, il file /etc/shadow � leggibile solo da parte dell'utente root e contiene la password (e informazioni aggiuntive sull'invecchiamento della password) per ogni utente. Come riportato nel file /etc/passwd, le informazioni di ogni utente sono riportate su righe separate. Ogni riga rappresenta un elenco delimitato da due punti, e racchiude le seguenti informazioni:
Nome utente — Il nome digitato dall'utente quando esegue il log in nel sistema. Questo abilita l'applicazione login a recuperare la password dell'utente (e relative informazioni).
Password cifrata — Password da 13 a 24 caratteri. La password viene cifrata usando la funzione della libreria crypt(3) o l'algoritmo md5 hash. In questo campo, i valori diversi da quelli cifrati e formattati in modo valido o password di tipo criptata o 'hashed', vengono usati per controllare i log in degli utenti e per mostrare lo stato della password. Per esempio, se il valore � ! o *, l'account viene bloccato e di conseguenza l'utente non � autorizzato ad eseguire il log in. Se il valore � !! ci� st� ad indicare che non � mai stata impostata una password (e l'utente, non avendo impostato una password, non sar� in grado di eseguire il log in).
Ultimo cambiamento della password — Il numero di giorni dall'1 Gennaio 1970 (anche chiamato epoch) che la password � stata modificata. Questa informazione viene usata insieme ai campi seguenti d'invecchiamento della password.
Numero di giorni prima dei quali � possibile modificare una password — Numero minimo di giorni da trascorrere prima che la password possa essere cambiata.
Numero di giorni prima che sia necessario modificare la password — Numero di giorni da trascorrere necessari prima di modificare la password.
Numero di giorni di preavviso prima che la password venga cambiata — Il numero di giorni prima della scadenza della password, durante i quali l'utente viene avvisato.
Il numero di giorni prima che l'account venga disabilitato — Il numero di giorni dopo i quali si verifica la scadenza della password e prima che l'account venga disabilitato.
Data da quando l'account � stato disabilitato — La data (conservata come il numero di giorni da quando si � verificata la disabilitazione) da quando l'user account � stato disabilitato.
Un campo riservato — Rappresenta un campo ignorato da Red Hat Enterprise Linux.
Questa riga mostra le segunti informazioni per l'utente juan:
L'ultima volta che la password � stata modificata � stato 11 Febbraio 2005
Non vi � alcun limite minimo di tempo prima del quale si pu� cambiare la password
La password deve essere cambiata ogni 90 giorni
L'utente ricever� un preavviso cinque giorni prima di cambiare la password
L'account verr� disabilitato 30 giorni dopo la scadenza della password se nessun tentativo di log in � stato eseguito
L'account scadr� il 9 Novembre 2005
Per maggiori informazioni sul file /etc/shadow, consultare la pagina man di shadow(5).
6.3.2.3. /etc/group
Il file /etc/group pu� essere letto da tutti e contiene un elenco di gruppi, ognuno dei quali su di una riga separata. Ogni riga possiede quattro campi, separati da due punti, includendo le seguenti informazioni:
Group name — Il nome del gruppo. Usato da diversi programmi utility come identificatore del tipo 'human-readable' per il gruppo.
Group password — Se impostata, permette agli utenti che non fanno parte del gruppo, di unirsi al gruppo stesso usando il comando newgrp e digitando la relativa password. Se � presente in questo campo una x minuscola, allora significa che sono state usate le group password shadow.
Group ID (GID) — L'equivalente numerico del group name. Viene usato dal sistema operativo e dalle applicazioni quando vengono determinati i privilegi per l'accesso.
Member list — Un elenco di utenti, delimitato da una virgola, che appartengono al gruppo.
Ecco un esempio da /etc/group:
general:x:502:juan,shelley,bob
Questa riga mostra l'utilizzo da parte del gruppo general delle password shadow, detiene un GID di 502, e che juan, shelley, e bob sono i membri.
Per maggiori informazioni su /etc/group, consultare la pagina man di group(5).
6.3.2.4. /etc/gshadow
Il file /etc/gshadow � leggibile solo dall'uente root e contiene una password cifrata per ogni gruppo, contiene anche il membership del gruppo e le informazioni sull'amministratore. Proprio come nel file /etc/group, ogni informazione inerente il gruppo viene riportata su di una riga separata. Ogni riga � un elenco delimitato da due punti e include le seguenti informazioni:
Group name — Il nome del gruppo. Usato da diversi programmi utility come identificatore del tipo 'human-readable' per il gruppo.
Password cifrata — La password cifrata per il gruppo. Se impostata, i membri che non fanno parte del gruppo possono unirsi al gruppo stesso digitando la password e usando il comando newgrp. Se il valore di questo campo � !, nessun utente � in grado di unirsi al gruppo usando il comando newgrp. Il valore !! verr� trattato in egual modo di ! — tuttavia, indica anche che non � mai stata impostata una password. Se il valore � nullo, solo i membri del gruppo possono eseguire il log in all'interno del gruppo stesso.
Amministratori del gruppo — I membri del gruppo presenti in questo elenco (delimitato da una virgola), possono aggiungere o sottrarre membri usando il comando gpasswd.
Membri del gruppo — I membri del gruppo presenti in questo elenco (delimitato da una virgola) sono membri cos� detti normali, e non sono membri amministrativi del gruppo.
Ecco un esempio da /etc/gshadow:
general:!!:shelley:juan,bob
Questa riga mostra che il gruppo general non possiede password e accetta tutti i membri che vogliono unirsi al gruppo stesso usando il comando newgrp. In aggiunta, shelley � un amministratore del gruppo, mentre juan e bob sono membri normali, non amministrativi.
Poich� modificando i file manualmente si corre il rischio di avere errori nella sintassi, � consigliato usare le appliacazioni fornite da Red Hat Enterprise Linux. La sezione successiva riporta i diversi tool usati per eseguire questi compiti.
6.3.3. User Account e Group Application
Sui sistemi Red Hat Enterprise Linux vi sono due tipi di applicazione basiche, in grado di essere utilizzate durante la gestione degli user account e dei gruppi.
L'applicazione grafica Utente Manager
Una suite di tool a linea di comando
Per istruzioni dettagliate sull'uso di Utente Manager, consultate il capitolo User e Group Configuration
Mentre l'applicazione Utente Manager e le utility della linea di comando eseguono essenzialmente lo stesso compito, i tool della linea di comando hanno il vantaggio di essere personalizzabili e quindi pi� facilmente automatizzabili.
La seguente tabella descrive alcuni dei tool pi� comuni della linea di comando, usati per creare e gestire gli user account e i gruppi:
Applicazione
Funzione
/usr/sbin/useradd
Aggiunge gli user account. Questo tool viene usato per specificare il group membership primario e secondario.
/usr/sbin/userdel
Cancella gli user account.
/usr/sbin/usermod
Modifica gli attributi dell'account incluso alcune funzioni relative all'invecchiamento della password. Per un controllo migliore, usare il comando passwd. usermod viene usato anche per specificare i group membership primari e secondari.
passwd
Imposta le password. Anche se usato principalmente per cambiare la password dell'utente, esso controlla anche tutti gli aspetti inerenti l'invecchiamento della password.
/usr/sbin/chpasswd
Legge in un file composte da coppie di nome utente e password, ed aggiorna di conseguenza la password di ciuscun utente.
chage
Cambia la policy sull'invecchiamento della password di ogni utente. Il comando passwd pu� essere usato anche per questo scopo.
chfn
Cambia le informazioni GECOS dell'utente.
chsh
Cambia la shell di default dell'utente.
Tabella 6-2. Tool della linea di comando per la gestione dell'utente
La seguente tabella descrive alcuni dei tool della linea di comando pi� comuni, usati per creare e gestire i gruppi:
Applicazione
Funzione
/usr/sbin/groupadd
Aggiunge i gruppi, ma non assegna gli utenti a quei gruppi. I programmi useradd e usermod dovrebbero essere usati per assegnare utenti ad un determinato gruppo.
/usr/sbin/groupdel
Cancella i gruppi.
/usr/sbin/groupmod
Modifica i GID oppure i nomi del gruppo, ma non cambia il group membership. I programmi useradd e usermod dovrebbero essere usati per assegnare gli utenti ad un determinato gruppo.
gpasswd
Cambia il group membership ed imposta le password per permettere ai membri che non appartengono al gruppo, ma che sono a conoscenza della password, di unirsi al gruppo stesso. Esso viene usato per specificare gli amministratori del gruppo.
/usr/sbin/grpck
Controlla l'integrit� dei file /etc/group e /etc/gshadow
Tabella 6-3. Tool della linea di comando per la gestione del gruppo
I tool elencati pocanzi conferiscono agli amministratori di sistema una grossa flessibilit� nel controllo di tutti gli aspetti inerenti gli user account ed i group membership. Per saperne di pi� sul loro funzionamento, consultate le relative pagine man.
Queste applicazioni, tuttavia, non determinano a quali risorse gli utenti ed i gruppi possono esercitare il proprio controllo. Per questo, l'amministratore deve usare le applicazioni riguardanti�il permesso di un file.
6.3.3.1. Applicazioni per il permesso di un file
I permessi di un file all'interno di una organizzazione, sono parte integrante per la gestione delle risorse. La seguente tabella descrive alcuni dei tool della linea di comando pi� comuni usati per questo scopo.
Applicazione
Funzione
chgrp
Cambia il gruppo proprietario di un file
chmod
Cambia i permessi d'accesso per un file. � in grado altres� di assegnare permessi speciali.
chown
Cambia l'ownership di un file (ed � in grado di cambiare il gruppo)
Tabella 6-4. Tool della linea di comando per la gestione dei permessi
� possibile alterare questi attributi negli ambienti grafici GNOME e KDE. Fare clic con il tasto destro del mouse sull'icona del file (per esempio, quando l'icona viene mostrata in un file manager grafico o su di un desktop), e selezionare Propriet�.
GECOS � l'acronimo di General Electric Comprehensive Operating Supervisor. Questo campo � stato usato da Bell Labs, nell'implementazione originale di UNIX. Il lab presentava diversi computer, incluso un GECOS funzionante. Questo campo � stato usato per conservare informazioni quando il sistema UNIX generalmente inviava batch e lavori di stampa al sistema GECOS.