quota

Objet : Commande quota

Niveau requis :

Commentaires : Pour limiter l’espace disque employé par les utilisateurs

Débutant, à savoir : Utiliser GNU/Linux en ligne de commande, tout commence là !

Suivi :

Création par smolski le 16/10/2012

Testé par smolski le 16/10/2012

Commentaires sur le forum : C'est ici1) N'hésitez pas à y faire part de vos remarques, succès, améliorations ou échecs !

Remarque importante

Il est préférable de faire des essais sur de petites partitions tests avant d'appliquer ce tuto !

Introduction

Les quotas permettent à l’administrateur de limiter de deux manières, l’espace disque employé par les utilisateurs et par les groupes d’utilisateurs :

limiter le nombre de fichiers (nombre d’i-nodes) ;

limiter la place occupée (nombre de blocs de 1kb).

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.

Installation

apt-get update && apt-get install quota quotatool

Préambule

Sous Linux, les quotas sont gérés selon trois paramètres :

une limite soft ;

une limite hard ;

une période de grâce.

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.

Fichiers

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.

Ces deux fichiers doivent être accessibles, en lecture et en écriture, uniquement par root.

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

fstab

Pour que les quotas soient pris en considération, il faut éditer2) vim le fichier /etc/fstab3) fstab .
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.

La mention usrquota active les quotas au niveau des utilisateurs et

grpquota active les quotas au niveau des groupes.

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) defaults,usrquota,grpquota stipule les options de montage du système de fichiers. C’est dans ce champ que l’activation des quotas sera mentionnée.

Le fichier /etc/fstab n’étant lu qu’au démarrage du système, il faut rebooter la machine pour que les modifications rendent la gestion des quotas active.

quotacheck

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).

-m permet d'autoriser quotacheck de scanner des partitions qui sont accessibles en écriture

-g Scanne les quotas pour les groupes

-u Scanne les quotas pour les utilisateurs

-v permet d'afficher l'avance du scan

Pour initialiser plusieurs partitions avec des quotas, utilisez la commande : quotacheck -vagum

Surveillance

Bien que les bases de données soient créées, l’administrateur doit enclencher la surveillance des quotas au moyen de la commande quotaon.

L’arrêt de la surveillance peut être réalisée au moyen de la commande quotaoff.

Activation des quotas

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

edquota

La commande edquota permet d’éditer les quotas relatifs à un utilisateur et à un groupe.

quota.user

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

L’administrateur peut modifier les limites placées entre parenthèses.

L’absence de quotas est indiquée par des limites nulles.

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 :

La limite soft est une limite que l'utilisateur (ou groupe) peut dépasser pendant un certain laps de temps.
Si l'utilisateur n'est pas revenu en-dessous de cette limite dans le temps imparti il se voit dépourvu du droit de créer des fichiers.
Quand l'utilisateur dépasse cette limite, un message de ce genre apparait :

sda9: warning, user block quota exceeded.

La limite hard est une limite que nul ne peut dépasser.
Lorsque l'utilisateur veut dépasser cette limite il obtient un message de ce genre :

sda9: write failed, user block limit reached.

La limite par block est une limite sur la taille du dossier (généralement la taille du dossier utilisateur). Cette limite utilise la limite soft et hard

La limite par inode est une limite sur le nombre de fichiers. Cette limite utilise la limite soft et hard.

option -g

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.

Période de grâce.

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

option -p

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.

repquota

La commande repquota établit un rapport sur l’utilisation des quotas.

option –u

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

option -g

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