Access Control List (ACL) bietet einen zusätzlichen, flexibleren Berechtigungsmechanismus für Dateisysteme. Es wurde entwickelt, um mit UNIX-Dateiberechtigungen zu unterstützen. Mit ACL können Sie jedem Benutzer oder jeder Gruppe Berechtigungen für eine Festplattenressource erteilen.
Installation
Das acl-Paket ist eine Abhängigkeit von systemd, es sollte bereits installiert sein.
ACL aktivieren
Um ACL zu aktivieren, muss das Dateisystem mit der Option acl
gemountet werden. Sie können fstab verwenden, um es dauerhaft auf Ihrem System zu machen.,
Es besteht die Möglichkeit, dass dieacl
Option bereits als Standard-Mount-Option im Dateisystem aktiv ist. Btrfs tut und Ext2/3 / 4 Dateisysteme auch. Verwenden Sie den folgenden Befehl, um ext* formatierte Partitionen auf die Option zu überprüfen:
# tune2fs-l /dev/sdXY | grep "Standard-Mount-Optionen:"
Standard-Mount-Optionen: user_xattr acl
Überprüfen Sie auch, ob die Standard-Mount-Option nicht überschrieben ist.>
Die ACL kann mit dem Befehl setfacl geändert werden.
Tipp: Sie können Datei-/Verzeichnisberechtigungsänderungen auflisten, ohne die Berechtigungen zu ändern (dh Trockenlauf), indem Sie das Flag
--test
anhängen.,
So legen Sie Berechtigungen für andere fest:
# setfacl -m "other:permissions" <file/dir>
Damit alle neu erstellten Dateien oder Verzeichnisse Einträge aus dem übergeordneten Verzeichnis erben können (dies wirkt sich nicht auf Dateien aus, die in das Verzeichnis kopiert werden):
# setfacl -dm "entry" <dir>
So entfernen Sie einen bestimmten Eintrag:
# setfacl -x "entry" <file/dir>
So entfernen Sie die Standardeinträge:
# setfacl -k <file/dir>
Um alle Einträge zu entfernen (Einträge des Eigentümers, der Gruppe und anderer bleiben erhalten):
# setfacl -b <file/dir>
Die tatsächliche Genauigkeit dieses Artikels oder Abschnitts ist umstritten.,
Grund: Die ursprüngliche Notiz über die Option --mask
(die von setfacl(1) stammt) wurde als ungenau bestimmt, aber die neue Notiz scheint auch nicht korrekt zu sein. Siehe die Talk-Seite für Details. (Diskussion im Gespräch:Zugriffssteuerungslisten#ACL-Maskeneintrag)
Hinweis: Das Standardverhalten von setfacl besteht darin, den ACL-Maskeneintrag neu zu berechnen, es sei denn, es wurde explizit ein --mask
– Eintrag angegeben. Der Maskeneintrag gibt die maximalen Berechtigungen an, die für Benutzer (außer dem Eigentümer) und für Gruppen zulässig sind., Sofern nicht explizit festgelegt, entspricht dies den Berechtigungen der Standardgruppe. Angenommen, die Gruppe, die ein Verzeichnis besitzt, verfügt über r-x-Berechtigungen, um zu verdeutlichen, was dies bedeutet. Wenn Sie einen ACL-Benutzer oder eine Gruppe mit rwx-Berechtigungen hinzufügen, sind die effektiven Berechtigungen dieses Benutzers oder dieser Gruppe r-x. Der Grund dafür ist, dass es keine Überraschungen gibt, wenn eine Datei von einem System, das ACLs nicht unterstützt, auf einem System verfügbar gemacht wird, das dies tut. .
Tipp: Um Operationen rekursiv auf alle Dateien und Verzeichnisse anzuwenden, hängen Sie das Argument
-R
an.,c
# file: abc - # Besitzer: jemand# group: someoneuser::rw-user:johnny:r-xgroup::r--mask::r-xother::r--
Entfernen Sie alle ACL-Einträge:
# setfacl -b abc
Berechtigungen Überprüfen:
# getfacl abc
# file: abc - # Besitzer: jemand# group: someoneuser::rw-group::r--other::r--
die Ausgabe des Befehls ls
Sie werden feststellen, dass es eine ACL für eine Datei, weil es wird zeigen ein +
(plus-Zeichen) nach seiner Unix-Berechtigungen in der Ausgabe von ls -l
.,
$ ls -l /dev/audio
crw-rw -----+ 1 root audio 14, 4.nov. 9 12: 49 / dev/audio
$ getfacl/dev/audio
Erteilen von Ausführungsberechtigungen für private Dateien an einen Webserver
Die folgende Technik beschreibt, wie einem Prozess wie einem Webserver Zugriff auf Dateien gewährt werden kann, die sich im Homeverzeichnis eines Benutzers befinden, ohne die Sicherheit zu beeinträchtigen, indem der ganzen Welt Zugriff gewährt wird.,
Im Folgenden gehen wir davon aus, dass der Webserver als Benutzer ausgeführt wird http
und gewähren ihm Zugriff auf geoffrey
’s home directory /home/geoffrey
.
Der erste Schritt besteht darin, dem Benutzer Ausführungsberechtigungen zu erteilen http
:
# setfacl -m "u:http:--x" /home/geoffrey
Hinweis: Ausführungsberechtigungen für ein Verzeichnis sind erforderlich, damit ein Prozess den Inhalt des Verzeichnisses auflistet.,
Da der Benutzer http
jetzt auf Dateien in /home/geoffrey
zugreifen kann, benötigen andere keinen Zugriff mehr:
# chmod o-rx /home/geoffrey
Verwenden Sie getfacl
, um die Änderungen zu überprüfen:
$ getfacl /home/geoffrey
Wie die obige Ausgabe zeigt, hat other
keine Berechtigungen mehr, aber der Benutzer http
kann weiterhin auf die Dateien zugreifen, sodass die Sicherheit als erhöht angesehen werden kann.,
Siehe auch
- getfacl(1)
- setfacl(1)
- POSIX Access Control Lists unter Linux
- Wie legen Sie Standard-Datei-Berechtigungen für alle Ordner/Dateien in einem Verzeichnis?
Leave a Reply