
                               Quota Mini-Howto

par Albert M.C. Tam (bertie@scn.org)

   Version du 08 Aot 1997
     _________________________________________________________________

   _(Adaptation franaise par Antoine Levavasseur levavass@efrei.fr, le
   14 Octobre 1997). L'objectif de ce mini-howto est d'expliquer comment
   mettre en place et utiliser les quotas sous linux._
     _________________________________________________________________

   _Dernire Modification_ : Fri Aug 8 09:45:05 HKT 1997

   _Prambule : _Ce document a t crit par Albert M.C. Tam
   (bertie@scn.org). La possibilit d'utiliser, copier, distribuer ce
   document pour une utilisation non-commerciale est permise,  partir du
   moment o la prsente remarque et les noms de l'auteur et de l'diteur
   apparaissent sur toutes les copies et/ou supports du document; et que
   le document n'est pas modifi. Ce document est diffus en esprant
   qu'il sera utile, mais sans AUCUNE GARANTIE, exprime ou implicite.
   Bien que tous les efforts ait t faits pour s'assurer de l'exactitude
   des informations du prsent document, l'auteur / diteur / mainteneur
   n'assume AUCUNE RESPONSABILITE pour des erreurs, ou des domages
   rsultant de l'utilisation des informations du prsent document.

   Ce document dcrit comment activer un quota sur le systme de fichier
   d'une machine Linux, attribuer des quotas pour les utilisateurs et les
   groupes, ainsi que l'utilisation de diverses commandes sur les quotas.
   Il est destin aux utilisateurs utilisant un noyau 2.x (test
   rcemment sur RedHat 4.1 avec un noyau 2.0.27). Les utilisateurs qui
   utilisent des noyaux plus vieux doivent se mettre  jour avec un noyau
   plus rcent pour pouvoir utiliser les quotas.

   N'hsitez pas  envoyer vos commentaires et point-de-vue 
   bertie@scn.org si vous trouvez une erreur, ou qu'une information
   manquante. J'aprcierai.

1. Les Quotas, qu'est-ce que c'est ?

   Les quotas permettent de spcifier les limites sur deux aspects du
   stockage sur disque : le nombre d'i-noeuds qu'un utilisateur ou un
   groupe peux possder; et le nombre de blocks disques qui peuvent tres
   allous  un utilisateur ou un groupe d'utilisateurs.

   L'ide des quotas, c'est que les utilisateurs sont obligs de rester
   sous leur limite de consomation de disque, perdant leur possiblit de
   saturer la totalit de l'espace disque d'un systme.

   Les quotas sont supports sur une base par utilisateur et par systme
   de fichier. Si il y a plus d'un systme de fichiers ou un utilisateur
   qui est cens crer des fichiers, alors les quotas doivent tre
   configurs sparemment sur chaque systme de fichier.

1.1 Etat actuel des quotas sous Linux

   Le support des quotas a t intgr dans le noyau depuis la version
   1.3.8x il me semble. Maintenant il est partie prenante du noyau Linux
   version 2.0. Si votre systme ne supporte pas les quotas, je
   recommande chaudement une mise  jour.

   Actuellement les quotas ne fonctionnent qu'avec le systme de fichier
   _ext2_.

1.2 Que faut-il pour utiliser les Quotas sur Linux

  Noyau

   Les sources du noyau 2.x sont disponibles sur
   http://sunsite.unc.edu/pub/Linux/kernel/v2.0 ou plus prs sur
   _ftp.lip6.fr_ .

  Programmes pour les quotas

   Selon votre distribution Linux, vous avez, ou devez avoir, ou ne pas
   avoir les programmes des quotas installs sur votre systme. Si vous
   ne les avez pas, alors tlchargez les sources des programmes pour les
   quotas sur
   ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz

2. Partie I : La configuration

2.1 Reconfigurer votre noyau

   Reconfigurez votre noyau et ajoutez le support des quotas en rpondant
   'y'  :

     Quota support (CONFIG_QUOTA) [n] y

2.2 Compiler et installer les programmes des quotas

   Les sources des programmes des quotas sont disponibles sur
   ftp://ftp.funet.fi/pub/Linux/PEOPLE/Linus/subsystems/quota/all.tar.gz

2.3 Modifier les scripts init de votre systme pour vrifier les quotas et les
activer lors du boot.

   Voici un exemple :

# Check quota and then turn quota on.
if [ -x /usr/sbin/quotacheck ]
then
     echo "Checking quotas. This may take some time."
     /usr/sbin/quotacheck -avug
     echo " Done."
fi

if [ -x /usr/sbin/quotaon ]
then
      echo "Turning on quota."
      /usr/sbin/quotaon -avug
fi

   La rgle d'or est de _toujours_ activer les quotas _aprs_ que votre
   systme de fichier ait t mont avec /etc/fstab, sinon les quotas ne
   fonctionneront pas. Je recommande d'activer les quotas  la fin de
   votre script init, ou, si vous prfrez, juste aprs la partie ou le
   script init monte les systmes de fichiers.

2.4 Modifier /etc/fstab

   Les partitions sur lesquelles vous n'avez pas encore activ les quotas
   ressemblant normalement  :

/dev/hda1       /       ext2    defaults        1       1
/dev/hda2       /usr    ext2    defaults        1       1

   Pour activer le support des quotas utilisateur pour un systme de
   fichiers, ajoutez "usrquota" dans le quatrime champ contenant le mot
   "defaults" (man fstab pour avoir des dtails).

