1. Oracle Solaris ZFS-Dateisystem (Einführung)
2. Erste Schritte mit Oracle Solaris ZFS
3. Unterschiede zwischen Oracle Solaris ZFS und herkömmlichen Dateisystemen
4. Verwalten von Oracle Solaris ZFS-Speicher-Pools
5. Installieren und Booten eines Oracle Solaris ZFS-Root-Dateisystems
6. Verwalten von Oracle Solaris ZFS-Dateisystemen
7. Arbeiten mit Oracle Solaris ZFS-Snapshots und -Klonen
8. Schützen von Oracle Solaris ZFS-Dateien mit Zugriffskontrolllisten und Attributen
Neues Solaris-Modell für Zugriffskontrolllisten
Syntaxbeschreibungen zum Setzen von Zugriffskontrolllisten
Vererbung von Zugriffskontrolllisten
Eigenschaften von Zugriffskontrolllisten (aclinherit)
Setzen von Zugriffskontrolllisten an ZFS-Dateien
Setzen und Anzeigen von Zugriffskontrolllisten an ZFS-Dateien im ausführlichen Format
Festlegen der Vererbung von Zugriffskontrolllisten an ZFS-Dateien im ausführlichen Format
Setzen und Anzeigen von Zugriffskontrolllisten an ZFS-Dateien im Kompaktformat
9. Delegierte Oracle Solaris ZFS-Administration
10. Fortgeschrittene Oracle Solaris ZFS-Themen
11. Problembehebung und Pool-Wiederherstellung in Oracle Solaris ZFS
Mit dem Befehl chmod können Sie Zugriffskontrolllisten von ZFS-Dateien ändern. Die folgende chmod-Syntax zum Ändern von Zugriffskontrolllisten nutzt zur Erkennung des Zugriffskontrolllistenformats die Zugriffskontrolllisten-Spezifikation. Eine Beschreibung der Zugriffskontrolllisten-Spezifikation finden Sie unter Syntaxbeschreibungen zum Setzen von Zugriffskontrolllisten.
Hinzufügen von Zugriffskontrolllisten-Eintragstypen
Hinzufügen eines Zugriffskontrolllisteneintrags für einen Benutzer
% chmod A+acl-specification filename
Hinzufügen eines Zugriffskontrolllisteneintrags nach Index-ID
% chmod Aindex-ID+acl-specification filename
Mit dieser Syntax wird der neue Zugriffskontrolllisteneintrag an der entsprechenden Index-ID eingefügt.
Ersetzen eines Zugriffskontrolllisteneintrags
% chmod A=acl-specification filename
% chmod Aindex-ID=acl-specification filename
Entfernen von Zugriffskontrolllisteneinträgen
Entfernen eines Zugriffskontrolllisteneintrags nach Index-ID
% chmod Aindex-ID- filename
Entfernen eines Zugriffskontrolllisteneintrags nach Benutzername
% chmod A-acl-specification filename
Entfernen aller komplexen Zugriffskontrolleinträge aus einer Datei
% chmod A- filename
Ausführliche Informationen zu Zugriffskontrolllisten werden mithilfe des Befehls ls - v angezeigt. Beispiel:
# ls -v file.1 -rw-r--r-- 1 root root 206663 Jun 23 15:06 file.1 0:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
Informationen zur Verwendung des Zugriffskontrolllisten-Kompaktformats finden Sie unter Setzen und Anzeigen von Zugriffskontrolllisten an ZFS-Dateien im Kompaktformat.
Beispiel 8-1 Ändern gewöhnlicher Zugriffskontrolllisten an ZFS-Dateien
Dieser Abschnitt enthält Beispiele zum Setzen und Anzeigen gewöhnlicher Zugriffskontrolllisten.
Im folgenden Beispiel besitzt Datei.1 eine gewöhnliche Zugriffskontrollliste:
# ls -v file.1 -rw-r--r-- 1 root root 206663 Jun 23 15:06 file.1 0:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
Im folgenden Beispiel wird die Berechtigung write_data für group@ gewährt.
# chmod A1=group@:read_data/write_data:allow file.1 # ls -v file.1 -rw-rw-r-- 1 root root 206663 Jun 23 15:06 file.1 0:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 1:group@:read_data/write_data:allow 2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
Im folgenden Beispiel werden die Berechtigungen an Datei.1 auf 644 zurückgesetzt.
# chmod 644 file.1 # ls -v file.1 -rw-r--r-- 1 root root 206663 Jun 23 15:06 file.1 0:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
Beispiel 8-2 Setzen komplexer Zugriffskontrolllisten an ZFS-Dateien
Dieser Abschnitt enthält Beispiele zum Setzen und Anzeigen komplexer Zugriffskontrolllisten.
Im folgenden Beispiel werden die Berechtigungen read_data/execute für den Benutzer gozer und das·Verzeichnis Test.Verz gesetzt.
# chmod A+user:gozer:read_data/execute:allow test.dir # ls -dv test.dir drwxr-xr-x+ 2 root root 2 Jun 23 15:11 test.dir 0:user:gozer:list_directory/read_data/execute:allow 1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 2:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Im folgenden Beispiel werden die Berechtigungen read_data/execute für den Benutzer gozer entfernt.
# chmod A0- test.dir # ls -dv test.dir drwxr-xr-x 2 root root 2 Jun 23 15:11 test.dir 0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 1:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Beispiel 8-3 Interaktion von Zugriffskontrolllisten mit Berechtigungen an ZFS-Dateien
Diese Beispiele demonstrieren die Interaktion zwischen dem Setzen von Zugriffskontrolllisten und dem anschließenden Ändern der Berechtigungs-Bits einer Datei bzw. eines Verzeichnisses.
Im folgenden Beispiel besitzt Datei.2 eine gewöhnliche Zugriffskontrollliste:
# ls -v file.2 -rw-r--r-- 1 root root 49090 Jun 23 15:13 file.2 0:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 2:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
Im folgenden Beispiel werden gewährte Zugriffskontrolllisten-Berechtigungen vom Benutzer everyone@ entfernt.
# chmod A2- file.2 # ls -v file.2 -rw-r----- 1 root root 49090 Jun 23 15:13 file.2 0:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 1:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow
In dieser Ausgabe werden die Dateiberechtigungs-Bits von 644 auf 640 zurückgesetzt. Leseberechtigungen für everyone@ werden faktisch von den Dateiberechtigungs-Bits entfernt, wenn die gewährten Zugriffskontrolllisten-Zugriffsrechte für everyone@ entfernt werden.
Im folgenden Beispiel wird die vorhandene Zugriffskontrollliste mit den Zugriffsrechten read_data/write_data für everyone@ ersetzt.
# chmod A=everyone@:read_data/write_data:allow file.3 # ls -v file.3 -rw-rw-rw- 1 root root 27482 Jun 23 15:14 file.3 0:everyone@:read_data/write_data:allow
In dieser Ausgabe ersetzt die chmod-Syntax faktisch die Zugriffskontrollliste mit den Berechtigungen read_data/write_data:allow durch Lese- und Schreibberechtigungen für Eigentümer, Gruppen und everyone@. In diesem Modell gibt everyone@ den Zugriff für beliebige Benutzer bzw. Gruppen an. Da keine Zugriffskontrolllisteneinträge für owner@ bzw. group@ existieren, die die Zugriffsrechte für Eigentümer und Gruppen überschreiben könnten, werden die Berechtigungs-Bits auf 666 gesetzt.
Im folgenden Beispiel wird die vorhandene Zugriffskontrollliste mit Leseberechtigungen für den Benutzer gozer ersetzt.
# chmod A=user:gozer:read_data:allow file.3 # ls -v file.3 # ls -v file.3 ----------+ 1 root root 27482 Jun 23 15:14 file.3 0:user:gozer:read_data:allow
In diesem Beispiel werden die Dateizugriffsrechte mit 000 berechnet, da für owner@, group@ bzw. everyone@ keine Zugriffskontrolllisteneinträge vorhanden sind, die die herkömmlichen Berechtigungskomponenten einer Datei repräsentieren. Der Dateieigentümer kann dieses Problem durch Zurücksetzen der Zugriffsrechte (und der Zugriffskontrollliste) wie folgt beheben:
# chmod 655 file.3 # ls -v file.3 -rw-r-xr-x 1 root root 27482 Jun 23 15:14 file.3 0:owner@:execute:deny 1:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 2:group@:read_data/read_xattr/execute/read_attributes/read_acl /synchronize:allow 3:everyone@:read_data/read_xattr/execute/read_attributes/read_acl /synchronize:allow
Beispiel 8-4 Wiederherstellen gewöhnlicher Zugriffskontrolllisten an ZFS-Dateien
Mit dem Befehl chmod können Sie alle komplexen Zugriffskontrolllisten einer Datei bzw. eines Verzeichnisses entfernen.
Im folgenden Beispiel besitzt test5.dir zwei komplexe Zugriffskontrolleinträge.
# ls -dv test5.dir drwxr-xr-x 2 root root 2 Jun 23 15:17 test5.dir 0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 1:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Im folgenden Beispiel werden die komplexen Zugriffsteuerungslisten für die Benutzer gozer und lp entfernt. Die verbleibende Zugriffskontrollliste enthält die Standardwerte owner@, group@ und everyone@.
# chmod A- test5.dir # ls -dv test5.dir drwxr-xr-x 2 root root 2 Jun 23 15:17 test5.dir 0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 1:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Sie können festlegen, ob Zugriffsteuerungslisten von Dateien und Verzeichnissen vererbt werden sollen oder nicht. Standardmäßig werden Zugriffskontrolllisten nicht weitergegeben. Wenn Sie für ein Verzeichnis eine komplexe Zugriffskontrollliste setzen, wird diese nicht an untergeordnete Verzeichnisse vererbt. Sie müssen die Vererbung einer Zugriffskontrollliste für Dateien oder Verzeichnisse explizit angeben.
Die Eigenschaft aclinherit kann in einem Datensystem global gesetzt werden. Standardmäßig ist aclinherit auf restricted gesetzt.
Weitere Informationen dazu finden Sie in Vererbung von Zugriffskontrolllisten.
Beispiel 8-5 Gewähren der Standardvererbung von Zugriffskontrolllisten
Standardmäßig werden Zugriffskontrolllisten nicht durch eine Verzeichnisstruktur weitergegeben.
Im folgenden Beispiel wird ein komplexer Zugriffskontrolleintrag mit den Zugriffsrechten read_data/write_data/execute für den Benutzer gozer und das·Verzeichnis test.dir gesetzt.
# chmod A+user:gozer:read_data/write_data/execute:allow test.dir # ls -dv test.dir drwxr-xr-x+ 2 root root 2 Jun 23 15:18 test.dir 0:user:gozer:list_directory/read_data/add_file/write_data/execute:allow 1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 2:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Beim Erstellen eines Unterverzeichnisses in test.dir wird der Zugriffskontrolleintrag für den Benutzer gozer nicht weitergegeben. Der Benutzer gozer hätte nur dann Zugriff auf das Unterverzeichnis sub.dir, wenn ihm die Berechtigungen für sub.dir Zugriff als Dateieigentümer, Gruppenmitglied oder everyone@ gewähren würden.
# mkdir test.dir/sub.dir # ls -dv test.dir/sub.dir drwxr-xr-x 2 root root 2 Jun 23 15:19 test.dir/sub.dir 0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 1:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Beispiel 8-6 Gewähren der Vererbung von Zugriffskontrolllisten an Dateien und Verzeichnissen
In dieser Beispielfolge sind die Zugriffskontrolleinträge für Dateien und Verzeichnisse aufgeführt, die beim Setzen des Flags file_inherit angewendet werden.
Im folgenden Beispiel werden die Zugriffsrechte read_data/write_data für den Benutzer gozer des Verzeichnisses test2.dir hinzugefügt, sodass dieser Benutzer Leseberechtigung für neu erstellte Dateien besitzt.
# chmod A+user:gozer:read_data/write_data:file_inherit:allow test2.dir # ls -dv test2.dir drwxr-xr-x+ 2 root root 2 Jun 23 15:20 test2.dir 0:user:gozer:read_data/write_data:file_inherit:allow 1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 2:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Im folgenden Beispiel werden die Zugriffsrechte des Benutzers gozer auf die neu erstellte Datei test2.dir/file.2 angewendet. Durch die gewährte Zugriffskontrolllisten-Vererbung read_data:file_inherit:allow hat der Benutzer gozer Leseberechtigung für den Inhalt neu erstellter Dateien.
# touch test2.dir/file.2 # ls -v test2.dir/file.2 -rw-r--r--+ 1 root root 0 Jun 23 15:21 test2.dir/file.2 0:user:gozer:read_data:allow 1:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
Da die Eigenschaft aclinherit für dieses Dateisystem auf den Standardwert restricted gesetzt ist, hat der Benutzer gozer für die Datei file.2 nicht das Zugriffsrecht write_data, da es die Gruppenberechtigung der Datei nicht zulässt.
Bitte beachten Sie, dass das Zugriffsrecht inherit_only, das beim Setzen der Flags file_inherit bzw. dir_inherit angewendet wird, zum Weitergeben der Zugriffskontrollliste durch die Verzeichnisstruktur dient. Somit werden dem Benutzer gozer nur Zugriffsrechte für everyone@ gewährt bzw. verweigert, wenn er nicht Eigentümer der betreffenden Datei ist bzw. nicht zur Eigentümergruppe gehört. Beispiel:
# mkdir test2.dir/subdir.2 # ls -dv test2.dir/subdir.2 drwxr-xr-x+ 2 root root 2 Jun 23 15:21 test2.dir/subdir.2 0:user:gozer:list_directory/read_data/add_file/write_data:file_inherit /inherit_only:allow 1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 2:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
In der folgenden Beispielfolge sind die Zugriffskontrolllisten für Dateien und Verzeichnisse aufgeführt, die beim Setzen des Flags file_inherit bzw. dir_inherit angewendet werden.
Im folgenden Beispiel werden dem Benutzer gozer Lese-, Schreib- und Ausführungsberechtigungen gewährt, die für neu erstellte Dateien und Verzeichnisse vererbt wurden.
# chmod A+user:gozer:read_data/write_data/execute:file_inherit/dir_inherit:allow test3.dir # ls -dv test3.dir drwxr-xr-x+ 2 root root 2 Jun 23 15:22 test3.dir 0:user:gozer:list_directory/read_data/add_file/write_data/execute :file_inherit/dir_inherit:allow 1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 2:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
# touch test3.dir/file.3 # ls -v test3.dir/file.3 -rw-r--r--+ 1 root root 0 Jun 23 15:25 test3.dir/file.3 0:user:gozer:read_data:allow 1:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
# mkdir test3.dir/subdir.1 # ls -dv test3.dir/subdir.1 drwxr-xr-x+ 2 root root 2 Jun 23 15:26 test3.dir/subdir.1 0:user:gozer:list_directory/read_data/execute:file_inherit/dir_inherit :allow 1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 2:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Da die Zugriffsrecht-Bits des übergeordneten Verzeichnisses für group@ und everyone@ Schreib- und Ausführungsberechtigungen verweigern, wird in diesem Beispiel dem Benutzer gozer ebenfalls die Schreib- und Ausführungsberechtigung verweigert. Der Standardwert der Eigenschaft aclinherit ist restricted, was bedeutet, dass die Zugriffsrechte write_data und execute nicht vererbt werden.
Im folgenden Beispiel werden dem Benutzer gozer Lese-, Schreib- und Ausführungsberechtigungen gewährt, die für neu erstellte Dateien und Verzeichnisse vererbt wurden, aber nicht an die untergeordneten Dateien des Verzeichnisses weitergegeben werden.
# chmod A+user:gozer:read_data/write_data/execute:file_inherit/no_propagate:allow test4.dir # ls -dv test4.dir drwxr-xr-x+ 2 root root 2 Jun 23 15:27 test4.dir 0:user:gozer:list_directory/read_data/add_file/write_data/execute :file_inherit/no_propagate:allow 1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 2:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Wie das folgende Beispiel zeigt, werden beim Erstellen eines neuen Unterverzeichnisses die Zugriffsrechte read_data/write_data/execute für den Benutzer gozer nicht an das neue Verzeichnis sub4.dir weitergegeben.
# mkdir test4.dir/sub4.dir # ls -dv test4.dir/sub4.dir drwxr-xr-x 2 root root 2 Jun 23 15:28 test4.dir/sub4.dir 0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 1:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 2:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Wie das folgende Beispiel zeigt, werden die Zugriffsrechte read_data/write_data/execute des Benutzers gozer basierend auf den Rechten der Eigentümergruppe reduziert.
# touch test4.dir/file.4 # ls -v test4.dir/file.4 -rw-r--r--+ 1 root root 0 Jun 23 15:28 test4.dir/file.4 0:user:gozer:read_data:allow 1:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
Beispiel 8-7 Vererbung von Zugriffskontrolllisten mit dem Zugriffskontrolllistenmodus "Pass Through"
Wenn die Eigenschaft aclinherit des Dateisystems tank/cindy auf passthrough gesetzt ist, erbt der Benutzer gozer die auf test4.dir angewendete Zugriffskontrollliste für die neu erstellte Datei file.4 wie folgt:
# zfs set aclinherit=passthrough tank/cindy # touch test4.dir/file.4 # ls -v test4.dir/file.4 -rw-r--r--+ 1 root root 0 Jun 23 15:35 test4.dir/file.4 0:user:gozer:read_data:allow 1:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow
Beispiel 8-8 Vererbung von Zugriffskontrolllisten mit dem Zugriffskontrolllistenmodus "Discard"
Wenn die Eigenschaft aclinherit eines Dateisystems auf discard gesetzt ist, können Zugriffskontrolllisten potenziell ignoriert werden, wenn sich die Zugriffsrecht-Bits eines Verzeichnisses ändern. Beispiel:
# zfs set aclinherit=discard tank/cindy # chmod A+user:gozer:read_data/write_data/execute:dir_inherit:allow test5.dir # ls -dv test5.dir drwxr-xr-x+ 2 root root 2 Jun 23 15:58 test5.dir 0:user:gozer:list_directory/read_data/add_file/write_data/execute :dir_inherit:allow 1:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 2:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 3:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Wenn Sie später die Zugriffsrechte an einem Verzeichnis einschränken, gelten die komplexen Zugriffskontrolllisten nicht mehr. Beispiel:
# chmod 744 test5.dir # ls -dv test5.dir drwxr--r-- 2 root root 2 Jun 23 15:58 test5.dir 0:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 1:group@:list_directory/read_data/read_xattr/read_attributes/read_acl /synchronize:allow 2:everyone@:list_directory/read_data/read_xattr/read_attributes/read_acl /synchronize:allow
Beispiel 8-9 Vererbung von Zugriffskontrolllisten mit dem Zugriffskontrolllistenmodus "Noallow"
Im folgenden Beispiel sind zwei komplexe Zugriffsteuerungslisten mit Dateivererbung gesetzt. Eine Zugriffskontrollliste gewährt die Berechtigung read_data, und die andere Zugriffskontrollliste verweigert die Berechtigung read_data. Dieses Beispiel zeigt auch, wie Sie mit dem gleichen Aufruf des Befehls chmod zwei Zugriffskontrolleinträge angeben können.
# zfs set aclinherit=noallow tank/cindy # chmod A+user:gozer:read_data:file_inherit:deny,user:lp:read_data:file_inherit:allow test6.dir # ls -dv test6.dir drwxr-xr-x+ 2 root root 2 Jun 23 16:00 test6.dir 0:user:gozer:read_data:file_inherit:deny 1:user:lp:read_data:file_inherit:allow 2:owner@:list_directory/read_data/add_file/write_data/add_subdirectory /append_data/read_xattr/write_xattr/execute/read_attributes /write_attributes/read_acl/write_acl/write_owner/synchronize:allow 3:group@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow 4:everyone@:list_directory/read_data/read_xattr/execute/read_attributes /read_acl/synchronize:allow
Wie das folgende Beispiel zeigt, gilt beim Erstellen einer neuen Datei die Zugriffskontrollliste, die das Zugriffsrecht read_data gewährt, nicht mehr.
# touch test6.dir/file.6 # ls -v test6.dir/file.6 -rw-r--r--+ 1 root root 0 Jun 15 12:19 test6.dir/file.6 0:user:gozer:read_data:inherited:deny 1:owner@:read_data/write_data/append_data/read_xattr/write_xattr /read_attributes/write_attributes/read_acl/write_acl/write_owner /synchronize:allow 2:group@:read_data/read_xattr/read_attributes/read_acl/synchronize:allow 3:everyone@:read_data/read_xattr/read_attributes/read_acl/synchronize :allow