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 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.

1. Cosa sono le quote?

1.1 A cosa servono le quote?

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.

1.2 Stato attuale delle quote su Linux

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.

2. Requisiti per le quote

2.1 Kernel

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

2.2 Software

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.

3. Impostazione delle quote: installazione e configurazione

3.1 Applicare la patch al kernel

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

3.2 Riconfigurare il kernel

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.

3.3 Compilare e installare il software per le quote

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 <file scaricato> | tar xvf 
$ cd quota-tools  (o qualunque directory in cui sia stato messo il software)
$ ./configure
$ make
$ su
# make install

3.4 Modificare lo script init del proprio sistema per controllare le quote e abilitare le quote all'avvio

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.

3.5 Modificare /etc/fstab

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

3.6 Attivare il sistema di quote

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.

3.7 Aggiungere quotacheck a crontab

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

4. Impostazione delle quote: strumenti

Questa operazione verrà effettuata con il comando edquota (man edquota per i dettagli).

4.1 Assegnare la quota ad un particolare utente

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.

4.2 Assegnare le quote per un particolare gruppo

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)

4.3 Assegnare ad un insieme di utenti le stesse quote

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

4.4 Soft Limit

_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.

4.5 Hard Limit

Hard Limit funziona solo quando è impostato Grace Period. Specifica il limite assoluto d'uso del disco, che non può essere violato da un utente.

4.6 Grace Period

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).

5. Comandi Vari

5.1 Quotacheck

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?).

5.2 Repquota

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

5.3 Quotaon e Quotaoff

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.