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.