Les quotas permettent à l’administrateur de limiter de deux manières, l’espace disque employé par les utilisateurs et par les groupes d’utilisateurs :
L’arborescence d’un système UNIX étant composé de plusieurs systèmes de fichiers, il est nécessaire de placer un dispositif de quotas sur tous ceux qui peuvent abriter des données en provenance des utilisateurs. Généralement, le répertoire /home contenant les comptes des utilisateurs réside dans un système de fichiers séparé de manière à mieux contrôler l’occupation du disque. Le mécanisme de quotas doit donc être mis en place sur ce système de fichiers.
apt-get update && apt-get install quota quotatool
Sous Linux, les quotas sont gérés selon trois paramètres :
La limite hard est la limite absolue qu’un utilisateur ne peut en aucun cas dépasser.
La limite soft peut être dépassée durant une période de temps stipulée par le délais de grâce. Durant cette période, des messages sont envoyés à l’utilisateur pour l’informer de ce qu’il a dépassé la limite autorisée.
Les quotas sont gérés par des fichiers de base de données présents dans la racine des systèmes de fichiers à contrôler.
Le fichier quota.user contient les informations relatives aux limites des différents utilisateurs alors que le fichier quota.group contient les limites relatives aux différents groupes du système.
Voici un exemple de création des fichiers de base de données de quotas :
touch quota.user quota.group
chmod 600 quota.*
ls -l quota.*
-rw------- 1 root root 0 oct. 16 05:46 quota.group -rw------- 1 root root 0 oct. 16 05:46 quota.user
Pour que les quotas soient pris en considération, il faut éditer2) le fichier /etc/fstab3).
Tout système de fichiers nécessitant une gestion des quotas soit au niveau des utilisateurs, soit au niveau des groupes ou bien à la fois pour les groupes et pour les utilisateurs doit comporter une indication dans le fichier /etc/fstab.
Voici un exemple d’activation des quotas pour le système de fichiers racine :
# /home was on /dev/sda9 during installation 14 UUID=f480cd7a-9805-43a0-bbeb-ff3897a1498e /home ext4 defaults,usrquota,grpquota 0 2
Le quatrième champ4) stipule les options de montage du système de fichiers. C’est dans ce champ que l’activation des quotas sera mentionnée.
Au départ, les bases de données quota.user et quota.group ne sont pas initialisées. Dans un premier temps, il est nécessaire de construire ces bases de données sans imposer de limites.
La commande quotacheck permet d’effectuer cette opération comme le montre la session interactive suivante :
quotacheck -vgum /dev/sda9
quotacheck: Les quotas pour users sont actif sur le point de montage /home si bien que quotacheck risque d'endommager le fichier. Veuillez désactiver les quotas ou utiliser -f pour forcer la vérification.
Veuillez désactiver les quotas ou utiliser -f pour forcer la vérification. Donc :
quotacheck -f -vgum /dev/sda9
quotacheck: Parcours de /dev/sda9 [/home] terminé quotacheck: Vérifié 308 répertoires et 579 fichiers
La commande quotacheck doit construire une base de données pour les utilisateurs (option –u) ainsi que pour les groupes (option -g).
quotacheck -vagum
Bien que les bases de données soient créées, l’administrateur doit enclencher la surveillance des quotas au moyen de la commande quotaon.
Cette commande est nécessaire pour activer le « monitoring » immédiatement, autrement, la commande edquota retournera toujours la même chose, même après modification du contenu des dossiers soumis aux quotas.
quotaon -avug
La commande edquota permet d’éditer les quotas relatifs à un utilisateur et à un groupe.
Voici un exemple d’édition des quotas pour un user :
edquota public
Quotas disque pour user public (uid 1001) : Système de fichiers blocs souple stricte inodes souple stricte /dev/sda9 38336 0 0 201 0 0
Dès que l’une des limites soft est atteinte, l’utilisateur voit sa commande échouer et il en est averti par un message.
Voici un exemple de session interactive montrant l’échec d’opérations en raison de la limite des quotas :
sda9: warning, user block quota exceeded.
sda9: write failed, user block limit reached.
L’option -g de la commande edquota permet d’éditer les quotas relatifs à un groupe.
Voici un exemple d’édition des quotas pour un groupe.
Quotas disque pour group public (gid 1001) :
edquota -g public
Système de fichiers blocs souple stricte inodes souple stricte /dev/sda9 38336 0 0 201 0 0
Dès qu’un des membres du groupe dépasse une limite soft, tous les membres du groupe sont dans l’incapacité de continuer leur travail sans avoir au préalable effacé des fichiers afin de répondre aux critères mis en œuvre par le système des quotas.
La période de grâce peut être fixée au moyen de l’option –t de la commande edquota.
Voici un exemple fixant les délais à 7 jours :
edquota -t
Édite :
Sursis avant l'application des limites souples pour users : Unités de temps peuvent être : days (jours), hours (heures), minutes, ou seconds Système de fichiers période de sursis bloc période de sursis inode /dev/sda9 7days 7days
La gestion des quotas peut être très lourde lorsqu’il faut éditer les limites relatives à chaque utilisateur du système. Dès que les limites sont fixées pour un utilisateur, il est possible de les recopier pour d’autres.
L’option -p de la commande edquota permet de prendre un utilisateur comme base pour fixer les quotas de plusieurs autres.
Voici un exemple d’une telle commande :
edquota -p jchalle jfc jl rc
Dans cet exemple, les utilisateurs jfc, jl et rc reçoivent les mêmes limites que l’utilisateur jchalle.
La commande repquota établit un rapport sur l’utilisation des quotas.
Voici un exemple de consultation des limites associées aux utilisateurs (option -u) :
repquota -u /dev/sda9
*** Rapport pour les quotas user sur le périphérique /dev/sda9 Période de sursis bloc : 7days ; période de sursis inode : 7days Block limits File limits Utilisateur utilisé souple stricte sursis utilisé souple stricte sursis ---------------------------------------------------------------------- root -- 24 0 0 3 0 0 user -- 256296 0 0 681 0 0 public -- 38336 0 0 201 0 0
Les mêmes vérifications peuvent avoir lieu pour les groupes. Pour cela, il suffit de mentionner l’option -g.
Voici un exemple de vérification des quotas relatifs aux groupes :
repquota -g /dev/sda9
*** Rapport pour les quotas group sur le périphérique /dev/sda9 Période de sursis bloc : 7days ; période de sursis inode : 7days Block limits File limits Groupe utilisé souple stricte sursis utilisé souple stricte sursis ---------------------------------------------------------------------- root -- 24 0 0 3 0 0 user -- 256296 0 0 681 0 0 public -- 38336 0 0 201 0 0