CentOS 6.4
Ich versuche besser zu verstehen, wie Dateisystem-ACL-Regeln verarbeitet werden und in welcher Reihenfolge ACL-Regeln gelten.
Nehmen wir zum Beispiel an, die Benutzer Bob und Joe gehören zu einer Gruppe namens sales. Nehmen wir auch an, ich habe ein Verkaufsdokument mit den folgenden Details:
[[email protected] ~]# getfacl /home/foo/docs/foo.txt
getfacl: Removing leading '/' from absolute path names
# file: home/foo/docs/foo.txt
# owner: jane
# group: executives
user:: r--
user:bob:rw-
user:joe:rwx
group:sales:rwx
group::r--
mask::rwx
other::---
Meine Frage ist, wie werden Berechtigungen in einem Beispiel wie diesem verarbeitet und welche Zugriffsrechte haben Vorrang?
Gibt es nur eine Top-Down-Suche und gilt die Regel, die zuerst zutrifft?
Oder erzwingt Linux den Zugriff basierend auf der spezifischsten Regel für den betreffenden Benutzer? Oder hat vielleicht die restriktivste und anwendbarste Regel Vorrang?
Akzeptierte Antwort:
Das ist ein ziemlich breites Thema und ein bisschen zu viel, um es hier zu behandeln. Ich verweise Sie auf das Whitepaper POSIX Access Control Lists on Linux, das von Andreas Grünbacher von den SuSE Labs zusammengestellt wurde. Es deckt das Thema ziemlich gut ab und schlüsselt es auf, damit Sie verstehen, wie ACLs funktionieren.
Dein Beispiel
Sehen wir uns nun Ihr Beispiel an und schlüsseln es auf.
- Gruppe (Umsatz)
- Mitglieder der Verkaufsgruppe (Bob, Joe)
Lassen Sie uns nun die Berechtigungen für die Datei /home/foo/docs/foo.txt
aufschlüsseln . ACLs kapseln auch die gleichen Berechtigungen, mit denen die meisten Leute unter Unix vertraut sein sollten, hauptsächlich die Bits User, Group und Other. Ziehen wir diese also zuerst heraus.
user:: r--
group::r--
other::---
Diese würden normalerweise in einem ls -l
so aussehen :
$ ls -l /home/foo/docs/foo.txt
-r--r----- 1 jane executives 24041 Sep 17 15:09 /home/foo/docs/foo.txt
Mit diesen ACL-Zeilen können Sie sehen, wem die Datei gehört und welcher Gruppe sie angehört:
# owner: jane
# group: executives
Jetzt kommen wir also zum Kern der ACLs:
user:bob:rw-
user:joe:rwx
group:sales:rwx
Dies zeigt diesen Benutzer bob
hat rw
, während Benutzer joe
hat rwx
. Es gibt auch eine Gruppe, die auch rwx
hat ähnlich wie Joe. Diese Berechtigungen sind wie die Benutzerspalte in unserem ls -l
Output hatte 3 Eigentümer (Jane, Bob und Joe) sowie 2 Gruppen (Führungskräfte und Vertrieb). Es gibt keinen Unterschied, außer dass es sich um ACLs handelt.
Zuletzt die mask
Zeile:
mask::rwx
In diesem Fall maskieren wir nichts, es ist weit offen. Wenn also die Benutzer bob und joe diese Zeilen haben:
user:bob:rw-
user:joe:rwx
Dann sind das ihre effektiven Berechtigungen. Wenn die Maske so wäre:
mask::r-x
Dann würden ihre effektiven Berechtigungen wie folgt aussehen:
user:bob:rw- # effective:r--
user:joe:rwx # effective:r-x
Dies ist ein leistungsfähiger Mechanismus zum Einschränken von Berechtigungen, die pauschal gewährt werden.
Siehe auch:Debian – Wie kann man den gesamten Webseiteninhalt kräuseln?HINWEIS: Der Dateieigentümer und andere Berechtigungen werden von der effektiven Rechtemaske nicht beeinflusst; alle anderen Einträge sind! In Bezug auf die Maske sind die ACL-Berechtigungen also Bürger zweiter Klasse im Vergleich zu den traditionellen Unix-Berechtigungen.
Referenzen
- getfacl(1) – Linux-Manpage
- Whitepaper zu POSIX-Zugriffskontrolllisten unter Linux