Comment définir des quotas de système de fichiers sur Debian 9

introduction

Les quotas servent à limiter la quantité d’espace disque qu’un utilisateur ou un groupe peut utiliser sur un système de fichiers. Sans ces limites, un utilisateur pourrait remplir le disque de la machine et causer des problèmes à d’autres utilisateurs et services.

Dans ce didacticiel, nous allons installer des outils de ligne de commande pour créer et inspecter des quotas de disque, puis définir un quota pour un exemple d’utilisateur.

Conditions préalables

Ce tutoriel suppose que vous êtes connecté à un serveur Debian 9, avec un utilisateur non-root et sudo, comme décrit dans https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-. 9 [Configuration initiale du serveur avec Debian 9].

Les techniques de ce tutoriel devraient généralement fonctionner sur des distributions Linux autres que Debian, mais peuvent nécessiter une certaine adaptation.

Étape 1 - Installation des outils de quota

Pour définir et vérifier les quotas, nous devons d’abord installer les outils de ligne de commande quota en utilisant + apt +. Mettons à jour notre liste de paquets, puis installons le paquet:

sudo apt update
sudo apt install quota

Vous pouvez vérifier que les outils sont installés en exécutant la commande + quota + et en demandant ses informations de version:

quota --version
OutputQuota utilities version .
. . .

C’est bien si votre sortie affiche un numéro de version légèrement différent.

Ensuite, nous mettrons à jour les options + mount + de notre système de fichiers pour activer les quotas sur notre système de fichiers * racine *.

Étape 2 - Mise à jour des options de montage du système de fichiers

Pour activer les quotas sur un système de fichiers particulier, nous devons le monter avec quelques options spécifiées liées aux quotas. Pour ce faire, nous mettons à jour l’entrée du système de fichiers dans le fichier de configuration + / etc / fstab +. Ouvrez ce fichier dans votre éditeur de texte préféré maintenant:

sudo nano /etc/fstab

Le contenu du fichier sera semblable à celui-ci:

/ etc / fstab

# /etc/fstab: static file system information.
UUID=06b2aae3-b525-4a4c-9549-0fc6045bd08e    ext4    errors=remount-ro   0   1

Ce fichier + fstab + provient d’un serveur virtuel. Un ordinateur de bureau ou un ordinateur portable aura probablement un aspect légèrement différent + fstab +, mais dans la plupart des cas, vous aurez un système de fichiers + / + ou * racine * qui représente tout votre espace disque.

Mettez à jour la ligne pointant vers le système de fichiers racine en ajoutant des options comme suit:

/ etc / fstab

# /etc/fstab: static file system information.
UUID=06b2aae3-b525-4a4c-9549-0fc6045bd08e   /   ext4    errors=remount-ro   0   1

Vous ajouterez les nouvelles options à la fin des options existantes, en veillant à les séparer par une virgule et sans espace. La modification ci-dessus nous permettra d’activer les quotas utilisateur (+ usrquota +) et basés sur le groupe (+ grpquota +) sur le système de fichiers. Si vous n’avez besoin que de l’un ou de l’autre, vous pouvez laisser l’option non utilisée.

Remontez le système de fichiers pour que les nouvelles options prennent effet:

sudo mount -o remount /

Nous pouvons vérifier que les nouvelles options ont été utilisées pour monter le système de fichiers en consultant le fichier + / proc / mounts +. Ici, nous utilisons + grep + pour afficher uniquement l’entrée du système de fichiers racine de ce fichier:

cat /proc/mounts | grep ' / '
Output/dev/vda1 / ext4 rw,relatime,quota,,,errors=remount-ro,data=ordered 0 0

Notez les deux options que nous avons spécifiées. Maintenant que nous avons installé nos outils et mis à jour nos options de système de fichiers, nous pouvons activer le système de quotas.

Étape 3 - Activation des quotas

Avant d’activer le système de quotas, nous devons exécuter manuellement la commande + quotacheck + une fois:

sudo quotacheck -ugm /

Cette commande crée les fichiers + / aquota.user n et` + / a quota.group`. Ces fichiers contiennent des informations sur les limites et l’utilisation du système de fichiers. Ils doivent exister avant l’activation de la surveillance des quotas. Les paramètres + quotacheck + que nous avons utilisés sont:

  • * + u +: * spécifie qu’un fichier de quota basé sur l’utilisateur doit être créé

  • * + g +: * indique qu’un fichier de quota basé sur un groupe doit être créé

  • * + m +: * désactive le remontage du système de fichiers en lecture seule lors du décompte initial des quotas. Remonter le système de fichiers en lecture seule donnera des résultats plus précis si un utilisateur enregistre activement des fichiers pendant le processus, mais n’est pas nécessaire lors de cette configuration initiale.

