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:"

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

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

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

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:

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

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:

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

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/