Welche Beziehungen verknüpfen die ACL-Maske und die Standardgruppenberechtigung für eine Datei?

17

Zuerst erstelle ich eine Datei und überprüfe deren Standardberechtigungen und ACL-Einträge:

$ touch file; ls -l file; getfacl file
-rw-r--r-- 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
other::r--

Dann lege ich die ACL-Maske für die Datei fest und überprüfe erneut die Standardberechtigungen und ACL-Einträge:

$ setfacl -m mask:rwx file
$ ls -l file; getfacl file
-rw-rwxr--+ 1 user user 0 Jul 30 16:26 file
# file: file
# owner: user
# group: user
user::rw-
group::r--
mask::rwx
other::r--

Beachten Sie, dass sich zusammen mit der ACL-Maske auch die Standardgruppenberechtigung für die Datei geändert hat.

  1. Welche Verbindung besteht zwischen ACL-Maske und Standardgruppenberechtigung?
  2. Was ist der Grund für das Koppeln von ACL-Masken- und Dateigruppenberechtigungen? Welche Logik steckt dahinter?

Die fraglichen Distributionen sind Debian Linux 7.6 und CentOS 7


BEARBEITEN

An dieser Stelle wollte ich nur einige meiner Erkenntnisse mitteilen, die ich bei der Untersuchung der Beziehungen zwischen Standarddateigruppenberechtigungen und ACL-Maske gewonnen habe. Hier sind die empirischen Beobachtungen, die ich gefunden habe:

  1. Die ACL-Maske kann geändert werden:

    1. durch direktes Setzen mit setfacl -m m:<perms>Befehl;
    2. durch Ändern der Dateigruppenberechtigungen mit dem chmodBefehl (wenn die ACL-Maske bereits vorhanden ist; sie ist möglicherweise nicht vorhanden, da sie optional ist, wenn für die Datei keine benannten Benutzer- oder Gruppen-ACL-Berechtigungen vorhanden sind);
    3. durch Hinzufügen eines benannten Benutzer- oder Gruppen-ACL-Eintrags (Maske wird automatisch neu berechnet).
  2. Die Maske erzwingt maximale Zugriffsrechte (wenn ACL-Einträge mit Berechtigungen vorhanden sind, die die ACL-Maskenberechtigungen überschreiten) nur, wenn die Maske direkt von setfacl oder durch Ändern der Dateigruppenberechtigung mit chmod festgelegt wird (nicht automatisch berechnet). Alle Änderungen an ACL-Einträgen lösen die automatische Neuberechnung der ACL-Maske aus und deaktivieren den "Durchsetzungsmodus".

  3. Bei der Verwendung von ACLs treten einige Nebenwirkungen auf, die sich implizit auf die Standardberechtigungen für Dateigruppen auswirken:

    1. Ein benannter Benutzer- oder Gruppen-ACL-Eintrag, der auf eine Datei angewendet wird, kann die ACL-Maske und damit die effektiven Dateigruppenberechtigungen ändern (die Berechtigungen erhöhen). Wenn Sie als Dateieigentümer beispielsweise die Berechtigung "rw-r - r-- jim students" haben und dem Benutzer "jack" die Berechtigung "rw" erteilen, erteilen Sie implizit auch jedem Benutzer die Berechtigung "rw" aus der Gruppe "Studenten".
    2. Strengere (weniger Berechtigungen) ACL-Maske kann die entsprechenden Standarddateigruppenberechtigungen dauerhaft entfernen. Wenn Sie beispielsweise eine Datei mit RW-Standarddateigruppenberechtigungen haben und eine schreibgeschützte ACL-Maske auf die Datei anwenden, werden die Gruppenberechtigungen auf schreibgeschützt reduziert. Wenn Sie dann alle erweiterten ACL-Einträge (mit dem setfacl -bBefehl) entfernen , bleiben die Gruppenberechtigungen schreibgeschützt. Dies gilt nur für eine strengere ACL-Maske. Eine weichere ACL-Maske (mehr Berechtigungen) ändert die ursprüngliche Dateigruppenberechtigung nach dem Entfernen nicht dauerhaft.
