|
Il kernel di Linux tratta gli utenti come semplici numeri. Ciascun
utente viene identificato da un numero intero univoco, l’uid, o
identificativo utente. Un database separato fuori del kernel
assegna un nome testuale, lo username, a ciascun identificativo
utente. Lo stesso database contiene anche altre informazioni. Per
creare un utente bisogna aggiungere le informazioni su quell’utente
all'interno del database e creargli una home directory. Due
alternative da linea di comando sono adduser e useradd ,
ma ci possono essere anche degli strumenti grafici.
Il database degli utenti principale in un sistema Unix è il file di
testo /etc/passwd (chiamato anche il file delle password),
che elenca tutti i nomi utente validi e le informazioni ad essi
associate. Il file ha una linea per nome utente e viene diviso in
sette campi delimitati da due punti:
- Username
- Password, in forma criptata
- ID utente numerico
- ID del gruppo numerico
- Nome completo o descrizione dell’account
- Home directory
- Shell di login (programma da avviare al login)
Qualsiasi utente sul sistema può leggere il file delle password, in
modo da poter, ad esempio, sapere il nome di un altro utente. Ciò
significa che anche la password (il secondo campo) è disponibile per
tutti. Il file delle password contiene le password in forma criptata,
quindi in teoria non ci sono problemi; comunque, la criptazione può
essere decodificata, specialmente se le password sono deboli (brevi o
che si trovano nel dizionario); non è quindi una buona idea tenere le
password nel file delle password.
Molti sistemi Linux usano le shadow password: un modo alternativo
per tenere le password, che vengono immagazzinate criptate in un file
separato, /etc/shadow, leggibile solo da root. Il file /etc/passwd
contiene solo un indicatore speciale nel secondo campo. Qualsiasi
programma che debba verificare un utente è setuid e quindi può
accedere al file delle shadow password. I programmi normali, che usano
solo gli altri campi nel file delle password non possono arrivare a
leggere le password.
Quando viene creata la home directory di un nuovo utente, viene
inizializzata con i file dalla directory /etc/skel.
L’amministratore di sistema può creare dei file in /etc/skel che
daranno un ambiente di default per gli utenti. Ad esempio può creare
un file /etc/skel/.profile che imposta la variabile d’ambiente
EDITOR ad un editor facile da usare. Quando possibile è meglio
mettere le configurazioni globali nei file globali, come /etc/profile.
Ci sono alcuni comandi per modificare le varie proprietà di un
account (cioè il campo rilevante in /etc/passwd):
- chfn. Cambia il campo del nome completo.
- chsh. Cambia la shell di login.
- passwd. Cambia la password.
Il superutente può usare questi comandi per cambiare le proprietà
di qualsiasi account; gli utenti normali possono modificare solo
quelle del proprio.
Il modo migliore di disabilitare un account è cambiare la shell con un
programma speciale che stampa solamente un messaggio. Così, chiunque
provi a collegarsi nell’account, non ci riuscirà e saprà il perché. Il
messaggio può dire all’utente di contattare l’amministratore in modo
da risolvere qualsiasi problema.
Un modo semplice di creare il programma speciale è scrivere degli "script
tail":
\#!/usr/bin/tail +2
Questo account è stato chiuso per un problema di sicurezza
Aspettate che arrivino gli uomini in nero.
Per rimuovere un utente prima vanno rimossi tutti i suoi file, i
file e gli alias della posta, i job di stampa, di cron e at e tutti i
riferimenti all’utente stesso. Poi si rimuovono le linee rilevanti dai
file /etc/passwd ed /etc/group (ricordatevi di rimuovere l’utente da
tutti i gruppi di cui faceva parte). Può essere una buona idea
disabilitare l’account, prima di cominciare a rimuovere tutto, per
evitare che l’utente usi l’account mentre lo state rimuovendo.
Ricordate che gli utenti possono avere dei file al di fuori della
home directory. Li potete trovare con il comando find:
find / -user username
Con Madeinlinux si può usare anche il comando userdel.
5.1 Gestire
la user quota
Quota permette di limitare due aspetti dell’uso di spazio
sui dischi: il numero di inodes che un utente o un gruppo può
usare ed il numero di blocchi su disco che possono essere
dedicati ad un utente o un gruppo di utenti. Quota è supportato da
vari file system, tra cui ufs, ext2, ext3, reiserFS e xfs.
Il principio dietro quota è che gli utenti sono obbligati a
rimanere entro i loro limiti di uso di spazio su disco. Quota si
calcola in base all’utente ed al filesystem: se ci sono diversi file
system su cui un utente può scrivere, allora deve essere assegnata una
quota all’utente per ogni file system.
Per abilitare la quota su un file system, si deve aggiungere
usrquota al quarto campo contenente la parola defaults in
/etc/fstab.
/dev/hda1 / ext2 defaults 1 1 /dev/hda2
/usr ext2 defaults,usrquota 1 1
Si può sostituire usrquota con grpquota per abilitare
la quota per i gruppi, o usarli insieme:
/dev/hda1 / ext2 defaults 1 1 /dev/hda2
/usr ext2 defaults,grpquota 1 1 /dev/hda1 / ext2 defaults 1 1 /dev/hda2
/usr ext2 defaults,usrquota,grpquota 1 1
Per finire, bisogna creare i file quota.user e
quota.group nelle partizioni interessate. Per assegnare una quota
stabilita si usa il comando edquota:
edquota -u pippo
Questo comando apre l’editor vi permettendo di modificare la
quota per l’utente pippo su tutte le partizioni che hanno quota
abilitato:
Quotas for user pippo: /dev/hda2:
blocks in use: 2594, limits (soft = 5000, hard = 6500) inodes in use:
356, limits (soft = 1000, hard = 1500)
Conviene controllare periodicamente che gli utenti non sforino la
loro quota. Per questo si può usare cron e quotacheck:
aggiungendo questa riga al crontab si ha un controllo settimanale sui
filesystem:
0 3 * * 0 /sbin/quotacheck
-avug
|