Si vous n’avez pas besoin d’activer les quotas basés sur les utilisateurs ou les groupes, vous pouvez laisser l’option + quotacheck + correspondante.

Nous pouvons vérifier que les fichiers appropriés ont été créés en listant le répertoire racine:

ls /
Output  bin   dev  home        initrd.img.old  lib64       media  opt   root  sbin  sys  usr  vmlinuz
  boot  etc  initrd.img  lib             lost+found  mnt    proc  run   srv   tmp  var  vmlinuz.old

Si vous n’avez pas inclus les options + u + ou + g + dans la commande + quotacheck +, le fichier correspondant sera manquant. Nous sommes maintenant prêts à activer le système de quotas:

sudo quotaon -v /
Output/dev/vda1 [/]: group quotas turned on
/dev/vda1 [/]: user quotas turned on

Notre serveur surveille et applique actuellement les quotas, mais nous n’en avons pas encore défini! Ensuite, nous allons définir un quota de disque pour un seul utilisateur.

Étape 4 - Configuration des quotas pour un utilisateur

Il existe plusieurs façons de définir des quotas pour des utilisateurs ou des groupes. Ici, nous verrons comment définir des quotas avec les commandes + edquota + et + setquota +.

Utilisation de + edquota + pour définir un quota d’utilisateur

Nous utilisons la commande + edquota + pour ed it quota s. Modifions notre exemple de quota * sammy * user:

sudo edquota -u

L’option + -u + indique qu’il s’agit d’un quota + utilisateur + que nous allons éditer. Si vous souhaitez plutôt modifier le quota d’un groupe, utilisez l’option + -g + à sa place.

Cela ouvrira un fichier dans l’éditeur de texte par défaut, de la même manière que + crontab -e + ouvre un fichier temporaire que vous pouvez éditer. Le fichier ressemblera à ceci:

Disk quotas for user sammy (uid 1001):
 Filesystem                   blocks       soft       hard     inodes     soft     hard
 /dev/vda1                        24          0          0          7        0        0

Ceci répertorie le nom d’utilisateur et + uid +, les systèmes de fichiers sur lesquels des quotas sont activés, ainsi que l’utilisation et les limites basées sur block et inode. La définition d’un quota basé sur un inode limiterait le nombre de fichiers et de répertoires qu’un utilisateur peut créer, quelle que soit la quantité d’espace disque utilisée. La plupart des gens voudront des quotas basés sur des blocs, qui limitent spécifiquement l’utilisation de l’espace disque. C’est ce que nous allons configurer.

Chaque type de quota vous permet de définir à la fois une limite logicielle et une limite stricte. Lorsqu’un utilisateur dépasse la limite souple, il dépasse le quota, mais rien ne l’empêche immédiatement de consommer plus d’espace ou d’inodes. Au lieu de cela, une marge de manœuvre est laissée: l’utilisateur a - par défaut - sept jours pour récupérer son disque sous la limite souple. À la fin de la période de grâce de sept jours, si l’utilisateur dépasse toujours la limite souple, il sera traité comme une limite stricte. Une limite dure est moins tolérante: toute création de nouveaux blocs ou inodes est immédiatement arrêtée lorsque vous atteignez la limite stricte spécifiée. Cela se comporte comme si le disque manquait complètement d’espace disque: l’écriture échouera, la création de fichiers temporaires échouera et l’utilisateur commencera à voir des avertissements et des erreurs lors de l’exécution de tâches courantes.

Mettons à jour notre utilisateur * sammy * pour avoir un quota de bloc avec une limite souple de 100 Mo et une limite stricte de 110 Mo:

Disk quotas for user sammy (uid 1001):
 Filesystem                   blocks       soft       hard     inodes     soft     hard
 /dev/vda1                        24                        7        0        0

Enregistrez et fermez le fichier. Pour vérifier le nouveau quota, nous pouvons utiliser la commande + quota +:

sudo quota -vs
OutputDisk quotas for user sammy (uid 1001):
    Filesystem   space   quota   limit   grace   files   quota   limit   grace
     /dev/vda1     24K                       7       0       0

La commande affiche notre statut de quota actuel et indique que notre quota est égal à «+ 100M » et notre limite à « 110M +». Cela correspond respectivement aux limites soft et hard.

Utilisation de + setquota + pour définir un quota d’utilisateur

Contrairement à + ​​edquota +, + setquota + mettra à jour les informations de quota de nos utilisateurs en une seule commande, sans étape d’édition interactive. Nous spécifierons le nom d’utilisateur et les limites logicielles et matérielles pour les quotas basés sur des blocs et des inodes, et enfin le système de fichiers auquel appliquer le quota:

sudo setquota -u  200M 220M 0 0 /

La commande ci-dessus doublera les limites de quota de * sammy * en blocs à 200 et 220 mégaoctets. Les limites «+0 0 +» pour les limites logicielles et matérielles basées sur un inode indiquent qu’elles restent non définies. Cela est nécessaire même si nous ne définissons pas de quotas basés sur un inode.

Encore une fois, utilisez la commande + quota pour vérifier votre travail:

sudo quota -vs
OutputDisk quotas for user sammy (uid 1001):
    Filesystem   space   quota   limit   grace   files   quota   limit   grace
     /dev/vda1     24K    200M    220M               7       0       0

Maintenant que nous avons défini des quotas, voyons comment générer un rapport de quota.

Étape 5 - Générer des rapports de quota

Pour générer un rapport sur l’utilisation actuelle des quotas pour tous les utilisateurs d’un système de fichiers particulier, utilisez la commande + repquota +:

sudo repquota -s /
Output*** Report for user quotas on device /dev/vda1
Block grace time: 7days; Inode grace time: 7days
                       Space limits                File limits
User            used    soft    hard  grace    used  soft  hard  grace
----------------------------------------------------------------------
root      --    981M      0K      0K          35234     0     0
nobody    --   7664K      0K      0K              3     0     0
ntp       --     12K      0K      0K              3     0     0
_apt      --      8K      0K      0K              2     0     0
debian    --     16K      0K      0K              4     0     0

Dans ce cas, nous générons un rapport pour le système de fichiers + / + * racine *. La commande + -s + indique + repquota + d’utiliser des nombres lisibles par l’homme lorsque cela est possible. Il existe quelques utilisateurs système répertoriés, pour lesquels aucun quota n’a probablement été défini par défaut. Notre utilisateur * sammy * est répertorié en bas, avec les quantités utilisées et les limites souples et strictes.

Notez également le délai de grâce + Block: 7days +, ainsi que la colonne + grace +. Si notre utilisateur avait dépassé la limite souple, la colonne + grace + indiquerait le temps qu’il lui restait pour revenir en dessous de la limite.

Dans la prochaine étape, nous mettrons à jour les délais de grâce pour notre système de quotas.

Étape 6 - Configuration d’un délai de grâce pour les dépassements

Nous pouvons configurer la période pendant laquelle un utilisateur est autorisé à flotter au-dessus de la limite souple. Nous utilisons la commande + setquota + pour le faire:

sudo setquota -t 864000 864000 /

La commande ci-dessus définit les délais de grâce du bloc et de l’inode à 864 000 secondes, soit 10 jours. Ce paramètre s’applique à tous les utilisateurs. Les deux valeurs doivent être fournies même si vous n’utilisez pas les deux types de quota (bloc ou bloc). inode).

Notez que les valeurs _ doivent être spécifiées en secondes.

Exécutez à nouveau + repquota + pour vérifier que les modifications ont pris effet:

sudo repquota -s /
OutputBlock grace time: ; Inode grace time:
. . .

Les modifications doivent être immédiatement reflétées dans la sortie + repquota +.

Conclusion

Dans ce tutoriel, nous avons installé les outils de ligne de commande + quota +, défini un quota basé sur des blocs pour un utilisateur et généré un rapport sur l’utilisation des quotas de notre système de fichiers.

Annexe: Messages d’erreur courants liés aux quotas

Voici quelques erreurs courantes que vous pouvez constater lors de la configuration et de la manipulation de quotas de système de fichiers.

quotaon Outputquotaon: cannot find //aquota.group on /dev/vda1 [/]
quotaon: cannot find //aquota.user on /dev/vda1 [/]

C’est une erreur que vous pourriez voir si vous avez essayé d’activer les quotas (en utilisant + quotaon +) avant d’exécuter la commande initiale + quotacheck +. La commande + quotacheck + crée les fichiers + aquota + ou + quota + nécessaires à l’activation du système de quotas. Voir le lien: # step-3-% E2% 80% 93-enable-quotas [Step 3] pour plus d’informations.

quota Outputquota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //aquota.user: Permission denied
quota: Cannot open quotafile //quota.user: No such file or directory

C’est l’erreur que vous verrez si vous exécutez + quota + et que votre utilisateur actuel n’a pas l’autorisation de lire les fichiers de quota pour votre système de fichiers. Vous (ou votre administrateur système) devrez ajuster les autorisations de fichier de manière appropriée ou utiliser + sudo + lors de l’exécution de commandes nécessitant un accès au fichier de quotas.

Pour en savoir plus sur les autorisations Linux, y compris la propriété des utilisateurs et des groupes, veuillez consulter An Introduction aux autorisations Linux