GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Vorrang von Benutzer- und Gruppeneigentümern bei Dateiberechtigungen?

Ich bin gerade auf etwas Unerwartetes (für mich) in Bezug auf Dateiberechtigungen unter Linux (Arch Linux) gestoßen. Grundsätzlich habe ich:

  • userX in groupX
  • fileX userX:groupX ---rwx----

Was mich verwirrt:Ich kann keine Aktion ausführen (rwx ) auf fileX . Ist das richtig? Kann bitte jemand bestätigen, dass dies tatsächlich das erwartete Verhalten ist?

Die einzigen Aktionen, die ich ausführen kann, sind mv und rm weil ich Schreibrechte auf das übergeordnete Verzeichnis habe.

Die Sache ist die, ich dachte immer, diese Berechtigungen kollabieren miteinander, beginnend mit der allgemeinsten (andere -> Gruppe -> Benutzer). Mit anderen Worten, wenn o=rwx wen kümmert es, wie die Berechtigungen für Gruppe und Benutzer sind?
Anscheinend ist das nicht der Fall, aber es macht für mich nicht viel Sinn; es scheint kontraintuitiv. Das einzige, wofür dieser Ansatz nützlich zu sein scheint, ist, eine ganz bestimmte Person / Gruppe einfach auszuschließen, was nicht wie ein kluger Weg zu sein scheint (imho). Außerdem sollte der Besitzer (und die Gruppe?) chmod können sowieso richtig? Irgendwelche Gedanken zu diesem Thema?

Akzeptierte Antwort:

Die Sache ist die, ich dachte immer, diese Berechtigungen würden sich gegenseitig aufheben, beginnend mit der allgemeinsten (Andere -> Gruppe -> Benutzer).

Wenn dies der Fall wäre, würden „andere“ Berechtigungen für alle gelten.

Mit anderen Worten, wenn o=rwx, wen interessiert es, welche Berechtigungen für Gruppe und Benutzer gelten?

Das unterscheidet sich von Ihrem vorherigen Satz. Hier implizieren Sie, dass die Berechtigungen miteinander verknüpft sind, z. dass BenutzerX die Leseberechtigung hat, wenn BenutzerX die Datei besitzt und die Datei für Benutzer lesbar ist, oder wenn eine Gruppe, zu der BenutzerX gehört, die Datei besitzt und die Datei für Gruppen lesbar ist, oder wenn die Datei für andere lesbar ist. Aber so funktioniert es nicht. Tatsächlich o=rwx bedeutet, dass der rwx Berechtigungen gelten für andere, aber es sagt nichts über Entitäten aus, die keine anderen sind.

Zunächst spielt es keine Rolle, welchen Gruppen ein Benutzer angehört. Der Kernel hat keine Vorstellung von Benutzern, die zu Gruppen gehören. Was der Kernel verwaltet, ist für jeden Prozess eine Benutzer-ID (die effektive UID) und eine Liste von Gruppen-IDs (die effektive GID und die ergänzenden GIDs). Die Gruppen werden zum Zeitpunkt der Anmeldung durch den Anmeldevorgang bestimmt – es ist der Anmeldevorgang, der die Gruppendatenbank liest (z. B. /etc/group ). Benutzer- und Gruppen-IDs werden von untergeordneten Prozessen¹ geerbt.

Wenn ein Prozess versucht, eine Datei mit herkömmlichen Unix-Berechtigungen zu öffnen:

  • Wenn der Eigentümer der Datei die effektive UID des Prozesses ist, werden die Benutzerberechtigungsbits verwendet.
  • Andernfalls, wenn die Eigentümergruppe der Datei die effektive GID des Prozesses oder eine der zusätzlichen Gruppen-IDs des Prozesses ist, werden die Gruppenberechtigungsbits verwendet.
  • Andernfalls werden die anderen Berechtigungsbits verwendet.

Es wird immer nur ein Satz rwx-Bits verwendet. Benutzer hat Vorrang vor Gruppe, die Vorrang vor anderen hat. Wenn Zugriffskontrolllisten vorhanden sind, wird der oben beschriebene Algorithmus verallgemeinert:

  • Wenn in der Datei eine ACL für die effektive UID des Prozesses vorhanden ist, wird diese verwendet, um zu bestimmen, ob der Zugriff gewährt wird.
  • Andernfalls, wenn es eine ACL in der Datei für die effektive GID des Prozesses oder eine der zusätzlichen Gruppen-IDs des Prozesses gibt, werden die Gruppenberechtigungsbits verwendet.
  • Andernfalls werden die anderen Berechtigungsbits verwendet.
Verwandte:Woher weiß der Befehl xdg-open, welche Anwendung zum Öffnen einer Datei verwendet werden soll?

Also -rw----r-- alice interns bezeichnet eine Datei, die von Alice gelesen und geschrieben werden kann und die von allen anderen Benutzern außer Praktikanten gelesen werden kann. Eine Datei mit Berechtigungen und Eigentum ----rwx--- alice interns ist nur für Praktikanten zugänglich, mit Ausnahme von Alice (unabhängig davon, ob sie Praktikantin ist oder nicht). Da Alice chmod anrufen kann die Berechtigungen zu ändern, dies bietet keine Sicherheit; es ist ein Grenzfall. Auf Systemen mit ACLs ermöglicht der allgemeine Mechanismus das Entfernen von Berechtigungen von bestimmten Benutzern oder bestimmten Gruppen, was manchmal nützlich ist.

Die Verwendung eines einzigen Satzes von Bits, anstatt alle Bits für jede Aktion (Lesen, Schreiben, Ausführen) zu verodern, hat mehrere Vorteile:

  • Es hat den nützlichen Effekt, dass es erlaubt, Berechtigungen von einer Gruppe von Benutzern oder Gruppen auf Systemen mit ACLs zu entfernen. Auf Systemen ohne ACLs können Berechtigungen einer Gruppe entzogen werden.
  • Es ist einfacher zu implementieren:Überprüfen Sie einen Satz von Bits, anstatt mehrere Sätze von Bits miteinander zu kombinieren.
  • Es ist einfacher, die Berechtigungen einer Datei zu analysieren, da weniger Vorgänge erforderlich sind.

¹ Sie können sich ändern, wenn ein setuid- oder setgid-Prozess ausgeführt wird. Dies hat nichts mit dem vorliegenden Problem zu tun.


Linux
  1. So verwalten Sie Datei- und Verzeichnisberechtigungen/Eigentümer in Linux

  2. Anfängerleitfaden zur Benutzer- und Gruppenverwaltung in Linux

  3. Besitzer und Gruppe in C ändern?

  4. Unterscheiden Sie jeden Apache-Benutzer und geben Sie Berechtigungen

  5. Wie kann ich ls nach Besitzer und Gruppe sortieren?

So ändern Sie den Datei-/Gruppenbesitzer mit dem Befehl chown in Linux

Chown-Befehl in Linux (Dateibesitz)

Linux-Befehl id - Gibt Benutzer-ID- und Gruppen-ID-Informationen aus

Grundlegende Dateiberechtigungen und Eigentumsrechte in Linux verstehen

Linux-Interviewfragen – Grundlegende Datei- und Verzeichnisberechtigungen

Datei- und Ordnerberechtigungen mit rsync beibehalten