Golem
quelle
Ich denke, Sie könnten die folgende Seite als Referenz nehmen, www-uxsup.csx.cam.ac.uk/pub/doc/suse/sles9/adminguide-sles9/…
kundy

Antworten:

11

Es ist nicht sinnvoll, wenn die Unix-Dateiberechtigungen nicht mit dem ACL-Eintrag übereinstimmen und umgekehrt. Dementsprechend steht auf der Manualpage ( acl(5)), wonach Sie fragen:

Entsprechung zwischen ACL-Einträgen und Dateiberechtigungsbits

Die durch ACLs definierten Berechtigungen sind eine Obermenge der durch die Dateiberechtigungsbits angegebenen Berechtigungen.

Es besteht eine Korrespondenz zwischen dem Dateieigentümer, der Gruppe und anderen Berechtigungen und bestimmten ACL-Einträgen: Die Eigentümerberechtigungen entsprechen den Berechtigungen des ACL_USER_OBJ-Eintrags. Wenn die ACL über einen ACL_MASK-Eintrag verfügt, entsprechen die Gruppenberechtigungen den Berechtigungen des ACL_MASK-Eintrags. Wenn die ACL keinen ACL_MASK-Eintrag hat, entsprechen die Gruppenberechtigungen den Berechtigungen des ACL_GROUP_OBJ-Eintrags. Die anderen Berechtigungen entsprechen den Berechtigungen des Eintrags ACL_OTHER_OBJ.

Der Dateieigentümer, die Gruppe und andere Berechtigungen stimmen immer mit den Berechtigungen des entsprechenden ACL-Eintrags überein. Die Modifikation der Dateiberechtigungsbits führt zur Modifikation der zugeordneten ACL-Einträge, und die Modifikation dieser ACL-Einträge führt zur Modifikation der Dateiberechtigungsbits.

Nachtrag zur Diskussion:

Was ist der Grund für das Koppeln von ACL-Masken- und Dateigruppenberechtigungen? Welche Logik steckt dahinter?

Eine gute Erklärung ist hier . Im Wesentlichen ist die Maske eine

[...] Obergrenze der Berechtigungen, die ein Eintrag in der Gruppenklasse gewährt.

Diese Eigenschaft für die obere Grenze stellt sicher, dass POSIX.1-Anwendungen, die keine ACLs kennen, nicht plötzlich und unerwartet zusätzliche Berechtigungen erteilen, sobald ACLs unterstützt werden.

In minimalen ACLs sind die Gruppenklassenberechtigungen mit den Besitzergruppenberechtigungen identisch. In erweiterten ACLs kann die Gruppenklasse Einträge für zusätzliche Benutzer oder Gruppen enthalten. Dies führt zu einem Problem: Einige dieser zusätzlichen Einträge enthalten möglicherweise Berechtigungen, die nicht im Gruppeneintrag des Besitzers enthalten sind, sodass sich die Berechtigungen des Gruppeneintrags des Besitzers möglicherweise von den Berechtigungen der Gruppenklasse unterscheiden.

Dieses Problem wird durch den Maskeneintrag gelöst. Mit minimalen ACLs werden die Berechtigungen der Gruppenklasse den Berechtigungen der besitzenden Gruppeneinträge zugeordnet. Bei erweiterten ACLs werden die Gruppenklassenberechtigungen den Maskeneintragsberechtigungen zugeordnet, während der Besitzergruppeneintrag weiterhin die Besitzergruppenberechtigungen definiert. Die Zuordnung der Gruppenklassenberechtigungen ist nicht mehr konstant.

