Wie man Zugriffssteuerungslisten (ACLs) und Festplattenquoten für Benutzer und Gruppen festlegt

Zugriffssteuerungslisten (auch bekannt als ACLs) sind eine Funktion des Linux-Kernels, die es ermöglicht, feiner abgestufte Zugriffsrechte für Dateien und Verzeichnisse zu definieren als die, die durch reguläre ugo/rwx-Berechtigungen festgelegt sind.

Zum Beispiel erlauben die standardmäßigen ugo/rwx-Berechtigungen nicht, unterschiedliche Berechtigungen für verschiedene einzelne Benutzer oder Gruppen festzulegen. Mit ACLs ist dies relativ einfach zu tun, wie wir in diesem Artikel sehen werden.

Überprüfen der Dateisystemkompatibilität mit ACLs

Um sicherzustellen, dass Ihre Dateisysteme derzeit ACLs unterstützen, sollten Sie überprüfen, ob sie mit der acl-Option eingehängt wurden. Dazu verwenden wir tune2fs für ext2/3/4-Dateisysteme wie unten angegeben. Ersetzen Sie /dev/sda1 durch das Gerät oder Dateisystem, das Sie überprüfen möchten:

# tune2fs -l /dev/sda1 | grep "Default mount options:"

Hinweis: Bei XFS werden Zugriffssteuerungslisten standardmäßig unterstützt.

In dem folgenden ext4-Dateisystem sehen wir, dass ACLs für /dev/xvda2 aktiviert wurden:

# tune2fs -l /dev/xvda2 | grep "Default mount options:"
Check ACL Enabled on Linux Filesystem

Wenn der obige Befehl nicht anzeigt, dass das Dateisystem mit Unterstützung für ACLs eingehängt wurde, liegt dies höchstwahrscheinlich daran, dass die noacl-Option in /etc/fstab vorhanden ist.

In diesem Fall entfernen Sie sie, hängen Sie das Dateisystem aus und dann erneut ein, oder starten Sie einfach Ihr System neu, nachdem Sie die Änderungen in /etc/fstab gespeichert haben.

Vorstellung von ACLs in Linux

Um zu verdeutlichen, wie ACLs funktionieren, werden wir eine Gruppe namens Entwickler verwenden und die Benutzer walterwhite und saulgoodman (ja, ich bin ein Breaking Bad Fan!) hinzufügen.:

# groupadd developers
# useradd walterwhite
# useradd saulgoodman
# usermod -a -G developers walterwhite
# usermod -a -G developers saulgoodman

Bevor wir fortfahren, überprüfen wir, ob beide Benutzer zur Gruppe Entwickler hinzugefügt wurden:

# id walterwhite
# id saulgoodman
Find User ID in Linux

Erstellen wir nun ein Verzeichnis namens test in /mnt und eine Datei namens acl.txt darin (/mnt/test/acl.txt).

Dann setzen wir den Gruppenbesitzer auf Entwickler und ändern seine standardmäßigen ugo/rwx Berechtigungen rekursiv auf 770 (was Lese-, Schreib- und Ausführungsberechtigungen für den Besitzer und den Gruppenbesitzer der Datei gewährt):

# mkdir /mnt/test
# touch /mnt/test/acl.txt
# chgrp -R developers /mnt/test
# chmod -R 770 /mnt/test

Wie erwartet, können Sie in /mnt/test/acl.txt als walterwhite oder saulgoodman schreiben:

# su - walterwhite
# echo "My name is Walter White" > /mnt/test/acl.txt
# exit
# su - saulgoodman
# echo "My name is Saul Goodman" >> /mnt/test/acl.txt
# exit
Verify ACL Rules on Users

Bisher so gut. Allerdings werden wir bald ein Problem sehen, wenn wir einem anderen Benutzer Schreibzugriff auf /mnt/test/acl.txt gewähren müssen, der nicht in der Entwicklergruppe ist.

Standardmäßige ugo/rwx Berechtigungen würden erfordern, dass der neue Benutzer zur Entwicklergruppe hinzugefügt wird, aber das würde ihm/ihr dieselben Berechtigungen über alle Objekte geben, die der Gruppe gehören. Genau hier kommen ACLs zum Einsatz.

ACLs setzen in Linux

Es gibt zwei Arten von ACLs: Zugriffs-ACLs (die auf eine Datei oder ein Verzeichnis angewendet werden) und Standard (optionale) ACLs, die nur auf ein Verzeichnis angewendet werden können.

Wenn in einem Verzeichnis, in dem ein Standard-Zugriffssteuerungslisten (ACL) festgelegt wurden, die Dateien keine eigene ACL haben, erben sie die Standard-ACL ihres übergeordneten Verzeichnisses.

