Quota mini-HOWTO
Ralf van Dooren r.vdooren@snow.nl
v0.5, 2003-08-09
Preambolo: Questo documento è stato scritto da Ralf van Dooren
(r.vdooren@snow.nl). Il testo originale è di Albert M.C. Tam, che
ringrazio molto per la stesura iniziale di questo mini-HOWTO. Questo
documento è sotto i termini della licenza GNU Free Documentation
Licence. Traduzione a cura di Alessio Rolleri
(aroller(at)libero.it) e revisione a cura di Beatrice Torracca.
Permission to use, copy, distribute this document for non-commercial
purposes is hereby granted, provided that the author's / editor's name
and this notice appear in all copies and/or supporting documents; that
this document is not modified. This document is distributed in hope
that it will be useful, but WITHOUT ANY WARRANTY, either expressed or
implied. While every effort has been taken to ensure the accuracy of
the information documented herein, the author / editor / maintainer
assumes NO RESPONSIBILITY for errors, or for damages results for the
use of the information documented herein.
Questo documento descrive come abilitare le quote d'uso del disco su
un sistema Linux, assegnarle agli utenti e ai gruppi e l'uso dei vari
comandi. È rivolto agli utenti che hanno installato il kernel 2.x (è
stato recentemente testato sul kernel 2.4.21).
Se trovate un errore o se qualche informazione è mancante, inviate
commenti e feedback a r.vdooren@snow.nl. Saranno apprezzati.
11.. CCoossaa ssoonnoo llee qquuoottee??
11..11.. AA ccoossaa sseerrvvoonnoo llee qquuoottee??
Le quote permettono di specificare dei limiti in due aspetti dello
spazio sul disco: il numero di inode che può avere un utente o un
gruppo di utenti e il numero di blocchi sul disco che possono essere
allocati ad un utente o a un gruppo di utenti.
L'idea che sta dietro a ciò consiste nel fatto che gli utenti siano
costretti a rimanere sotto a un limite di utilizzo del disco,
togliendo loro la possibilità di consumare spazio illimitato su un
sistema. Le quote sono gestite per utente e per filesystem. Se c'è più
di un filesystem nel quale è previsto che un utente possa creare file,
allora la quota d'uso deve essere impostata per ogni filesystem
separatamente. Sono disponibili diversi strumenti per amministrare e
automatizzare le regole per le quote sul proprio sistema.
11..22.. SSttaattoo aattttuuaallee ddeellllee qquuoottee ssuu LLiinnuuxx
Attualmente, ci sono grandi cambiamenti nel modo in cui le quote
funzionano. Esistono due impostazioni differenti. Gli strumenti fanno
lo stesso lavoro, ma ci sono differenze nei file usati. Questo
documento descrive l'installazione e il funzionamento del nuovo
metodo. Siccome esso non è presente nei normali sorgenti del kernel, è
necessario usare delle patch. Verrà descritta questa operazione e
l'installazione del pacchetto linuxquota. Se nel proprio sistema è già
installato il software per le quote, è possibile che non si debba
installare la patch e il pacchetto. Potete scrivermi se ci sono
domande a proposito. In una prossima versione del documento tenterò di
includere una panoramica delle distribuzioni di Linux e le loro
implicazioni.
22.. RReeqquuiissiittii ppeerr llee qquuoottee
22..11.. KKeerrnneell
I sorgenti del kernel 2.x sono disponibili qui: http://www.kernel.org
. Per risparmiare banda, si prega di usare un
mirror vicino alla propria località. Se si possiede una versione
recente di tar si può scaricare il file compresso .bz2.
Scompattare il kernel:
______________________________________________________________________
cd /usr/src
tar jxvf /percorso/di/linux-2.4.21-tar.bz2 - per file del kernel bzip2 -
tar zxvf /percorso/di/linux-2.4.21-tar.gz - per file del kernel gzip -
ln -s /usr/src/linux-2.4.21 /usr/src/linux
______________________________________________________________________
22..22.. SSooffttwwaarree
A seconda della propria distribuzione, è possibile che siano presenti
nel sistema i software per le quote. La versione più recente è
disponibile attraverso SourceForge ed è in sviluppo. Si può
raggiungere il sito dello sviluppo del software delle quote a
http://www.sourceforge.net/projects/linuxquota
.
33.. IImmppoossttaazziioonnee ddeellllee qquuoottee:: iinnssttaallllaazziioonnee ee ccoonnffiigguurraazziioonnee
33..11.. AApppplliiccaarree llaa ppaattcchh aall kkeerrnneell
Scaricare la patch per il proprio kernel qui:
ftp://atrey.karlin.mff.cuni.cz/pub/local/jack/quota/
.
Scegliere la propria versione del kernel e scaricare la(le) patch.
Applicarla con il comando "patch". Se c'è più di una patch per la
propria versione del kernel, assicurarsi di applicare le patch
nell'ordine corretto.
Si può usare questo script (si assume che le patch scaricate siano in
/tmp/quota/ e che il kernel sia stato scompattato in /usr/src/linux):
______________________________________________________________________
#!/bin/sh
gunzip /tmp/quota/*.gz
cd /usr/src/linux
COUNT=`ls -1 /tmp/quota/*.diff | wc -l`
for I in `seq 1 $COUNT`
do
patch -p1 < /tmp/quota/quota-2.4.21-$I-*.diff
done
______________________________________________________________________
33..22.. RRiiccoonnffiigguurraarree iill kkeerrnneell
Riconfigurare il kernel e aggiungere il supporto per le quote.
Attraverso 'make menuconfig' o 'make xconfig' si possono trovare le
opzioni per il supporto delle quote nel menu Filesystems. Se
necessario si possono specificare ulteriori opzioni come il supporto
per gli UID a 32 bit.
Salvare la configurazione e compilare il kernel. Assicurarsi che verrà
utilizzato il nuovo kernel al riavvio del sistema.
33..33.. CCoommppiillaarree ee iinnssttaallllaarree iill ssooffttwwaarree ppeerr llee qquuoottee
Per usare tutte le caratteristiche del nuovo sistema delle quote,
probabilmente sarà necessario scaricare il nuovo pacchetto. Scaricare
il nuovo software per le quote attraverso l'URL suddetta.
Quando è stato scaricato, avviare i comandi:
______________________________________________________________________
$ gzip -dc | tar xvf
$ cd quota-tools (o qualunque directory in cui sia stato messo il software)
$ ./configure
$ make
$ su
# make install
______________________________________________________________________
33..44.. MMooddiiffiiccaarree lloo ssccrriipptt iinniitt ddeell pprroopprriioo ssiisstteemmaa ppeerr ccoonnttrroollllaarree llee
qquuoottee ee aabbiilliittaarree llee qquuoottee aallll''aavvvviioo
Ecco un esempio:
______________________________________________________________________
# Controllo e abilitazione quote.
if [ -x /usr/sbin/quotacheck ]
then
echo "Controllo quote. Potrebbe richiedere parecchio tempo."
/usr/sbin/quotacheck -avug
echo " Fatto."
fi
if [ -x /usr/sbin/quotaon ]
then
echo "Abilitazione quote."
/usr/sbin/quotaon -avug
fi
______________________________________________________________________
La regola d'oro consiste nell'abilitare le quote dopo che i propri
filesystem in /etc/fstab siano stati montati, altrimenti non
funzioneranno. Si raccomanda di abilitare le quote subito dopo il
montaggio dei filesystem da parte dello script init.
33..55.. MMooddiiffiiccaarree //eettcc//ffssttaabb
Le partizioni che non hanno le quote attivate normalmente appaiono
così:
______________________________________________________________________
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults 1 1
______________________________________________________________________
Per abilitare il supporto per le quote in un filesystem, aggiungere
"usrquota" al quarto campo contenente la parola "defaults" (man fstab
per i dettagli).
______________________________________________________________________
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,usrquota 1 1
______________________________________________________________________
È necessario sostituire "usrquota" con "grpquota" per avere il
supporto delle quote per i gruppi su un filesystem.
______________________________________________________________________
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,grpquota 1 1
______________________________________________________________________
Sono necessarie le quote sia per gli utenti che per i gruppi su un
filesystem?
______________________________________________________________________
/dev/hda1 / ext2 defaults 1 1
/dev/hda2 /usr ext2 defaults,usrquota,grpquota 1 1
______________________________________________________________________
33..66.. AAttttiivvaarree iill ssiisstteemmaa ddii qquuoottee
Per attivare il software bisogna riavviare il sistema per rendere
effettivi i cambiamenti fatti. Il nuovo kernel con il supporto per le
quote sarà caricato e lo script di avvio appena creato sarà eseguito.
Al primo avvio, quotacheck genererà i file appropriati per mantenere
il database delle quote.
33..77.. AAggggiiuunnggeerree qquuoottaacchheecckk aa ccrroonnttaabb
Nonostante le quote funzionino con dei controlli periodici, a volte
può essere utile avviare quotacheck periodicamente, ad esempio
settimanalmente. Aggiungere la seguente linea al file crontab di root:
______________________________________________________________________
0 3 * * 0 /sbin/quotacheck -avug
______________________________________________________________________
44.. IImmppoossttaazziioonnee ddeellllee qquuoottee:: ssttrruummeennttii
Questa operazione verrà effettuata con il comando edquota (man edquota
per i dettagli).
44..11.. AAsssseeggnnaarree llaa qquuoottaa aadd uunn ppaarrttiiccoollaarree uutteennttee
Ecco un esempio. Si ha un utente con username bob sul proprio sistema.
Il comando "edquota -u bob" apre vi (o l'editor specificato nella
propria variabile d'ambiente $EDITOR) per modificare la quota
dell'utente bob su ogni partizione dove sono abilitate le quote:
______________________________________________________________________
Quotas for user bob:
/dev/hda3: blocks in use: 2594, limits (soft = 5000, hard = 6500)
inodes in use: 356, limits (soft = 1000, hard = 1500)
______________________________________________________________________
"blocks in use" è il numero totale di blocchi (in kilobyte) che
l'utente ha consumato sulla partizione.
"inodes in use" è il numero totale di inode che l'utente ha consumato
sulla partizione.
44..22.. AAsssseeggnnaarree llee qquuoottee ppeerr uunn ppaarrttiiccoollaarree ggrruuppppoo
Ora si consideri un gruppo "games" sul proprio sistema. "edquota -g
games" apre vi per modificare le quote di questo gruppo:
______________________________________________________________________
Quotas for group games:
/dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)
inodes in use: 1454, limits (soft = 3000, hard = 4000)
______________________________________________________________________
44..33.. AAsssseeggnnaarree aadd uunn iinnssiieemmee ddii uutteennttii llee sstteessssee qquuoottee
Per impostare a 1000 utenti (per esempio) lo stesso valore di quota
dell'utente bob sul proprio sistema, si dovrà prima impostare il
valore per bob manualmente, e in seguito eseguire:
______________________________________________________________________
edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`
______________________________________________________________________
presumendo l'uso di csh e l'assegnamento dell'UID utente partendo da
500.
In aggiunta a edquota, ci sono 3 termini che devono essere noti: Soft
Limit, Hard Limit e Grace Period
44..44.. SSoofftt LLiimmiitt
_Soft Limit_ indica l'ammontare massimo d'uso del disco di cui un
utente dispone su una partizione. Quando viene combinato con Grace
Period, esso agisce come una linea di confine, emettendo un
avvertimento quando un utente la oltrepassa.
44..55.. HHaarrdd LLiimmiitt
Hard Limit funziona solo quando è impostato Grace Period. Specifica il
limite assoluto d'uso del disco, che non può essere violato da un
utente.
44..66.. GGrraaccee PPeerriioodd
Avviato con il comando "edquota -t", il Grace Period è il limite di
tempo disponibile prima che venga fatto rispettare il Soft Limit, in
un filesystem con quote. Possono essere usate unità di tempo di
secondi, minuti, ore, giorni, settimane e mesi. Questo è quanto appare
con il comando "edquota -t":
______________________________________________________________________
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda2: block grace period: 0 days, file grace period: 0 days
______________________________________________________________________
Cambiare la parte che indica "0 days" con qualunque intervallo di
tempo venga ritenuto ragionevole, personalmente sceglierei 7 giorni (o
una settimana).
55.. CCoommaannddii VVaarrii
55..11.. QQuuoottaacchheecckk
Quotacheck è usato per controllare un filesystem per l'uso del disco e
aggiornare il file "aquota.user" alla situazione recente. Raccomando
di avviare quotacheck all'avvio del sistema e periodicamente
attraverso cronjob (ogni settimana, ad esempio?).
55..22.. RReeppqquuoottaa
Repquota fornisce un riepilogo delle informazioni sulle quote per un
filesystem. Ecco un esempio di output:
______________________________________________________________________
# repquota -a
Block limits File limits
User used soft hard grace used soft hard grace
root -- 175419 0 0 14679 0 0
bin -- 18000 0 0 735 0 0
uucp -- 729 0 0 23 0 0
man -- 57 0 0 10 0 0
user1 -- 13046 15360 19200 806 1500 2250
user2 -- 2838 5120 6400 377 1000 1500
______________________________________________________________________
55..33.. QQuuoottaaoonn ee QQuuoottaaooffff
Quotaon è usato per avviare il calcolo delle quote; quotaoff per
terminarlo. Entrambi i file sono simili e vengono eseguiti all'avvio e
allo spegnimento del sistema.