Gegenmodus
quelle
Was Sie sagen, gilt für die folgende getfacl-Ausgabe: user :: rw- group :: r-- other :: r-- . Diese 3 Zeilen würden sich ändern, wenn Sie den chmodBefehl zum Ändern der Standardberechtigungen verwenden und umgekehrt, wenn Sie beispielsweise getfacl -m u:someuser:rwxdie Standarddateiberechtigung für den Dateieigentümer ausführen, und die Änderung wird in der ls -lAusgabe wiedergegeben. Das ist alles wahr, aber ich verstehe nicht, wie es meine Frage beantwortet
Golem
siehe meine Bearbeitung für die ganze Geschichte
Countermode
1
In Ihrer bearbeiteten Antwort heißt es, dass eine Kopplung zwischen Dateigruppenberechtigungen und ACL-Maske besteht. Die Frage, aus welchem ​​Grund ACL-Masken- und Dateigruppenberechtigungen gekoppelt werden sollen, ist noch offen. Welche Logik dahinter steckt, ist mir nicht klar.
Golem
1
Es könnte einen Sinn geben. Dies hängt von der Definition und Implementierung ab. Per Definition ist die Linux-Datei-ACL, wie sie jetzt implementiert ist, eine Obermenge der Standard-Dateiberechtigungen, die sie enthalten. Sie können also nicht "widersprechen". Hier ist ein Anwendungsfall. Wenn ich einem "Testbenutzer" rwx-Berechtigungen für die Datei mit anfänglichen -rw-r--r-- 1 user userBerechtigungen zuweisen , wird diese benannte Benutzer-ACL akzeptiert und die ACL-Maske (zusammen mit den Dateigruppenberechtigungen) wird ebenfalls in rwx geändert. --- [siehe den nächsten Kommentar als Fortsetzung]
Golem
1
Widersprechen die rwx-Berechtigungen von "testuser" den neuen -rw-rwxr-- 1 user userBerechtigungen der Datei oder nicht? Wie bestimmen Sie den Widerspruch? Durch Vergleichen der ACL-Berechtigungen des Testbenutzers mit den Standardberechtigungen für Dateigruppen? Welche Logik hat Sie veranlasst, Gruppenberechtigungen mit Benutzerberechtigungen zu vergleichen? Sind sie nicht verschiedene Wesen? Ist es nicht eingängig? Es ist wahrscheinlich offensichtlich für Sie, aber ich kämpfe immer noch darum, es zu begreifen.
Golem
3

Ich habe endlich verstanden, was genau passiert, als ich diesen Link sah, der ACLs handhabt

Insbesondere ersetzen und ersetzen diese Masken im Grunde NAMED USER und alle GROUP-Berechtigungen. Dies bedeutet, wenn Sie:

  1. passen Sie die Maske an, ändern Sie die Gruppenmaximalberechtigungen,
  2. Wenn Sie eine der Gruppenberechtigungen mit einer vorhandenen Maske ändern, übernimmt die Maske die maximalen Gruppenberechtigungen aller Gruppenberechtigungen
  3. Lese-, Schreib- und Ausführungsberechtigungen für Gruppen werden basierend auf der Maske festgelegt, sofern vorhanden

Bildbeschreibung hier eingeben

Hoffentlich hilft das.

jjisnow
quelle
Auf der Seite, auf die Sie verwiesen haben, finden Sie eine sehr schöne Erklärung der Maske (Zitat aus Abschnitt 27.3.3. Ein Verzeichnis mit Zugriffs-ACL ): mask definiert die maximal effektiven Zugriffsberechtigungen für alle Einträge in der Gruppenklasse. Dies umfasst einen benannten Benutzer, eine benannte Gruppe und eine besitzende Gruppe. .
patryk.beza
-1

Welche Logik steckt dahinter?

Die Logik ist völlig durchbrochen und daher sind POSIX-ACLs purer und nutzloser Unsinn.

Wenn sie darauf abzielen, die Kompatibilität mit Apps zu erhalten, die keine ACLs kennen, mit Ausnahme des "ugo" -Modells des primitiven Standard- UNIX, scheiterten sie tatsächlich am Anfang, da jetzt jede App, die die Berechtigungen der Gruppe löscht, den Zugriff, der durch ACLs hinzugefügt wurde, effektiv entzieht.

Poige
quelle