Red Hat Linux utilizza uno schema di gruppo privato utente (UPG), che rende i gruppi di UNIX più semplici da amministrare. Lo schema UPG non aggiunge o modifica nulla nella gestione standard dei gruppi di UNIX. Offre semplicemente una nuova convenzione. Ogni utente nuovo appartiene, per default, a un gruppo unico. Lo schema funziona nel seguente modo:
Ogni utente ha un gruppo primario, del quale è l'unico membro.
Normalmente nei sistemi UNIX la umask è 022 e impedisce agli altri utenti e agli altri membri di un gruppo primario di utenti di modificare i file. Poiché ogni utente ha il proprio gruppo privato nello schema, non è necessaria la "protezione dei gruppi". Una umask 002 impedisce agli utenti di modificare i file personali di altri utenti. La umask è impostata in /etc/profile.
Se impostate il setgid bit in una directory (con il comando chmod g+sdirectory), il gruppo dei file creati nella directory viene configurato come il gruppo della directory.
Molte organizzazioni IT hanno la consuetudine di creare un gruppo per ogni progetto principale e poi assegnare alle persone il gruppo in cui essi stanno lavorando. L'uso di questo schema tradizionale di gestione dei file si è rivelato piuttosto complesso, perché quando un utente crea un file, questo viene associato al gruppo primario a cui l'utente appartiene. Quando una sola persona lavora su molti progetti, è difficile associare i file esatti al gruppo giusto. Invece, con l'uso dello schema UPG, i gruppi sono assegnati automaticamente ai file creati all'interno di quella directory, che rende molto più semplice la gestione dei progetti di gruppo che condividono una directory comune.
Per esempio, supponiamo di avere in corso un grande progetto chiamato devel, con utenti che modificano i file devel in una directory devel. Create un gruppo chiamato devel, aggiungete la directory devel (chgrp) e tutti gli utenti del progetto al gruppo devel.
È possibile aggiungere un utente a un gruppo utilizzando Linuxconf (vedere la Official Red Hat Linux Customization Guide). Se preferite utilizzare la linea di comando, digitate il comando /usr/sbin/groupadd nome del gruppo per creare un gruppo. Poi, con il comando /usr/bin/gpasswd -a nome di login nome del gruppo aggiungete al gruppo nome di login dell'utente. (Per maggiori informazioni sulle diverse opzioni, consultate le pagine man dei comandi groupadd e gpasswd). Il file /etc/group contiene le informazioni sui gruppi per il vostro sistema.
Se avete creato il gruppo devel, aggiunto utenti e cambiato il gruppo per la directory devel nel gruppo devel e se avete impostato il setgid bit per la directory devel, tutti gli utenti devel potranno modificare i file devel e creare nuovi file nella directory devel. I file creati manterranno sempre il proprio stato di gruppo devel, così altri utenti devel saranno sempre in grado di modificarli.
Se avete in corso numerosi progetti come devel e altrettanti utenti che vi lavorano, tali utenti non dovranno mai modificare la propria umask o il gruppo nel muoversi da un progetto all'altro. Se impostato correttamente, il setgid bit "seleziona" sulle directory principali di ogni progetto il gruppo corretto per i file creati in quella directory.
Poiché la directory home di ogni utente appartiene all'utente e al suo gruppo privato, è più sicuro impostare il setgid bit sulla directory home. Comunque i file vengono creati per default con il gruppo primario dell'utente, in questo modo il setgid bit risulta ridondante.
Sebbene l'UPG non sia nuovo in Red Hat Linux, ancora molte persone hanno dei dubbi e si chiedono per esempio perché l'UPG sia necessario. Cercheremo di fornire maggiori dettagli con un esempio:
Intendete far lavorare un gruppo di persone su una serie di file nella directory /usr/lib/emacs/site-lisp. Volete però che solo alcune di queste persone abbiano la facoltà di modificare la directory.
Create innanzitutto un gruppo emacs:
/usr/sbin/groupadd emacs |
Poi digitate:
chown -R root.emacs /usr/lib/emacs/site-lisp |
Per associare il contenuto della directory al gruppo emacs, aggiungete l'utente adatto al gruppo:
/usr/bin/gpasswd -a <nome utente> emacs |
Per autorizzare gli utenti a creare i file nella directory, digitate:
chmod 775 /usr/lib/emacs/site-lisp |
Tuttavia, quando un utente crea un nuovo file, questo viene assegnato al gruppo di default dell'utente (di solito users). Per impedire che ciò avvenga, digitate:
chmod 2775 /usr/lib/emacs/site-lisp |
Tuttavia, per permettere a un altro utente nel gruppo emacs di modificare un nuovo file, è necessario che questo sia creato con la modalità 664. Per farlo, usate 002 come umask di default.
Non bisogna dimenticare però che se il vostro gruppo di default è users, ogni file creato nella propria directory home sarà modificabile da chiunque nel gruppo users (di solito tutti).
Per porre rimedio a questo problema, attribuite a ogni utente un "gruppo privato" come gruppo di default.
A questo punto, dopo aver impostato umask 002 come default e aver attribuito a ognuno un gruppo privato di default, è possibile impostare in modo molto semplice i gruppi a cui gli utenti potranno accedere, senza dover lavorare ulteriormente ogni qualvolta vengano creati o modificati dei file contenuti nella directory comune al gruppo. Create solo il gruppo, aggiungete gli utenti ed eseguite i comandi chown e chmod per le directory del gruppo.