Quota Mini-Howto par Albert M.C. Tam (bertie@scn.org) Version du 08 Aout 1997 (Adaptation francaise 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. PPrreeaammbbuullee :: Ce document a ete ecrit par Albert M.C. Tam (bertie@scn.org). 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 bertie@scn.org 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. .