Utenti, gruppi e gruppi privati di utenti

Gestire gli utenti ed i gruppi può essere faticoso. Red Hat Linux ha alcuni strumenti e convenzioni che rendono più semplice questa gestione.

Mentre potete utilizzare useradd per creare un nuovo utente dal prompt di shell, il modo più semplice per gestire gli utenti ed i gruppi è tramite l'utility linuxconf (Vedasi Capitolo Capitolo 3).

In seguito vedremo come vengono gestiti utenti e gruppi.

Utenti Standard

La tabella Tabella 2-1 elenca gli utenti standard creati dal processo di installazione (questo è il contenuto del file /etc/passwd). Il gruppo id (GID) in questa tabella è il gruppo primario dell'utente. Guardate la la sezione Gruppi di utenti privati per maggiori dettagli su come vengono gestiti i gruppi.

Tabella 2-1. Utenti Standard

User UID GID Home Directory Shell
root 0 0 /root /bin/bash
bin 1 1 /bin  
daemon 2 2 /sbin  
adm 3 4 /var/adm  
lp 4 7 /var/spool/lpd  
sync 5 0 /sbin /bin/sync
shutdown 6 0 /sbin /sbin/shutdown
halt 7 0 /sbin /sbin/halt
mail 8 12 /var/spool/mail  
news 9 13 /var/spool/news  
uucp 10 14 /var/spool/uucp  
operator 11 0 /root  
games 12 100 /usr/games  
gopher 13 30 /usr/lib/gopher-data  
ftp 14 50 /var/ftp  
nobody 99 99 /  

Gruppi Standard

La tabella Tabella 2-2, elenca i gruppi standard nel modo in cui sono stati creati dal processo di installazione (questo è essenzialmente il file /etc/group).

Tabella 2-2. Gruppi Standard

Group GID Members
root 0 root
bin 1 root, bin, daemon
daemon 2 root, bin, daemon
sys 3 root, bin, adm
adm 4 root, adm, daemon
tty 5  
disk 6 root
lp 7 daemon, lp
mem 8  
kmem 9  
wheel 10 root
mail 12 mail
news 13 news
uucp 14 uucp
man 15  
games 20  
gopher 30  
dip 40  
ftp 50  
nobody 99  
users 100  

Gruppi di utenti privati

Red Hat Linux utilizza lo schema user private group (UPG), che rende i gruppi UNIX molto più semplici da amministrare. Lo schema UPG non aggiunge nè cambia niente nel modo in cui lo UNIX standard tratta i gruppi. Offre semplicemente una nuova convenzione nella gestione dei gruppi. Ogni qualvolta create un nuovo utente, in automatico, egli ha un gruppo unico. Lo schema funziona come segue:

User Private Group

Ogni utente ha il suo gruppo primario, del quale è membro.

umask = 002

La umask UNIX di default è 022, ed evita che altri utenti e altri membri di un gruppo primario di utenti abbiano i diritti per modificare i file. Poichè ogni utente ha il proprio gruppo privato nello schema UPG, questa "protezione di gruppi" non è strettamente necessaria. Una umask 002 impedirà agli utilizzatori di modificare i file privati di altri utenti. La umask è situata in /etc/profile.

setgid bit sulle Directory

Se inizializzate il bit SETGID su una directory (con chmod g+s directory), i file creati in questa directory avranno il loro gruppo configurato come il gruppo della directory.

La maggior parte delle organizzazioni IT hanno la consuetudine di creare un gruppo per ogni grande progetto ed assegnare alle persone il gruppo in cui essi stanno lavorando. La gestione dei file è un compito non semplice, perché quando qualcuno crea un file, questo riceve come propietà quelle del gruppo a cui appartiene. Quando una singola persona lavora su progetti multipli, diventa difficile creare file appartenenti al gruppo associato a quel progetto. Nello schema UPG, i gruppi sono assegnati automaticamente ai file sulla base project-by-project, il che rende molto semplice trattare progetti di gruppo.

Supponiamo di avere un progetto chiamato devel con molte persone che utilizzano i file del progetto in una directory devel. Formate un gruppo chiamato devel, utilizzando chgrp in modo che la directory devel appartenga al gruppo devel, ed aggiungete tutti gli utenti del progetto al gruppo devel. Ora questi ultimi saranno in grado di utilizzare i file del progetto devel e di creare nuovi file nella directory devel sempre con i permessi del gruppo devel, e pertanto tutti gli utenti del gruppo potranno modificare questi file.

Se avete progetti multipli come devel, ed utenti che lavorano su diversi progetti, questi non dovranno mai cambiare la loro umask o gruppo quando si muovono da un progetto ad un altro. Il bit setgid della directory principale di ogni progetto "seleziona" il gruppo corretto.

Poiché la directory HOME di ogni utente appartiene all'utente e al suo gruppo privato, è opportuno settare il bit SETGID sulla home directory di ogni utente. Tuttavia, i file vengono creati con il gruppo primario dell'utente e quindi la parte SETGID sarebbe ridondante.

Gruppo utente privato

Sebbene UPG non sia nuovo per Red Hat Linux 7.0, molte persone hanno dubbi a tal proposito, come per esempio sul perché UPG sia necessario. Cercheremo di fornire maggiori dettagli con un esempio.

  • Avete degli utenti che lavorano con dei file nella directory /usr/lib/emacs/site-lisp, e pertanto volete autorizzare questi utenti, non tutti, a muoversi all'interno della directory.

  • Digitate il seguente comando:
    chown -R root.emacs /usr/lib/emacs/site-lisp
                    
    ed aggiungete gli utenti che desiderate al gruppo.

  • Per permettere agli utenti di creare realmente file all'interno della directory, eseguite il seguente comando:
    chmod 775 /usr/lib/emacs/site-lisp
                    

  • Ma quando un utente crea un nuovo file, viene assegnato al gruppo di default (di solito users). Per evitare che ciò accada, digitate:
    chmod 2775 /usr/lib/emacs/site-lisp
                    
    che fa in modo che ogni file creato nella directory appartenga al gruppo "emacs".

  • Ma il nuovo file deve avere i permessi 664 affinché un altro utente del gruppo emacs sia in grado di modificarlo. Per far questo, è necessario che umask sia uguale a 002.

  • Tutto sembra funzionare bene, a parte il fatto che se il vostro gruppo di default è "users", ogni file che create nella vostra home directory potrebbe essere letto da tutti gli utenti del gruppo "users" (di solito da tutti).

  • Per evitare che ciò accada, fate in modo che ogni utente abbia un "gruppo privato" come gruppo di defalult.

A questo punto, impostando di default l'umask a 002 , ed assegnado a ciascun utente un gruppo privato di default, potete facilmente formare gruppi da cui gli utenti possono trarre vantaggio senza fare nulla di speciale. Semplicemente create il gruppo, aggiungete gli utenti, ed eseguite i comandi chown e chmod sopra indicati sulle direttive di gruppo.