====== quota ====== * Objet : Commande quota * Niveau requis :{{tag>débutant avisé}} * Commentaires : //Pour limiter l’espace disque employé par les utilisateurs// * Débutant, à savoir : [[:doc:systeme:commandes:le_debianiste_qui_papillonne|Utiliser GNU/Linux en ligne de commande, tout commence là !]] :-) * Suivi : * Création par [[user>smolski]] le 16/10/2012 * Testé par [[user>smolski]] le 16/10/2012 * Commentaires sur le forum : [[http://debian-facile.org/viewtopic.php?id=6045 |C'est ici]]((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 éditer(([[:doc:editeurs:vim:vim]])) le fichier /etc/fstab(([[:doc:systeme: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 champ((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