In ZFS bestehen Zugriffssteuerungslisten aus Zugriffssteuerungslisteneinträgen. ZFS bietet ein reines Zugriffssteuerungslistenmodell, in dem alle Dateien eine Zugriffssteuerungsliste besitzen. Normalerweise sind solche Zugriffssteuerungslisten gewöhnlich, da sie nur die herkömmlichen UNIX-Einträge owner/group/other repräsentieren.
Wenn Sie also die Zugriffsrechte einer Datei ändern, wird die entsprechende Zugriffssteuerungsliste automatisch aktualisiert. Wenn Sie eine komplexe Zugriffssteuerungsliste entfernen, die einem Benutzer Zugriff auf eine Datei bzw. ein Verzeichnis gewährt, kann dieser Benutzer unter Umständen noch immer Zugriff auf diese Datei bzw. dieses Verzeichnis haben, da die Zugriffsrecht-Bits dieser Datei bzw. dieses Verzeichnisses einer Gruppe oder allen Benutzern Zugriff gewähren. Alle Entscheidungen in Sachen Zugriffskontrolle werden von den Zugriffsrechten der Zugriffssteuerungsliste dieser Datei bzw. dieses Verzeichnisses festgelegt.
Es folgen die grundlegenden Regeln für den Zugriff auf ZFS-Dateien mithilfe von Zugriffssteuerungslisten:
ZFS verarbeitet Zugriffssteuerungslisteneinträge in der Reihenfolge, wie sie in der Zugriffssteuerungsliste aufgeführt sind (d. h. von oben nach unten).
Es werden nur Zugriffssteuerungslisteneinträge berücksichtigt, deren Benutzer-ID mit der ID des Zugriff anfordernden Benutzer übereinstimmt.
Wenn ein Zugriffsrecht einmal gewährt wurde, kann es durch nachfolgende Zugriffssteuerungslisteneinträge in der gleichen Zugriffssteuerungsliste nicht mehr rückgängig gemacht werden.
Eigentümern von Dateien wird das Zugriffsrecht write_acl auch dann bedingungslos gewährt, wenn es in der Zugriffssteuerungsliste explizit verweigert wird. Nicht angegebene Zugriffsrechte werden verweigert.
Falls Zugriffsrechte verweigert werden bzw. Angaben zum Zugriff auf eine Datei fehlen, legen die Zugriffsrechte des betreffenden untergeordneten Systems fest, welche Rechte dem Eigentümer einer Datei bzw. dem Superuser gewährt werden. Dadurch wird verhindert, dass der Zugriff für Dateieigentümernicht gesperrt wird und Superuser Dateien aus Gründen der Wiederherstellung ändern können.
Wenn Sie für ein Verzeichnis eine komplexe Zugriffssteuerungsliste setzen, wird diese nicht automatisch an untergeordnete Verzeichnisse dieses Verzeichnisses vererbt. Wenn Sie für ein Verzeichnis eine komplexe Zugriffssteuerungsliste setzen und diese an die untergeordneten Verzeichnisse dieses Verzeichnisses vererbt werden soll, müssen Sie die Zugriffssteuerungslisten-Vererbungsflags verwenden. Weitere Informationen finden Sie in Tabelle 8–3 und unter Festlegen der Vererbung von Zugriffssteuerungslisten an ZFS-Dateien im ausführlichen Format.
Erstellen einer neuen Datei und (je nach dem Wert von umask) einer gewöhnlichen Standard-Zugriffssteuerungsliste ähnlich wie im folgenden Beispiel:
$ ls -v file.1 -rw-r--r-- 1 root root 206663 May 20 14:09 file.1 0:owner@:execute:deny 1:owner@:read_data/write_data/append_data/write_xattr/write_attributes /write_acl/write_owner:allow 2:group@:write_data/append_data/execute:deny 3:group@:read_data:allow 4:everyone@:write_data/append_data/write_xattr/execute/write_attributes /write_acl/write_owner:deny 5:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow |
Bitte beachten Sie, dass in diesem Beispiel jede Benutzerkategorie (owner@, group@, everyone@) zwei Zugriffssteuerungslisteneinträge besitzt. Ein Eintrag gilt für die Verweigerung (deny), der andere zum Gewähren (allow) von Zugriffsrechten.
Es folgt eine Beschreibung dieser Datei-Zugriffssteuerungsliste:
Dem Eigentümer wird das Ausführen der Datei verweigert (execute:deny).
Der Eigentümer kann den Dateiinhalt lesen und ändern ( read_data/write_data/append_data). Der Eigentümer kann darüber hinaus auch Dateiattribute wie z. B. Zeitmarken, erweiterte Attribute und Zugriffssteuerungslisten ändern (write_xattr/write_attributes /write_acl). Zusätzlich dazu kann der Eigentümer die Datei-Eigentümerschaft ändern (write_owner:allow).
Der Gruppe wird das Ausführen der Datei verweigert (write_data/append_data/execute:deny).
Der Gruppe wird die Berechtigung zum Lesen der Datei gewährt (read_data:allow).
Benutzern, die nicht Eigentümer der Datei sind oder nicht zur Gruppe der Dateieigentümer gehören, wird die Berechtigung zum Ausführen und Ändern des Inhalts der Datei bzw. Ändern von Dateiattributen verweigert (write_data/append_data/write_xattr/execute/write_attributes/write_acl/write_owner:deny ).
Benutzern, die nicht Eigentümer der Datei sind oder nicht zur Gruppe der Dateieigentümer gehören, wird die Berechtigung zum Lesen der Datei bzw. der Dateiattribute gewährt (read_data/read_xattr/read_attributes/read_acl/synchronize:allow ). Das Zugriffsrecht synchronize ist zurzeit nicht implementiert.
Erstellen eines neuen Verzeichnisses und (je nach dem Wert von umask) einer Standardverzeichnis-Zugriffssteuerungsliste ähnlich wie im folgenden Beispiel:
$ ls -dv dir.1 drwxr-xr-x 2 root root 2 May 20 14:11 dir.1 0:owner@::deny 1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/write_xattr/execute/write_attributes/write_acl /write_owner:allow 2:group@:add_file/write_data/add_subdirectory/append_data:deny 3:group@:list_directory/read_data/execute:allow 4:everyone@:add_file/write_data/add_subdirectory/append_data/write_xattr /write_attributes/write_acl/write_owner:deny 5:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow |
Es folgt eine Beschreibung dieser Verzeichnis-Zugriffssteuerungsliste:
Die Verweigerungsliste für den Eigentümer ist leer (::deny).
Der Eigentümer kann den Inhalt des Verzeichnisses lesen und ändern (list_directory/read_data/add_file/write_data/add_subdirectory/append_data ), durchsuchen Sie die Inhalte (execute), und ändern Sie die Verzeichnisattribute wie z. B. Zeitmarken, erweiterte Attribute und Zugriffssteuerungslisten ( write_xattr/write_attributes/write_acl). Zusätzlich dazu kann der Eigentümer die Verzeichnis-Eigentümerschaft ändern (write_owner:allow).
Die Gruppe kann den Verzeichnisinhalt weder erweitern noch ändern ( add_file/write_data/add_subdirectory/append_data:deny).
Die Gruppe kann den Verzeichnisinhalt auflisten und lesen. Darüber hinaus kann die Gruppe kann den Verzeichnisinhalt auch durchsuchen (list_directory/read_data/execute:allow ).
Benutzern, die nicht Eigentümer der Datei sind oder nicht zur Gruppe der Dateieigentümer gehören, wird die Berechtigung zum Erweitern bzw. Ändern des Verzeichnisinhalts verweigert (add_file/write_data/add_subdirectory/append_data). Außerdem wird die Berechtigung zum Ändern von Verzeichnisattributen verweigert (write_xattr/write_attributes/write_acl/write_owner:deny).
Benutzern, die nicht Eigentümer der Datei sind oder nicht zur Gruppe der Dateieigentümer gehören, wird die Berechtigung zum Lesen und Ausführen des Verzeichnisinhalts und der Verzeichnisattribute gewährt (read_data/read_xattr/read_attributes/read_acl/attributes/read_acl/synchronize:allow ). Das Zugriffsrecht synchronize ist zurzeit nicht implementiert.