Warum brauchen wir ACLs?
Jede Datei auf jedem UNIX-Dateisystem hat einen Eigentümer/eine Gruppe und eine Reihe von Berechtigungen. Stellen Sie sich einen Fall vor, in dem mehrere Benutzer Zugriff auf dieselbe Datei benötigen und die Benutzer aus verschiedenen Gruppen stammen. Die File Access Control Lists (FACLs) oder einfach ACLs sind die Liste zusätzlicher Benutzer/Gruppen und deren Berechtigungen für die Datei.
Wie man erkennt, ob eine Datei ACL angehängt hat
Es ist sehr einfach zu erkennen, ob eine Datei eine angehängte ACL hat. ls -l Befehl würde eine Ausgabe wie unten gezeigt erzeugen.
# ls -l -rw-r--r-+ 1 root root 0 Sep 19 14:41 file
Beachten Sie das + Zeichen am Ende der Berechtigungen. Dies bestätigt, dass der Datei eine ACL angehängt ist.
ACLs anzeigen
Um detaillierte ACL-Informationen einer Datei anzuzeigen, verwenden Sie getfacl Befehl.
# getfacl /tmp/test # file: test # owner: root # group: root user::rw- user:john:rw- user:sam:rwx group::r-- mask::rwx other:---
Beachten Sie die 3 verschiedenen user: Linien. Die erste Zeile listet die Standard-Dateiberechtigungen des Eigentümers der Datei auf. Die 2 anderen Benutzerberechtigungen sind die individuellen Berechtigungen für die Benutzer john und sam. Das Maskenfeld hier gilt nur für die zusätzlichen Berechtigungen, die wir den Benutzern und Gruppen gegeben haben. Wenn die Maske auf rwx gesetzt ist, werden Lese-, Schreib- und Ausführungsberechtigungen weiteren Benutzern/Gruppen erteilt. Wenn die Maske auf r-x gesetzt ist, wird das Schreibrecht weiteren Benutzern/Gruppen nicht gewährt. Im Allgemeinen NICHT setze mask auf etwas anderes als rwx. Der Maskenwert wirkt sich nicht auf die standardmäßigen UNIX-Benutzer-/Gruppen-/Andere-Berechtigungen aus.
Datei ohne ACLs
Wenn Sie den getfacl-Befehl auf eine Datei ohne ACLs ausführen, werden die zusätzlichen „user:“-Zeilen und die „mask“-Zeile nicht angezeigt und die Standard-Dateiberechtigungen werden angezeigt.
# getfacl test # file: test # owner: root # group: root user::rw- group::r-- other::r--
Erstellen und Verwalten von FACLs
Das setfacl Der Befehl wird verwendet, um ACL für die angegebene Datei festzulegen. Um dem Benutzer john Zugriff auf die Datei /tmp/test zu geben:
# setfacl -m u:john:rw /tmp/test
Die Option -m weist setfacl an, ACLs für die Datei(en) zu ändern, die in der Befehlszeile erwähnt werden. Anstelle von Benutzer john können wir eine Gruppe haben, die eine bestimmte Berechtigung für die Datei hat:
# setfacl -m g:accounts:rw /tmp/test
FACLs für mehrere Benutzer und Gruppen können auch mit einem einzigen Befehl festgelegt werden:
# setfacl -m u:john:rw,g:accounts:rwx /tmp/test
Standard-FACLs für Verzeichnisse
Standard-ACLs werden nur für Verzeichnisse erstellt. Wenn Sie Standard-ACLs für Verzeichnisse festlegen, wird allen Dateien, die in diesem Verzeichnis erstellt werden, diese Standard-FACL ebenfalls automatisch zugewiesen.
So erstellen Sie eine Standard-FACL für ein Verzeichnis:
# setfacl -m default:u:john:rw /accounts
# getfacl accounts/ # file: accounts/ # owner: root # group: root user::rwx group::r-x other::r-x default:user::rwx default:user:john:rw- default:group::r-x default:mask::rwx default:other::r-x
Erstellen Sie nun eine neue Datei im Kontenverzeichnis und listen Sie die FACL in der Datei auf:
# touch /accounts/test # getfacl test # file: test # owner: root # group: root user::rw- user:john:rw- group::r-x #effective:r-- mask::rw- other::r--
FACLs entfernen
Verwenden Sie zum Entfernen von FACL den Befehl setfacl mit der Option -x :
# setfacl -x u:john /tmp/test
Der obige Befehl entfernt die ACL für den Benutzer john aus der Datei /tmp/test. Die ACLs für andere Benutzer/Gruppen, sofern vorhanden, bleiben unberührt.
Um alle einer Datei zugeordneten ACLs zu entfernen, verwenden Sie die Option -b mit setfacl :
# setfacl -b /tmp/test
Sichern der FACLs
Oft kopiert die Sicherungssoftware möglicherweise nicht die Metadaten, die sich auf die FACL in den Dateien beziehen. In diesem Fall sollten Sie die FACL-Informationen zu den Dateien sichern. Jetzt kann die FACL aller Dateien in einem Verzeichnis (einschließlich aller Unterverzeichnisse) in eine einzige Datei kopiert werden.
# cd /accounts # getfacl -R * > accounts_facl ( -R -> recursive )
Wiederherstellen der FACLs
Wenn Sie die Dateien im Verzeichnis /accounts wiederherstellen, müssen Sie die FACLs wiederherstellen, die den Dateien in diesem Verzeichnis zugeordnet sind. Verwenden Sie dazu die FACL-Sicherungsdatei accounts_facl zusammen mit der –Wiederherstellung Option :
# setfacl --restore=accounts_facl