Quota Mini-Howto
 par Albert M.C. Tam ([email protected])
 Version du 08 Aout 1997

 (Adaptation francaise par Antoine Levavasseur [email protected], le 14
 Octobre 1997).  L'objectif de ce mini-howto  est  d'expliquer  comment
 mettre en place et utiliser les quotas sous linux.

 PPrreeaammbbuullee   ::    Ce   document   a  ete  ecrit  par  Albert  M.C.  Tam
 ([email protected]).  La possibilite d'utiliser,  copier,  distribuer  ce
 document pour une utilisation non-commerciale est permise, a partir du
 moment ou la  presente  remarque   et  les  noms  de  l'auteur  et  de
 l'editeur  apparaissent  sur  toutes  les  copies  et/ou  supports  du
 document; et que le  document  n'est  pas  modifie.  Ce  document  est
 diffuse  en  esperant  qu'il  sera  utile,  mais sans AUCUNE GARANTIE,
 exprimee ou implicite. Bien que tous les efforts ait  ete  faits  pour
 s'assurer  de  l'exactitude  des  informations  du  present  document,
 l'auteur / editeur / mainteneur n'assume  AUCUNE  RESPONSABILITE  pour
 des   erreurs,   ou   des   domages  resultant  de  l'utilisation  des
 informations du present document.

 Ce document decrit comment activer un quota sur le systeme 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  destine  aux  utilisateurs  utilisant  un  noyau  2.x  (teste
 recemment sur RedHat 4.1 avec un noyau 2.0.27). Les  utilisateurs  qui
 utilisent des noyaux plus vieux doivent se mettre a jour avec un noyau
 plus recent pour pouvoir utiliser les quotas.

 N'hesitez  pas  a  envoyer  vos   commentaires   et   point-de-vue   a
 [email protected]  si  vous  trouvez  une  erreur,  ou qu'une information
 manquante. J'aprecierai.

 11..  LLeess QQuuoottaass,, qquu''eesstt--ccee qquuee cc''eesstt ??

 Les quotas permettent de specifier les limites  sur  deux  aspects  du
 stockage  sur  disque  :  le nombre d'i-noeuds qu'un utilisateur ou un
 groupe peux posseder; et le nombre de blocks disques qui peuvent etres
 alloues a un utilisateur ou un groupe d'utilisateurs.

 L'idee  des  quotas, c'est que les utilisateurs sont obliges de rester
 sous leur limite de consomation de disque, perdant leur possiblite  de
 saturer la totalite de l'espace disque d'un systeme.

 Les  quotas sont supportes sur une base par utilisateur et par systeme
 de fichier. Si il y a plus d'un systeme de fichiers ou un  utilisateur
 qui  est  cense  creer  des  fichiers,  alors  les quotas doivent etre
 configures separemment sur chaque systeme de fichier.

 11..11..  EEttaatt aaccttuueell ddeess qquuoottaass ssoouuss LLiinnuuxx

 Le support des quotas a ete integre 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  systeme  ne  supporte  pas  les  quotas,  je
 recommande chaudement une mise a jour.

 Actuellement  les quotas ne fonctionnent qu'avec le systeme de fichier
 eexxtt22.

 11..22..  QQuuee ffaauutt--iill ppoouurr uuttiilliisseerr lleess QQuuoottaass ssuurr LLiinnuuxx

 11..22..11..  NNooyyaauu

 Les    sources    du    noyau     2.x     sont     disponibles     sur
 http://sunsite.unc.edu/pub/Linux/kernel/v2.0    ou   plus   pres   sur
 ffttpp..lliipp66..ffrr .

 11..22..22..  PPrrooggrraammmmeess ppoouurr lleess qquuoottaass

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

 22..  PPaarrttiiee II :: LLaa ccoonnffiigguurraattiioonn

 22..11..  RReeccoonnffiigguurreerr vvoottrree nnooyyaauu

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

      Quota support (CONFIG_QUOTA) n y

 22..22..  CCoommppiilleerr eett iinnssttaalllleerr lleess pprrooggrraammmmeess ddeess qquuoottaass

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

 22..33..  lleess aaccttiivveerr lloorrss dduu bboooott..  MMooddiiffiieerr lleess ssccrriippttss  iinniitt  ddee  vvoottrree
 ssyysstteemmee ppoouurr vveerriiffiieerr lleess qquuoottaass eett

 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 regle d'or est de ttoouujjoouurrss  activer  les  quotas  aapprreess  que  votre
 systeme  de fichier ait ete monte avec /etc/fstab, sinon les quotas ne
 fonctionneront pas. Je recommande d'activer les quotas  a  la  fin  de
 votre  script  init, ou, si vous preferez, juste apres la partie ou le
 script init monte les systemes de fichiers.

 22..44..  MMooddiiffiieerr //eettcc//ffssttaabb

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

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

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

      /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 syteme de fichiers.

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

 Vous avez besoin a 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

 22..55..    CCrreeeerr   lleess   eennrreeggiissttrreemmeennttss   ddeess   qquuoottaass  ""qquuoottaa..uusseerr""  eett
 ""qquuoottaa..ggrroouupp""

 Les   deux   fichiers   d'enregistrement  des  quotas,  quota.user  et
 quota.group, doivent etre possedes par root, et avec  les  permissions
 lecture_ecriture pour root et personne d'autre.

 Logguez-vous  en  root.  Allez  sur  la  partition root ou vous voulez
 activer les quota, et creez 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

 22..66..  RReebbooootteerr

 Maintenant rebooter votre systeme 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
 etapes 4, 5 et 6.

 33..  PPaarrttiiee IIII :: AAttttrriibbuueerr lleess qquuoottaass aauuxx uuttiilliissaatteeuurrss eett aauuxx  ggrroouuppeess..

 Cette  operation est assuree par la commande eeddqquuoottaa (man edquota pour
 les details).

 J'utilise generalement qquuoottaacchheekk avec les flags --aavvuugg pour  avoir  les
 fichiers  les  plus  a  jour possible avant d'editer les quotas. C'est
 juste une habitude personnelle, mais pas une etape indispensable.

 33..11..  AAttttrriibbuueerr lleess qquuoottaass ppoouurr uunn uuttiilliissaatteeuurr ppaarrttiiccuulliieerr

 Voici un exemple. J'ai un utilisateur  avec  le  loggin  _b_o_b  sur  mon
 systeme.   La  commande  edquota  -u  bob  me  lance  vi (ou l'editeur
 specifie dans la variable d'environnement  $EDITOR)  pour  editer  les
 quotas  pour  l'utilisateur _b_o_b sur chacune des partitions ou le quota
 est active.

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

 bblloocckk uuttiilliisseess est le nombre total de blocks (en Ko) que l'utilisateur
 a deja consomme sur la partition.

 ii--nnooeeuuddss  uuttiilliisseess  est  le nombre total de fichiers que l'utilisateur
 possede sur la partition.

 33..22..  AAttttrriibbuueerr lleess qquuoottaass ssuurr uunn ggrroouuppee ppaarrttiiccuulliieerr

 Maintenant, il y a un groupe _g_a_m_e_s sur mon systeme. eeddqquuoottaa  --gg  ggaammeess
 lance une nouvelle fois l'editeur vi pour editer le groupe _g_a_m_e_s :

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

 33..33..   AAttttrriibbuueerr  lleess  qquuoottaass  ppoouurr pplluussiieeuurrss uuttiilliiaatteeuurrss aavveecc llaa mmeemmee
 vvaalleeuurr

 Pour   attribuer   rapidement   les   quotas  pour,  par  exemple  100
 utilisateurs,  sur  mon  systeme  avec  la  meme   valeur   que   pour
 l'utilisateur _b_o_b, je vais d'abord editer les quotas de _b_o_b a la main,
 et ensuite executer :

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

 en partant du principe que vous utilisez ccsshh, et que les  UID  de  vos
 utilisateurs commencent a 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
 delais (Grace Period).

 LLiimmiittee ddoouuccee ((SSoofftt LLiimmiitt))
 La  limite  douce  indique  la quantite maximale qu'un utilisteur peut
 utiliser sur une partition.  En  combinaison  avec  le  delais  (Grace
 Period),  il  agit  d'une frontiere, a partir de laquelle des messages
 d'avertissement sont envoyes pour informer  du  depassement  de  quota
 lorsqu'il survient.

 LLiimmiittee dduurree ((HHaarrdd LLiimmiitt))
 La limite dure ne fonctionne que lorsque le delais est configure. Cela
 definit  la  limite   absolue   de   l'utilisation   disque,   puisque
 l'utilisateur ne peut depasser la limite dure.

 DDeellaaiiss  ((GGrraaccee PPeerriioodd)) Lance par la commande eeddqquuoottaa --tt, le delais est
 une limite de temps avant que la limite douce soit  renforcee  sur  un
 systeme  de  fichiers  ou les quotas sont actives. Les unites de temps
 "sec(onds), min(utes), hour(s), day(s), week(s), and month(s)" peuvent
 etre utilisees. Voici ce que nous voyons avec la commande eeddqquuoottaa --tt :

      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 duree qui vous semble  resonnable.
 J'ai choisi personnellement "7 days" (ou une semaine).

 44..  DDiivveerrsseess ccoommmmaannddeess ppoouurr lleess qquuoottaass

 44..11..  QQuuoottaacchheecckk

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

 44..22..  RReeppqquuoottaa

 Repquota affiche un resume des quotas pour le systeme 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

 44..33..  QQuuoottaaoonn eett QQuuoottaaooffff

 Quotaon  est  utiliser pour activer la gestion des quotas; et quotaoff
 pour le terminer. Les fichiers  sont  en  fait  similaires.  Ils  sont
 executes au demarrage et a l'arret du systeme.