Copyright © 2008 Joey Prestia
Copyright © 2008 Deny
Copyright © 2008 Joëlle Cornavin
Article paru dans le n°149 de la Gazette Linux d'avril 2008.
Article publié sous Open Publication License. La Linux Gazette n'est ni produite, ni sponsorisée, ni avalisée par notre hébergeur principal, SSC, Inc.
Installer des quotas de disque pour des utilisateurs et des groupes est très important — éminemment nécessaire, en fait, si vous ne voulez pas être à court d'espace sur le serveur que vous administrez. Ils sont généralement utilisés pour les machines exécutées en tant que serveurs web dotés d'un accès FTP, pour empêcher un quelconque client d'effectuer des dépôts sur le serveur (ou « téléverser » (upload)) au-delà de la quantité d'espace qu'ils ont achetée dans leur contrat. On peut également employer des quotas de disque sur des serveurs Samba pour les dossiers personnels des utilisateurs et les systèmes de fichiers NFS. Votre serveur Linux
peut facilement être configuré pour maintenir vos utilisateurs dans les limites indiquées et pour les empêcher de remplir la partition. Certaines personnes surferont sur Internet et téléchargeront négligemment des vidéos et des MP3 pendant leur pause déjeuner, faisant manquer les autres utilisateurs d'espace pour leurs fichiers de travail. Pour empêcher ce genre d'activité, nous allons installer des quotas d'utilisateur et de groupe pour fixer des limites aux utilisateurs.
Les quotas sont définis partition par partition, ainsi, si on les installe sur un serveur web (ou un serveur NFS ou Samba), il faut savoir si l'espace qui nous intéresse se trouve dans sa propre partition. Dans ce tutoriel, on étudiera une installation standard avec des utilisateurs multiples.
La première étape consiste à déterminer si notre partition home
est dans une partition séparée — pour la plupart des serveurs de production, elle est dans sa propre partition (une partition dédiée). Ainsi, observons à quoi ressemble notre partitionnement :
[root@station17 ~]# df -h Filesystem Size Used Avail Use% Mounted on /dev/sda3 2.9G 205M 2.6G 8% / /dev/sda1 289M 17M 258M 6% /boot none 1013M 0 1013M 0% /dev/shm /dev/sda5 2.0G 36M 1.9G 2% /tmp /dev/sda2 9.7G 6.2G 3.1G 67% /usr /dev/sda7 2.0G 239M 1.6G 13% /var /dev/sda8 9.2G 54M 8.7G 1% /home [root@station17 ~]#
Comme le montre l'exemple ci-dessus, home
est dans une partition dédiée. Il s'agit à présent de placer les options de montage (mount
) dans la table du système de fichiers, /etc/fstab
, donc à chaque fois que le système est redémarré, les quotas sont toujours actifs :
[root@station17 ~]# vi /etc/fstab # This file is edited by fstab-sync - see 'man fstab-sync' for details LABEL=/1 / ext3 defaults 1 1 LABEL=/boot /boot ext3 defaults 1 2 none /dev/pts devpts gid=5,mode=620 0 0 none /dev/shm tmpfs defaults 0 0 LABEL=/home /home ext3 defaults,usrquota,grpquota 1 2 none /proc proc defaults 0 0 none /sys sysfs defaults 0 0 LABEL=/tmp /tmp ext3 defaults 1 2 LABEL=/usr /usr ext3 defaults 1 2 LABEL=/var /var ext3 defaults 1 2 LABEL=SWAP-sda6 swap swap defaults 0 0 /dev/scd0 /media/cdrecorder auto pamconsole,exec,noauto,managed 0 0 [root@station17 ~]#
Dans l'exemple ci-dessus, on peut voir à quel endroit j'ai ajouté usrquota
et grpquota
sur la ligne des options de montage, dans fstab
. À présent, pour permettre l'utilisation de ces options supplémentaires, il faut remonter home
avec ces nouvelles options activées.
[root@station17 ~]# mount -v -o remount /home /dev/sda8 on /home type ext3 (rw,usrquota,grpquota) [root@station17 ~]#
Ici, on remarque que home
a été remonté avec les options supplémentaires de quotas pour les utilisateurs et de quotas pour les groupes. À l'aide de la commande quotacheck, on crée le fichier initial de quota de disque. Dès que cette commande est exécutée, elle crée deux fichiers situés dans le répertoire home
, nommés aquota.user
et aquota.group
. Ce sont des fichiers binaires qui mémorisent nos quotas. Nous souhaitons qu'ils soient exécutés avec -cug
comme options en ligne de commande : c
doit effectuer un nouveau balayage et l'enregistrer sur le disque, u
est pour l'utilisateur et g
représente le groupe. Ensuite, nous activerons les quotas avec la commande quotaon, en indiquant pour quelle partition nous souhaitons les activer :
[root@station17 ~]# quotacheck -cug /home [root@station17 ~]# quotaon /home [root@station17 ~]#
À ce stade, on peut modifier les quotas des utilisateurs avec la commande edquota. Cette dernière lance à cet effet l'éditeur vi, et nous voyons certaines colonnes qui nécessitent une petite explication. Les blocs représentent les limites douce et dure (soft/hard limits) de taille des quotas, alors que la colonne des inodes est réservée à une configuration de quotas fondée sur le nombre de fichiers qu'un utilisateur peut créer. La limite douce peut être dépassée pendant une période de grâce définie, mais atteindre la limite dure arrêtera définitivement un utilisateur.
Créons un utilisateur et limitons-le à un ensemble de quotas, juste pour voir comment cela fonctionne. Ajoutons une utilisatrice nommée « sally » et, puisqu'elle n'ouvrira pas de session, on ne lui attribue pas de mot de passe. Ensuite, nous utiliserons la commande edquota pour modifier ses quotas et lui allouer certaines limites d'espace sur le disque — par exemple 10 Mo de limite douce et 12 Mo de limite dure — et enregistrer nos modifications :
[root@station17 ~]# useradd sally [root@station17 ~]# edquota sally Disk quotas for user sally (uid 502): Filesystem blocks soft hard inodes soft hard /dev/sda8 24 10000 12000 6 0 0 ~ ~
Maintenant, Sally a une limite douce de 10 Mo et une limite dure de 12 Mo, ainsi nous voulons entrer dans ce compte et commencer à créer quelques données. Faisons-le avec la commande dd et /dev/zero
pour voir comment les choses se passent. La commande dd copie des données à un niveau bas, nous l'emploierons ici pour créer un fichier rapidement :
[root@station17 ~]# su - sally [sally@station17 ~]$ dd if=/dev/zero of=data bs=1k count=9500 9500+0 records in 9500+0 records out 9728000 bytes (9.7 MB) copied, 0.0220105 s, 442 MB/s [sally@station17 ~]$ [sally@station17 ~]$ quota Disk quotas for user sally (uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/sda8 9544 10000 12000 8 0 0 [sally@station17 ~]$
Ici, Sally vérifie son quota et peut observer qu'elle a encore de la place pour travailler puisqu'il n'y a pour l'instant aucun avertissement ou quoi que ce soit d'autre. Créons donc encore des données et voyons si on obtient un avertissement :
[sally@station17 ~]$ dd if=/dev/zero of=moredata bs=1k count=500 sda8: warning, user block quota exceeded. 500+0 records in 500+0 records out 512000 bytes (512 kB) copied, 0.0034606 s, 148 MB/s [sally@station17 ~]$
Cette fois, nous avons un avertissement. Regardons à quoi ressemblerait notre quota si nous étions l'utilisatrice Sally :
[sally@station17 ~]$ quota Disk quotas for user sally (uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/sda8 10048* 10000 12000 7days 9 0 0 [sally@station17 ~]$
L'examen de notre fichier de quotas montre que nous avons une période de grâce qui entre à présent en vigueur. Sally a sept jours pour revenir à sa limite. Cependant, admettons que Sally l'ignore — elle n'y prête pas attention — et crée un autre fichier, de par exemple 3 Mo, ce qui nous amènerait au-delà de notre limite dure. Observons ce qui se produit :
[sally@station17 ~]$ dd if=/dev/zero of=file bs=1k count=3000 sda8: write failed, user block limit reached. dd: writing `file': Disk quota exceeded 1949+0 records in 1948+0 records out 1994752 bytes (2.0 MB) copied, 0.0251631 s, 79.3 MB/s [sally@station17 ~]$ quota Disk quotas for user sally (uid 502): Filesystem blocks quota limit grace files quota limit grace /dev/sda8 12000* 10000 12000 10 0 0 [sally@station17 ~]$
On note que Sally a écrit sur le disque et a dépassé la limite douce, puisqu'il lui est attribué une période de grâce par défaut — toutefois la limite dure a mis un terme brutal à son activité insouciante. Il est judicieux de se familiariser avec les quotas de disque, puisqu'ils sont très courants dans un environnement professionnel, et vous y serez sans aucun doute confronté.
Si l'on a, par exemple, 15 utilisateurs dans un service qui travailleront tous sur le même projet, un quota de groupe sera en vigueur. Mais qu'en est-il si nous avons simplement 15 utilisateurs présents dans le même service, mais travaillant séparément sur des dossiers différents et qui sont tous censés avoir le même quota ? Nous pourrions faire appel à la commande edquota -up
pour copier les quotas de Sally pour les autres utilisateurs, puis la commande repquota pour voir les statistiques des quotas imposés de nos utilisateurs. Ajoutons quelques utilisateurs supplémentaires et faisons l'essai. Une fois encore, nous ne leur attribuerons pas de mot de passe car il s'agit juste d'une démonstration :
[sally@station17 ~]$ su - Password: [root@station17 ~]# useradd tom [root@station17 ~]# useradd dick [root@station17 ~]# useradd harry
Maintenant que nous avons ajouté quelques utilisateurs, on peut copier le quota de Sally pour les autres utilisateurs du système :
[root@station17 ~]# edquota -up sally tom harry
Ici, on peut vérifier que les quotas des utilisateurs ont été reportés pour les utilisateurs que nous avons choisis sur le système :
[root@station17 ~]# repquota -u /home *** Report for user quotas on device /dev/sda8 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 69832 0 0 4 0 0 sally +- 11996 10000 12000 5days 10 0 0 tom -- 48 10000 12000 12 0 0 dick -- 24 0 0 6 0 0 harry -- 24 10000 12000 6 0 0
Ici, on peut vérifier que les limites imposées à Sally ont été copiées pour les autres utilisateurs et voir les statistiques actuelles de nos utilisateurs : espace utilisé (blocs), limites douce et dure, même les fichiers utilisés (inodes) et les périodes de grâce.
En outre, les utilisateurs qui dépassent leurs quotas ne seront en général plus en mesure d'exécuter le système X Window et, s'ils démarrent X, ils auront probablement d'autres problèmes, comme lancer des navigateurs ou autres. En copiant les quotas d'utilisateur, rappelez-vous que si vous copiez les quotas d'un utilisateur pour un autre utilisateur qui a été présent un moment sur le système, les limites peuvent être dépassées immédiatement, il est donc important d'en être conscient. Vous devrez toujours vérifier l'utilisation du disque d'un utilisateur, s'il s'agit d'un utilisateur existant. Un autre point à savoir — si le système de fichiers comporte déjà des quotas, veillez à les désactiver avant d'exécuter un quotacheck, parce qu'il risque de causer des dommages.
Les commandes :
quotacheck : balaie un système de fichiers pour vérifier l'utilisation d'un disque, crée, vérifie et répare les fichiers de quotas |
quotaon : active les quotas pour le système de fichiers |
quotaoff : désactive les quotas pour le système de fichiers |
edquota : modifie les quotas d'utilisateur |
repquota : affiche un rapport de statistiques de quotas des utilisateurs |
quota : commande pour examiner le quota et les statistiques d'utilisation du disque |
Joey est né à Phoenix et a commencé à programmer à l'âge de quatorze ans sur un Timex Sinclair 1000©. Il espérait pouvoir tirer quelque chose de ce modèle d'ordinateur ancien. Maîtrisant rapidement le BASIC et l'Assembleur, Joey est devenu programmeur en 1990 et a ajouté le COBOL, le Fortran et le Pascal à son répertoire de langages de programmation. Depuis lors, il se passionne pour presque tous les aspects de l'informatique. Il s'est perfectionné et a découvert RedHat Linux© en 2002, quand on lui a donné une version 6 de RedHat©. Ce fut le début d'une nouvelle passion centrée sur
Linux
. Actuellement, Joey termine sa formation en gestion de réseau sousLinux
et travaille sur le campus pour la RedHat Academy de l'université, en Arizona. Il fait aussi partie de l'équipe de la Linux Gazette comme coordinateur de miroirs.
L'adaptation française de ce document a été réalisée dans le cadre du Projet de traduction de la Gazette Linux.
Vous pourrez lire d'autres articles traduits et en apprendre plus sur ce projet en visitant notre site : http://wiki.traduc.org/Gazette_Linux.
Si vous souhaitez apporter votre contribution, n'hésitez pas à nous rejoindre, nous serons heureux de vous accueillir.