Übersicht
ACLs bieten eine flexiblere Berechtigungsverwaltung als das traditionelle Unix-Berechtigungsmodell (Besitzer, Gruppe, Andere). Sie können explizit Zugriffsrechte für Dateien oder Verzeichnisse für bestimmte Benutzer oder Gruppen festlegen. Dies ist nützlich, um komplexe Berechtigungsanforderungen in Umgebungen zu erfüllen, in denen mehrere Benutzer Dateien gemeinsam nutzen.
Hauptmerkmale
- Granulare Zugriffskontrolle
- Berechtigungen für bestimmte Benutzer/Gruppen
- Funktioniert mit Standardberechtigungen (umask)
- Ermöglicht das Festlegen von Standard-ACLs für Verzeichnisse
Installation
Die ACL-Funktionalität selbst ist in den Linux-Kernel integriert, aber um die Befehle `getfacl` und `setfacl` nutzen zu können, muss das Paket `acl` installiert sein. Auf den meisten Linux-Distributionen ist es möglicherweise nicht standardmäßig installiert.
Debian/Ubuntu
sudo apt update && sudo apt install acl
Befehl zur Installation des `acl`-Pakets auf Debian- oder Ubuntu-basierten Systemen.
CentOS/RHEL/Fedora
sudo yum install acl
Befehl zur Installation des `acl`-Pakets auf CentOS-, RHEL- oder Fedora-basierten Systemen.
Anwendungsbeispiele
ACLs werden hauptsächlich über die Befehle `getfacl` (ACL abfragen) und `setfacl` (ACL setzen) verwaltet. Hier sind einige gängige Anwendungsbeispiele.
ACL einer Datei abfragen
getfacl my_file.txt
Verwenden Sie den Befehl `getfacl`, um die aktuelle ACL einer bestimmten Datei oder eines Verzeichnisses anzuzeigen.
Lese-/Schreibberechtigungen für einen bestimmten Benutzer gewähren
setfacl -m u:user1:rw my_file.txt
Verwenden Sie die Option `setfacl -m`, um dem Benutzer 'user1' Lese- (r) und Schreibberechtigungen (w) für 'my_file.txt' zu gewähren.
Ausführungsberechtigungen für eine bestimmte Gruppe gewähren
setfacl -m g:dev_group:x my_script.sh
Verwenden Sie die Option `setfacl -m`, um der Gruppe 'dev_group' Ausführungsberechtigungen (x) für 'my_script.sh' zu gewähren.
ACL-Eintrag entfernen
setfacl -x u:user1 my_file.txt
Verwenden Sie die Option `setfacl -x`, um den ACL-Eintrag für 'user1' zu entfernen.
Standard-ACL für ein Verzeichnis festlegen
setfacl -m d:u:user2:rwx my_directory/
Legen Sie eine Standard-ACL für ein Verzeichnis fest, damit neu erstellte Dateien oder Verzeichnisse diese ACL erben. Verwenden Sie das Präfix `d:`.
Alle ACLs entfernen
setfacl -b my_file.txt
Verwenden Sie die Option `setfacl -b`, um alle erweiterten ACL-Einträge einer Datei oder eines Verzeichnisses zu entfernen und zu den traditionellen Berechtigungen zurückzukehren.
Tipps & Hinweise
Bei der Verwendung von ACLs ist es wichtig, die Interaktion mit dem bestehenden Berechtigungssystem zu verstehen.
ACLs und traditionelle Berechtigungen
- Die Ausgabe von `ls -l` für Dateien/Verzeichnisse mit ACLs zeigt am Ende der Berechtigungszeichenkette ein `+`-Symbol an.
- ACLs gewähren zusätzliche Berechtigungen über die traditionellen Berechtigungen (Besitzer, Gruppe, Andere). Der `mask`-Eintrag beschränkt die maximalen effektiven Berechtigungen der ACL.
- Eine zu komplexe ACL-Konfiguration kann die Berechtigungsverwaltung erschweren. Verwenden Sie sie daher nur bei Bedarf und mit Bedacht.
Verständnis des Mask-Eintrags
Wenn eine ACL gesetzt wird, wird der `mask`-Eintrag automatisch erstellt oder aktualisiert. Diese Maske definiert die maximalen effektiven Berechtigungen, die für Benutzer (u:), Gruppen (g:), benannte Benutzer (u:name:) und benannte Gruppen (g:name:) gewährt werden. Selbst wenn Sie mehr Berechtigungen als in der Maske angegeben gewähren, werden diese durch die Maske begrenzt. Sie können die Maske manuell festlegen, z. B. mit `setfacl -m m::rw`.
Dateisystemunterstützung
Um ACLs nutzen zu können, muss das Dateisystem ACLs unterstützen. Die meisten modernen Linux-Dateisysteme wie ext2, ext3, ext4 und XFS unterstützen ACLs. Möglicherweise müssen Sie sicherstellen, dass die Option `acl` beim Mounten des Dateisystems aktiviert ist (z. B. in `/etc/fstab`).