/dev/hda1       /       ext2    defaults                1       1
/dev/hda2       /usr    ext2    defaults,usrquota       1       1

   Remplacez "usrquota" par "grpquota", si vous avez besoin du support
   des quotas pour les groupes sur un sytme de fichiers.

/dev/hda1       /       ext2    defaults                1       1
/dev/hda2       /usr    ext2    defaults,grpquota       1       1

   Vous avez besoin  la fois du support des quotas pour les groupes et
   les utilisateurs ?

/dev/hda1       /       ext2    defaults                        1       1
/dev/hda2       /usr    ext2    defaults,usrquota,grpquota      1       1

2.5 Crer les enregistrements des quotas "quota.user" et "quota.group"

   Les deux fichiers d'enregistrement des quotas, quota.user et
   quota.group, doivent tre possds par root, et avec les permissions
   lecture_criture pour root et personne d'autre.

   Logguez-vous en root. Allez sur la partition root o vous voulez
   activer les quota, et crez quota.user et quota.group en faisant :

touch /partition/quota.user
touch /partition/quota.group
chmod 600 /partition/quota.user
chmod 600 /partition/quota.group

2.6 Rebooter

   Maintenant rebooter votre systme pour que les changements que vous
   avez fait prennent effet.

   Remarquez que pour les partitions pour lesquelles vous souhaiteriez
   activer les quotas dans le futur, vous avez seuleument besoin des
   tapes 4, 5 et 6.

3. Partie II : Attribuer les quotas aux utilisateurs et aux groupes.

   Cette opration est assure par la commande _edquota_ (man edquota
   pour les dtails).

   J'utilise gnralement _quotachek_ avec les flags _-avug_ pour avoir
   les fichiers les plus  jour possible avant d'diter les quotas. C'est
   juste une habitude personnelle, mais pas une tape indispensable.

3.1 Attribuer les quotas pour un utilisateur particulier

   Voici un exemple. J'ai un utilisateur avec le loggin _bob_ sur mon
   systme. La commande edquota -u bob me lance vi (ou l'diteur spcifi
   dans la variable d'environnement $EDITOR) pour diter les quotas pour
   l'utilisateur _bob_ sur chacune des partitions o le quota est activ.

Quotas for user bob:
 /dev/hda2: blocks in use: 2594, limits (soft = 5000, hard = 6500)
             inodes in use: 356, limits (soft = 1000, hard = 1500)

   _block utiliss_ est le nombre total de blocks (en Ko) que
   l'utilisateur a dj consomm sur la partition.

   _i-noeuds utiliss_ est le nombre total de fichiers que l'utilisateur
   possde sur la partition.

3.2 Attribuer les quotas sur un groupe particulier

   Maintenant, il y a un groupe _games_ sur mon systme. _edquota -g
   games_ lance une nouvelle fois l'diteur vi pour diter le groupe
   _games_ :

Quotas for group games:
   /dev/hda4: blocks in use: 5799, limits (soft = 8000, hard = 10000)
              inodes in use: 1454, limits (soft = 3000, hard = 4000)

3.3 Attribuer les quotas pour plusieurs utiliateurs avec la mme valeur

   Pour attribuer rapidement les quotas pour, par exemple 100
   utilisateurs, sur mon systme avec la mme valeur que pour
   l'utilisateur _bob_, je vais d'abord diter les quotas de _bob_  la
   main, et ensuite excuter :

edquota -p bob `awk -F: '$3 > 499 {print $1}' /etc/passwd`

   en partant du principe que vous utilisez _csh_, et que les UID de vos
   utilisateurs commencent  partir de 500.

   En plus de edquota, il y a trois termes avec lesquels vous devez vous
   familiariser : Limite douce (Soft Limit), Limite dure (Hard Limit), et
   dlais (Grace Priod).

   _Limite douce (Soft Limit)_
   La limite douce indique la quantit maximale qu'un utilisteur peut
   utiliser sur une partition. En combinaison avec le dlais (Grace
   Priod), il agit d'une frontire,  partir de laquelle des messages
   d'avertissement sont envoys pour informer du dpassement de quota
   lorsqu'il survient.

   _Limite dure (Hard Limit)_
   La limite dure ne fonctionne que lorsque le dlais est configur. Cel
   dfinit la limite absolue de l'utilisation disque, puisque
   l'utilisateur ne peut dpasser la limite dure.

   _Dlais (Grace Period)_ Lanc par la commande _edquota -t_, le dlais
   est une limite de temps avant que la limite douce soit renforce sur
   un systme de fichiers ou les quotas sont activs. Les units de temps
   "sec(onds), min(utes), hour(s), day(s), week(s), and month(s)" peuvent
   tre utilises. Voici ce que nous voyons avec la commande _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

   Changer la partie "0 days" pour une dure qui vous semble rsonnable.
   J'ai choisi personnellement "7 days" (ou une semaine).

4. Diverses commandes pour les quotas

4.1 Quotacheck

   Quotacheck est utilis pour vrifier le systme de fichier et les
   utilisations disque pour mettre le plus  possible le fichier
   enregistrement "quota.user" Je recommande de lancer quotacheck au boot
   du systme, ou rgulirement avec cron (par exemple chaque semaine ?).

4.2 Repquota

   Repquota affiche un rsum des quotas pour le systme de fichiers.
   Voici une sortie type de repquota :

# 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

4.3 Quotaon et Quotaoff

   Quotaon est utiliser pour activer la gestion des quotas; et quotaoff
   pour le terminer. Les fichiers sont en fait similaires. Ils sont
   excuts au dmarrage et  l'arrt du systme.
