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.