Cette page est en cours de rédaction.
Apportez votre aide…

Gestion des quotas

La gestion des quotas par utilisateur est utile au niveau des serveurs. Si vous avez créé plusieurs comptes utilisateurs et que vous ne voulez pas qu'un seul utilisateur puisse occuper tout l'espace disque, il faut alors définir des quotas qui apporteront une limitation en terme d'espace disque utilisé.

La gestion des quotas peut aussi être utilisée au niveau des groupes. Par exemple, chaque utilisateur du projet Albireo dispose d'un certain espace disque, et le dossier commun du projet Albireo dispose lui aussi d'une taille maximale afin de permettre au projet Denebola d'exister.

Pour que ceci fonctionne, l'option doit être activée dans le noyau. C'est le cas par défaut sous Ubuntu.

Configuration de l'ordinateur d'exemple

L'ordinateur dispose de 3 disques dur : un de 10Go, un de 15Go, et un de 40Go.

Le disque de 10Go contient le système. Il est reconnu comme sda (sda1, sda2).

Le disque de 15Go contient les répertoires des utilisateurs, c'est sur celui-ci que l'on souhaite définir les quotas. il est reconnu comme sdb (sdb1).

Pour utiliser les quotas, vous devez installer le paquet quota.

Vous devez éditer le fichier /etc/fstab afin d'ajouter usrquota dans les options pour avoir une gestion au niveau utilisateur, et/ou grpquota pour une gestion par groupe.

Le fichier /etc/fstab avant la modification :

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# /dev/sda1 -- converted during upgrade to edgy
UUID=8840ac3b-7209-4e00-a79e-d393de74e0ca / ext3 defaults,errors=remount-ro 0 1
# /dev/sdb1 -- converted during upgrade to edgy
UUID=af16a96e-6ecf-4083-9a77-b21fedf09e5d /home ext3 defaults 0 2
# /dev/sda2 -- converted during upgrade to edgy
UUID=6263979f-794c-43c8-a95b-b33627978928 none swap sw 0 0

Après la modification :

# <file system> <mount point>   <type>  <options>       <dump>  <pass>
proc            /proc           proc    defaults        0       0
# /dev/sda1 -- converted during upgrade to edgy
UUID=8840ac3b-7209-4e00-a79e-d393de74e0ca / ext3 defaults,errors=remount-ro 0 1
# /dev/sdb1 -- converted during upgrade to edgy
UUID=af16a96e-6ecf-4083-9a77-b21fedf09e5d /home ext3 defaults,usrquota,grpquota 0 2
# /dev/sda2 -- converted during upgrade to edgy
UUID=6263979f-794c-43c8-a95b-b33627978928 none swap sw 0 0

Création des fichiers de quota

Afin de permettre aux quotas de fonctionner, il faut créer un fichier pour les quotas utilisateur, et un autre pour les quotas de groupe, dans la racine du dossier à protéger. Ici il s'agit de /home.

Ces 2 fichiers doivent appartenir à l'utilisateur root. aquota.user

sudo touch /home/aquota.group   #Création du fichier pour le groupe
sudo touch /home/aquota.user  #Création du fichier pour l'utilisateur
sudo chmod 600 /home/aquota.*

:!: Dans les versions anciennes de Ubuntu le nom des fichiers est légérement différent il faut utiliser :

sudo touch /home/quota.group   #Création du fichier pour le groupe
sudo touch /home/quota.user  #Création du fichier pour l'utilisateur
sudo chmod 600 /home/quota.*

Une fois ces fichiers créés, il faut remonter la partition :

sudo mount -o remount /home

ou bien :

sudo mount -a 

À noter que la commande quotacheck -cguvf /home créera automatiquement les fichiers avec les droits ad hoc s'ils n'existent pas.

Initialisation

Il est nécessaire d'initialiser le système de quota via la commande quotacheck. Cette commande va scanner tout le contenu de la partition et reporter dans /home/quota.* les informations de gestion (espace occupé par les utilisateurs). Il s'agit donc d'une initialisation.

sudo quotacheck -vgum /home

Alternative : initialiser toutes les partitions qui sont affectées par les quotas dans /etc/fstab :

sudo quotacheck -vagum
  • -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
  • -a cible tous les systèmes de fichiers montés

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.

sudo quotaon -avug

Pour une explication des options, voir cette page (en anglais).

Fixation des droits

Il faut comprendre les 4 types de limites possible, la limite "soft" et la limite "hard" ainsi que la limite "block" et la limite "inode".

  • 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 :
    sdb1: 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 :
    sdb1: 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
  • fixer des droits pour un utilisateur :
    sudo edquota -u $user
  • fixer des droits pour un groupe :
    sudo edquota -g $group

Dans les 2 cas, vous accéderez un éditeur de texte en terminal de type Vim vous permettant d'affecter les droits. La page est organisée en colonnes : voir la copie d'écran ci-dessous.

Vous pouvez utiliser votre éditeur de texte favori en précédant edquota par EDITOR="nomEditeur"
sudo EDITOR="vim"  edquota -u $user
Disk quotas for user test (uid 1006):
 Filesystem                   blocks       soft       hard     inodes     soft     hard
/dev/sdb1                      9252       8192      10240          6        0        0

La colonne blocks correspond a la taille actuellement utilisé par l'utilisateur

Les colonnes soft & hard correspondent aux limites "block"

La colonne inodes correspond aux nombres de fichier de l'utilisateur

Une fois les quotas définis pour un utilisateur, on peut les répliquer pour d'autres utilisateurs en utilisant l'option -p de la commande edquota.

edquota -p utilisateur1 utilisateur2

Cette commande fixe les même quotas à utilisateur2 que ceux existants pour utilisateur1

Afficher/vérifier les droits

Pour voir les droits sur une partition (ex : /home) :

repquota /home

Pour voir les droits de tous les utilisateurs

repquota -a

Désactivation des quotas

FIXME

sudo quotaoff -avug

Pour une explication des options, voir cette page (en anglais).

  • Il est préférable de faire des essais sur une partition de test (différente de /home) si vous ne voulez pas avoir de soucis.
  • Fixer des droits à 4.5Go par utilisateur permet de réaliser une sauvegarde directe sur un DVD (sans compression), avec la compression de données, on peut ajouter quelque Go.

Tests

  • On peut commencer par fixer des droits de quelque dizaines de Mo, puis créer des fichiers fictifs.

On peut pour cela utiliser la commande dd, par exemple cette commande crée un fichier de 20Mo :

 dd if=/dev/zero of=unFichierDe20Mo bs=1M count=20
  • quota.txt
  • Dernière modification: Le 11/09/2022, 11:48
  • par moths-art