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.
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
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.
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
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).
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".
sdb1: warning, user block quota exceeded.
sdb1: write failed, user block limit reached.
sudo edquota -u $user
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.
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
Pour voir les droits sur une partition (ex : /home) :
repquota /home
Pour voir les droits de tous les utilisateurs
repquota -a
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