Festlegen von Dateisystemquoten unter Debian 10

Einführung

Kontingente werden verwendet, um den Speicherplatz zu begrenzen, den ein Benutzer oder eine Gruppe auf einem Dateisystem verwenden kann. Ohne diese Beschränkungen könnte ein Benutzer die Festplatte des Computers füllen und Probleme für andere Benutzer und Dienste verursachen.

In diesem Lernprogramm werden Befehlszeilentools zum Erstellen und Überprüfen von Datenträgerkontingenten installiert und anschließend ein Kontingent für einen Beispielbenutzer festgelegt.

Voraussetzungen

In diesem Tutorial wird davon ausgegangen, dass Sie auf einem Debian 10-Server mit einem Benutzer ohne Rootberechtigung angemeldet sind, der sudo-fähig ist (siehe https://www.digitalocean.com/community/tutorials/initial-server-setup-with-debian-). 10 [Erstes Server-Setup mit Debian 10].

Die Techniken in diesem Tutorial sollten im Allgemeinen auf anderen Linux-Distributionen als Debian funktionieren, erfordern jedoch möglicherweise einige Anpassungen.

Schritt 1 - Installieren der Kontingenttools

Um Kontingente festzulegen und zu überprüfen, müssen wir zuerst die Kontingent-Befehlszeilentools mit + apt + installieren. Aktualisieren wir unsere Paketliste und installieren das Paket:

sudo apt update
sudo apt install quota

Sie können überprüfen, ob die Tools installiert sind, indem Sie den Befehl "+ quota +" ausführen und nach den Versionsinformationen fragen:

quota --version
OutputQuota utilities version .
. . .

Es ist in Ordnung, wenn Ihre Ausgabe eine leicht abweichende Versionsnummer aufweist.

Als nächstes werden wir die + mount + - Optionen unseres Dateisystems aktualisieren, um Quoten in unserem * root * -Dateisystem zu aktivieren.

Schritt 2 - Aktualisieren der Dateisystem-Mount-Optionen

Um Kontingente für ein bestimmtes Dateisystem zu aktivieren, müssen einige kontingentbezogene Optionen angegeben werden. Dazu aktualisieren wir den Eintrag des Dateisystems in der Konfigurationsdatei "+ / etc / fstab +". Öffnen Sie diese Datei jetzt in Ihrem bevorzugten Texteditor:

sudo nano /etc/fstab

Der Inhalt der Datei sieht ungefähr so ​​aus:

/ etc / fstab

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

Diese + fstab + Datei stammt von einem virtuellen Server. Ein Desktop- oder Laptop-Computer sieht wahrscheinlich etwas anders aus: "+ fstab ". In den meisten Fällen verfügen Sie jedoch über ein " / +" - oder "* root" -Dateisystem, das den gesamten Festplattenspeicher darstellt.

Aktualisieren Sie die Zeile, die auf das Root-Dateisystem verweist, indem Sie die folgenden Optionen hinzufügen:

/ etc / fstab

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

Sie werden die neuen Optionen an das Ende aller vorhandenen Optionen anfügen, wobei Sie alle Optionen durch ein Komma und keine Leerzeichen trennen müssen. Mit der obigen Änderung können wir sowohl benutzerbasierte (+ usrquota +) als auch gruppenbasierte (+ grpquota +) Kontingente für das Dateisystem aktivieren. Wenn Sie nur den einen oder anderen benötigen, können Sie die nicht verwendete Option weglassen.

Hängen Sie das Dateisystem erneut ein, damit die neuen Optionen wirksam werden:

sudo mount -o remount /

Wir können überprüfen, ob die neuen Optionen zum Mounten des Dateisystems verwendet wurden, indem wir uns die Datei + / proc / mounts + ansehen. Hier verwenden wir "+ grep +", um nur den Root-Dateisystem-Eintrag in dieser Datei anzuzeigen:

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

Beachten Sie die beiden von uns angegebenen Optionen. Nachdem wir unsere Tools installiert und unsere Dateisystemoptionen aktualisiert haben, können wir das Quotensystem aktivieren.

Schritt 3 - Kontingente aktivieren

Bevor wir das Quota-System endlich einschalten können, müssen wir den Befehl + quotacheck + einmal manuell ausführen:

sudo quotacheck -ugm /

Dieser Befehl erstellt die Dateien "+ / aquota.user n" und "+ / a quota.group". Diese Dateien enthalten Informationen zu den Beschränkungen und zur Verwendung des Dateisystems und müssen vorhanden sein, bevor die Kontingentüberwachung aktiviert wird. Die von uns verwendeten "+ quotacheck +" - Parameter sind:

  • * + u +: * gibt an, dass eine benutzerbasierte Kontingentdatei erstellt werden soll

  • * + g +: * gibt an, dass eine gruppenbasierte Kontingentdatei erstellt werden soll

  • * + m +: * Deaktiviert das erneute Bereitstellen des Dateisystems als schreibgeschützt, während die anfängliche Kontingentauswertung durchgeführt wird. Das erneute Einhängen des Dateisystems als schreibgeschützt führt zu genaueren Ergebnissen, wenn ein Benutzer während des Vorgangs aktiv Dateien speichert, dies jedoch bei dieser Ersteinrichtung nicht erforderlich ist.

Wenn Sie keine benutzer- oder gruppenbasierten Kontingente aktivieren müssen, können Sie die entsprechende Option "+ quotacheck +" weglassen.

Wir können überprüfen, ob die entsprechenden Dateien erstellt wurden, indem wir das Stammverzeichnis auflisten:

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

Wenn Sie die Optionen "+ u " oder " g " nicht in den Befehl " quotacheck +" aufgenommen haben, fehlt die entsprechende Datei. Jetzt können wir das Quotensystem einschalten:

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

Unser Server überwacht und erzwingt derzeit Quoten, wir haben jedoch noch keine festgelegt! Als Nächstes legen wir ein Festplattenkontingent für einen einzelnen Benutzer fest.

Schritt 4 - Konfigurieren von Kontingenten für einen Benutzer

Es gibt verschiedene Möglichkeiten, Kontingente für Benutzer oder Gruppen festzulegen. Hier erfahren Sie, wie Sie Kontingente mit den Befehlen "+ edquota " und " setquota +" festlegen.

Verwenden Sie "+ edquota +", um ein Benutzerkontingent festzulegen

Wir verwenden den Befehl + edquota +, um es quota ** zu bearbeiten. Bearbeiten wir das Kontingent für unseren Beispielbenutzer * sammy *:

sudo edquota -u

Die Option "+ -u " gibt an, dass dies ein " Benutzer " - Kontingent ist, das wir bearbeiten werden. Wenn Sie stattdessen das Kontingent einer Gruppe bearbeiten möchten, verwenden Sie stattdessen die Option " -g +".

Dies öffnet eine Datei im Standard-Texteditor, ähnlich wie "+ crontab -e +" eine temporäre Datei öffnet, die Sie bearbeiten können. Die Datei sieht ungefähr so ​​aus:

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

Dies listet den Benutzernamen und "+ uid +", die Dateisysteme, für die Quoten aktiviert sind, und die block- und inode-basierten Verwendungen und Beschränkungen auf. Durch das Festlegen eines inode-basierten Kontingents wird die Anzahl der Dateien und Verzeichnisse, die ein Benutzer erstellen kann, unabhängig vom verwendeten Speicherplatz begrenzt. Die meisten Benutzer möchten blockbasierte Kontingente, die die Speicherplatznutzung speziell einschränken. Dies werden wir konfigurieren.

Mit jedem Kontingenttyp können Sie sowohl ein soft als auch ein hard Limit festlegen. Wenn ein Benutzer das Soft-Limit überschreitet, ist das Kontingent überschritten, es wird jedoch nicht sofort verhindert, dass mehr Speicherplatz oder Inodes belegt werden. Stattdessen wird ein gewisser Spielraum eingeräumt: Der Benutzer hat standardmäßig sieben Tage Zeit, um seine Festplattennutzung wieder unter das Soft-Limit zu bringen. Befindet sich der Benutzer nach Ablauf der Frist von sieben Tagen immer noch über dem Soft-Limit, wird dies als hartes Limit behandelt. Eine harte Grenze ist weniger verzeihend: Die Erstellung neuer Blöcke oder Inodes wird sofort angehalten, wenn Sie die angegebene harte Grenze erreichen. Dies verhält sich so, als ob auf der Festplatte kein Speicherplatz mehr vorhanden ist: Schreibvorgänge schlagen fehl, temporäre Dateien werden nicht erstellt, und der Benutzer wird beim Ausführen allgemeiner Aufgaben Warnungen und Fehler sehen.

Aktualisieren wir unseren * sammy * -Nutzer auf ein Block-Kontingent mit einem Soft-Limit von 100 MB und einem Hard-Limit von 110 MB:

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

Speichern und schließen Sie die Datei. Um das neue Kontingent zu überprüfen, können wir den Befehl + quota + verwenden:

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

Der Befehl gibt unseren aktuellen Kontingentstatus aus und zeigt, dass unser Kontingent "+ 100M " ist, während unser Limit " 110M +" ist. Dies entspricht den weichen bzw. harten Grenzen.

Verwenden Sie + setquota +, um ein Benutzerkontingent festzulegen

Im Gegensatz zu "+ edquota " aktualisiert " setquota +" die Kontingentinformationen unseres Benutzers in einem einzigen Befehl ohne interaktiven Bearbeitungsschritt. Wir werden den Benutzernamen sowie die weichen und harten Grenzwerte für block- und inode-basierte Kontingente angeben und schließlich das Dateisystem, auf das das Kontingent angewendet werden soll:

sudo setquota -u  200M 220M 0 0 /

Mit dem obigen Befehl werden die blockbasierten Kontingentgrenzen von * sammy * auf 200 Megabyte und 220 Megabyte verdoppelt. Das "+0 0 +" für inode-basierte weiche und harte Grenzen zeigt an, dass sie nicht gesetzt sind. Dies ist auch dann erforderlich, wenn wir keine inode-basierten Kontingente festlegen.

Verwenden Sie erneut den Befehl "+ quota", um Ihre Arbeit zu überprüfen:

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

Nachdem wir einige Kontingente festgelegt haben, erfahren Sie, wie Sie einen Kontingentbericht erstellen.

Schritt 5 - Generieren von Quotenberichten

Verwenden Sie den Befehl + repquota +, um einen Bericht über die aktuelle Kontingentnutzung für alle Benutzer in einem bestimmten Dateisystem zu erstellen:

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

In diesem Fall erstellen wir einen Bericht für das Dateisystem "+ / " * root *. Der Befehl " -s " weist " repquota +" an, nach Möglichkeit von Menschen lesbare Zahlen zu verwenden. Es sind einige Systembenutzer aufgeführt, für die wahrscheinlich standardmäßig keine Kontingente festgelegt wurden. Unten ist unser Benutzer * sammy * mit den verwendeten Mengen und weichen und harten Grenzen aufgeführt.

Beachten Sie auch die Beschriftung "+ Sperrgnade: 7 Tage " und die Spalte " Gnade ". Wenn unser Benutzer das Soft-Limit überschritten hätte, würde die Spalte " grace +" anzeigen, wie viel Zeit er noch hatte, um unter das Limit zurückzukehren.

Im nächsten Schritt aktualisieren wir die Kulanzfristen für unser Quotensystem.

Schritt 6 - Konfigurieren einer Nachfrist für Überschreitungen

Wir können den Zeitraum konfigurieren, in dem ein Benutzer über dem Soft-Limit schweben darf. Wir benutzen dazu den Befehl + setquota +:

sudo setquota -t 864000 864000 /

Mit dem obigen Befehl werden die Kulanzzeiten für Block und Inode auf 864000 Sekunden oder 10 Tage festgelegt. Diese Einstellung gilt für alle Benutzer. Beide Werte müssen angegeben werden, auch wenn Sie nicht beide Kontingenttypen verwenden (Block vs. inode).

Beachten Sie, dass die Werte in Sekunden angegeben werden müssen.

Führen Sie + repquota + erneut aus, um zu überprüfen, ob die Änderungen wirksam wurden:

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

Die Änderungen sollten sich sofort in der Ausgabe von "+ repquota +" niederschlagen.

Fazit

In diesem Tutorial haben wir die Befehlszeilentools "+ quota +" installiert, ein blockbasiertes Kontingent für einen Benutzer eingerichtet und einen Bericht über die Kontingentauslastung unseres Dateisystems erstellt.

Anhang: Häufige kontingentbezogene Fehlermeldungen

Im Folgenden sind einige häufige Fehler aufgeführt, die beim Einrichten und Bearbeiten von Dateisystemkontingenten auftreten können.

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

Dies ist ein Fehler, den Sie möglicherweise feststellen, wenn Sie versucht haben, Kontingente (mit + quotaon +) zu aktivieren, bevor Sie den anfänglichen Befehl + quotacheck + ausführen. Mit dem Befehl "+ quotacheck " werden die Dateien " aquota " oder " quota +" erstellt, die zum Einschalten des Quotensystems erforderlich sind. Weitere Informationen finden Sie unter Link: # step-3-% E2% 80% 93-enable-quotas [Schritt 3].

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

Dies ist der Fehler, der angezeigt wird, wenn Sie "+ quota " ausführen und Ihr aktueller Benutzer nicht berechtigt ist, die Kontingentdateien für Ihr Dateisystem zu lesen. Sie (oder Ihr Systemadministrator) müssen die Dateiberechtigungen entsprechend anpassen oder " sudo +" verwenden, wenn Sie Befehle ausführen, die Zugriff auf die Kontingentdatei erfordern.

Weitere Informationen zu Linux-Berechtigungen, einschließlich Benutzer- und Gruppenberechtigungen, finden Sie unter Eine Einführung in Linux-Berechtigungen.