Lassen Sie uns dem Benutzer gacanepa Lese- und Schreibzugriff auf /mnt/test/acl.txt geben. Bevor wir das tun, werfen wir einen Blick auf die aktuellen ACL-Einstellungen in diesem Verzeichnis mit:

# getfacl /mnt/test/acl.txt

Dann ändern Sie die ACLs auf der Datei, verwenden Sie u: gefolgt vom Benutzernamen und :rw, um Lese- / Schreibberechtigungen anzugeben:

# setfacl -m u:gacanepa:rw /mnt/test/acl.txt

Und führen Sie getfacl erneut auf der Datei aus, um zu vergleichen. Das folgende Bild zeigt das „Vorher“ und „Nachher“:

# getfacl /mnt/test/acl.txt
Set ACL on Linux Users

Als nächstes müssen wir anderen Ausführungsberechtigungen für das Verzeichnis /mnt/test geben:

# chmod +x /mnt/test

Denken Sie daran, dass ein regulärer Benutzer Ausführungsberechtigungen für dieses Verzeichnis benötigt, um auf dessen Inhalt zugreifen zu können.

Benutzer gacanepa sollte jetzt in der Lage sein, in die Datei zu schreiben. Wechseln Sie zu diesem Benutzerkonto und führen Sie den folgenden Befehl aus, um zu bestätigen:

# echo "My name is Gabriel Cánepa" >> /mnt/test/acl.txt

Um einem Verzeichnis eine Standard-ACL zuzuweisen (deren Inhalt geerbt wird, es sei denn, es wird anderweitig überschrieben), fügen Sie vor der Regel d: hinzu und geben Sie anstelle eines Dateinamens ein Verzeichnis an:

# setfacl -m d:o:r /mnt/test
# getfacl /mnt/test/

Die oben genannte ACL ermöglicht es Benutzern, die nicht zur Besitzergruppe gehören, Lesezugriff auf die zukünftigen Inhalte des Verzeichnisses /mnt/test zu haben. Beachten Sie den Unterschied in der Ausgabe von getfacl /mnt/test vor und nach der Änderung:

Set Default ACL to Linux Directory

Um eine bestimmte ACL zu entfernen, ersetzen Sie in den obigen Befehlen -m durch -x. Zum Beispiel:

# setfacl -x d:o /mnt/test

Alternativ können Sie auch die -b-Option verwenden, um ALLE ACLs in einem Schritt zu entfernen:

# setfacl -b /mnt/test

Weitere Informationen und Beispiele zur Verwendung von ACLs finden Sie im Kapitel 10, Abschnitt 2 des openSUSE Security Guide (auch kostenlos im PDF-Format zum Download verfügbar).

Setzen von Linux-Disk-Quotas für Benutzer und Dateisysteme

Speicherplatz ist eine weitere Ressource, die sorgfältig genutzt und überwacht werden muss. Dazu können Quotas auf Basis eines Dateisystems festgelegt werden, entweder für einzelne Benutzer oder Gruppen.

Dadurch wird ein Limit für die Festplattennutzung eines bestimmten Benutzers oder einer spezifischen Gruppe festgelegt, und Sie können sicher sein, dass Ihre Festplatten nicht von einem nachlässigen (oder bösartigen) Benutzer bis zur Kapazität gefüllt werden.

Das erste, was Sie tun müssen, um Quotas auf einem Dateisystem zu aktivieren, ist, es mit den Optionen usrquota oder grpquota (für Benutzer- bzw. Gruppenquoten) in /etc/fstab zu mounten.

Zum Beispiel aktivieren wir benutzerbasierte Quotas auf /dev/vg00/vol_backups und gruppenbasierte Quotas auf /dev/vg00/vol_projects.

Beachten Sie, dass die UUID verwendet wird, um jedes Dateisystem zu identifizieren.

UUID=f6d1eba2-9aed-40ea-99ac-75f4be05c05a /home/projects ext4 defaults,grpquota 0 0
UUID=e1929239-5087-44b1-9396-53e09db6eb9e /home/backups ext4 defaults,usrquota 0 0

Unmounten und remounten Sie beide Dateisysteme:

# umount /home/projects
# umount /home/backups
# mount -o remount /home/projects
# mount -o remount /home/backups 

Überprüfen Sie dann, ob die Optionen usrquota und grpquota im Ausgabebereich von mount vorhanden sind (siehe unten hervorgehoben):

# mount | grep vg00
Check Linux User Quota and Group Quota

