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
  <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
  <http://www.sourceforge.net/project/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/
  <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 <file scaricato> | 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.