Führen Sie abschließend die folgenden Befehle aus, um Quotas zu initialisieren und zu aktivieren:

# quotacheck -avugc
# quotaon -vu /home/backups
# quotaon -vg /home/projects

Lassen Sie uns nun die zuvor erwähnten Kontingente für den Benutzernamen und die Gruppe festlegen. Sie können die Kontingente später mit quotaoff deaktivieren.

Festlegen von Linux-Disk-Quoten

Beginnen wir damit, eine ACL für /home/backups für den Benutzer gacanepa festzulegen, die ihm Lese-, Schreib- und Ausführungsberechtigungen für dieses Verzeichnis gibt:

# setfacl -m u:gacanepa:rwx /home/backups/

Dann mit,

# edquota -u gacanepa

Wir werden das Soft-Limit auf 900 und das Hard-Limit auf 1000 Blöcke festlegen (1024 Bytes/Block * 1000 Blöcke = 1024000 Bytes = 1 MB) Festplattenspeichernutzung.

Wir können auch ein Limit von 20 und 25 als Soft- und Hard-Limits für die Anzahl der Dateien festlegen, die dieser Benutzer erstellen kann.

Der obige Befehl startet den Texteditor ($EDITOR) mit einer temporären Datei, in der wir die zuvor erwähnten Limits festlegen können:

Linux Disk Quota For User

Diese Einstellungen führen dazu, dass eine Warnung für den Benutzer gacanepa angezeigt wird, wenn er entweder die 900-Block oder 20-Inode-Limits für eine Standard-Gnadenfrist von 7 Tagen erreicht hat.

Wenn die Über-Quoten-Situation bis dahin nicht beseitigt wurde (zum Beispiel durch Löschen von Dateien), wird das Soft-Limit zum Hard-Limit und dieser Benutzer wird daran gehindert, mehr Speicherplatz zu verwenden oder mehr Dateien zu erstellen.

Zum Testen lassen Sie den Benutzer gacanepa versuchen, eine leere 2 MB Datei mit dem Namen test1 in /home/backups zu erstellen:

# dd if=/dev/zero of=/home/backups/test1 bs=2M count=1
# ls -lh /home/backups/test1
Verify Linux User Quota on Disk

Wie Sie sehen können, schlägt die Schreiboperation aufgrund der überschrittenen Festplattenkontingente fehl. Da nur die ersten 1000 KB auf die Festplatte geschrieben werden, wird das Ergebnis in diesem Fall höchstwahrscheinlich eine beschädigte Datei sein.

Ebenso können Sie eine ACL für die Entwicklergruppen erstellen, um den Mitgliedern dieser Gruppe rwx-Zugriff auf /home/projects zu gewähren:

# setfacl -m g:developers:rwx /home/projects/

Und setzen Sie die Quotenlimits mit:

# edquota -g developers

Genauso wie wir es zuvor mit dem Benutzer gacanepa getan haben.

Der Gnadenzeitraum kann für eine beliebige Anzahl von Sekunden, Minuten, Stunden, Tagen, Wochen oder Monaten angegeben werden, indem man ausführt:

# edquota -t

und die Werte unter Block-Gnadenzeitraum und Inode-Gnadenzeitraum aktualisiert.

Im Gegensatz zur Block- oder Inode-Nutzung (die auf Benutzer- oder Gruppenbasis festgelegt sind), wird der Gnadenzeitraum systemweit festgelegt.

Um Quoten zu melden, können Sie quota -u [Benutzer] oder quota -g [Gruppe] für eine schnelle Liste oder repquota -v [/Pfad/zum/Dateisystem] für einen detaillierteren (ausführlichen) und gut formatierten Bericht verwenden.

Natürlich möchten Sie [Benutzer], [Gruppe] und [/Pfad/zum/Dateisystem]</code durch spezifische Benutzer-/Gruppennamen und das Dateisystem, das Sie überprüfen möchten, ersetzen.

Zusammenfassung

In diesem Artikel haben wir erklärt, wie man Zugriffssteuerungslisten und Festplattenquoten für Benutzer und Gruppen einrichtet. Indem Sie beides verwenden, können Sie Berechtigungen und Festplattennutzung effektiver verwalten.

Wenn Sie mehr über Kontingente erfahren möchten, können Sie sich auf das Quota Mini-HowTo im Linux-Dokumentationsprojekt beziehen.

Selbstverständlich können Sie sich auch darauf verlassen, dass wir Fragen beantworten. Senden Sie sie einfach über das Kommentarformular unten ein, und wir werden sie uns gerne ansehen.

Source:
https://www.tecmint.com/set-access-control-lists-acls-and-disk-quotas-for-users-groups/