Oracle Solaris ZFS-Administrationshandbuch

Neues Solaris-Modell für Zugriffssteuerungslisten

Frühere Versionen des Betriebssystems Solaris unterstützten eine auf dem POSIX-Entwurf basierende Implementierung von Zugriffssteuerungslisten. POSIX-basierte Zugriffssteuerungslisten dienen zum Schutz von UFS-Dateien und werden von NFS-Versionen vor NFSv4 verwendet.

Seit der Einführung von NFSv4 unterstützt ein neues Modell für Zugriffssteuerungslisten vollständig die Interoperabilität, die NFSv4 für die Kommunikation zwischen UNIX-Clients und anderen Clients bietet. Die neue, in der NFSv4-Spezifikation definierte Implementierung von Zugriffssteuerungslisten bietet eine reichhaltigere Semantik, die auf NT-basierten Zugriffssteuerungslisten beruht.

Es folgen die wichtigsten Unterschiede des neuen Zugriffssteuerungslistenmodells:

Beide Zugriffssteuerungslistenmodelle bieten eine feiner abstimmbare Kontrolle von Zugriffsrechten als die Standardzugriffsrechte. Ähnlich wie POSIX-basierten Zugriffssteuerungslisten bestehen auch die neuen Zugriffssteuerungslisten aus mehreren Zugriffssteuerungseinträgen.

POSIX-basierte Zugriffssteuerungslisten definieren mithilfe eines einzigen Eintrags, welche Zugriffsrechte zulässig und unzulässig sind. Das neue Zugriffssteuerungslistenmodell besitzt zwei Arten von Zugriffssteuerungseinträgen, die sich auf die Überprüfung von Zugriffsrechten auswirken: ALLOW (Erlauben) und DENY (Verweigern). Demzufolge können Sie nicht aus einem einzigen Zugriffssteuerungseintrag schließen, ob die in diesem Zugriffssteuerungseintrag nicht definierten Zugriffsrechte zulässig sind oder nicht.

Die Konvertierung zwischen NFSv4-basierten und POSIX-basierten Zugriffssteuerungslisten geschieht wie folgt:

Informationen zu Einschränkungen mit Zugriffssteuerungslisten und Backup-Software finden Sie unter Sichern von ZFS-Daten mit anderen Softwarepaketen zur Erstellung von Sicherungskopien.

Syntaxbeschreibungen zum Setzen von Zugriffssteuerungslisten

Es gibt zwei grundlegende Zugriffssteuerungslistenformate:

Syntax zum Setzen gewöhnlicher Zugriffssteuerungslisten

Eine Zugriffssteuerungsliste ist insofern gewöhnlich, als sie nur die herkömmlichen UNIX-Einträge owner/group/other repräsentiert.

chmod [Optionen] A[Index]{+|=}owner@ |group@ |everyone@: Zugriffsrechte/...[:Vererbungsflags]: deny | allow Datei

chmod [Optionen] A-owner@, group@, everyone@: Zugriffsrechte/...[:Vererbungsflags]: deny | allow Datei ...

chmod [Optionen] A[Index]- Datei

Syntax zum Setzen komplexerer Zugriffssteuerungslisten

chmod [Optionen] A[Index]{+|=}user|group:name:Zugriffsrechte /...[:Vererbungsflags]:deny | allow Datei

chmod [Optionen] A-user|group:name:Zugriffsrechte /...[:Vererbungsflags]:deny | allow Datei ...

chmod [Optionen] A[Index]- Datei

owner@, group@, everyone@

Der Zugriffssteuerungslisten-Eintragstyp für die gewöhnliche Zugriffssteuerungslistensyntax. Eine Beschreibung der Zugriffssteuerungslisten-Eintragstypen finden Sie in Tabelle 8–1.

user oder group:Zugriffssteuerungslisten-Eintragstyp-ID = Benutzername oder Gruppenname

Der Zugriffssteuerungslisten-Eintragstyp für die explizite Zugriffssteuerungslistensyntax. Der Zugriffssteuerungslisten-Eintragstyp „user” bzw. ”group” muss auch die Zugriffssteuerungslisteneintrags-ID, den Benutzernamen oder den Gruppennamen enthalten. Eine Beschreibung der Zugriffssteuerungslisten-Eintragstypen finden Sie in Tabelle 8–1.

Zugriffsrechte/.../

Die Zugriffsrechte, die gewährt bzw. verweigert werden. Eine Beschreibung von Zugriffsrechten für Zugriffssteuerungslisten finden Sie in Tabelle 8–2.

Vererbungsflags

Eine optionale Liste von Vererbungsflags von Zugriffssteuerungslisten. Eine Beschreibung der Vererbungsflags von Zugriffssteuerungslisten finden Sie in Tabelle 8–3.

deny | allow

Legt fest, ob Zugriffsrechte gewährt oder verweigert werden.

Im folgenden Beispiel spielt die Zugriffssteuerungslisten-Eintragstyp-ID keine Rolle:


group@:write_data/append_data/execute:deny

Das folgende Beispiel enthält eine Zugriffssteuerungslisteneintrags-ID, da ein spezifischer Benutzer (Zugriffssteuerungslisten-Eintragstyp) in der Zugriffssteuerungsliste enthalten ist.


0:user:gozer:list_directory/read_data/execute:allow

Ein Zugriffssteuerungslisteneintrag sieht ungefähr wie folgt aus:


2:group@:write_data/append_data/execute:deny

Die 2 bzw. die Index-ID in diesem Beispiel identifiziert den Zugriffssteuerungslisteneintrag in der größeren Zugriffssteuerungsliste, in der für Eigentümer, spezifische UIDs, Gruppen und allgemeine Zugriffsrechte mehrere Einträge vorhanden sein können. Sie können die Index-ID mit dem Befehl chmod angeben und somit festlegen, welchen Teil der Zugriffssteuerungsliste Sie ändern möchten. Sie können beispielsweise Index-ID 3 als A3 im Befehl chmod angeben (siehe folgendes Beispiel):


chmod A3=user:venkman:read_acl:allow filename

Zugriffssteuerungslisten-Eintragstypen, die Eigentümer, Gruppen und andere Parameter in Zugriffssteuerungslisten darstellen, sind in der folgenden Tabelle beschrieben.

Tabelle 8–1 Zugriffssteuerungslisten- Eintragstypen

Zugriffssteuerungslisten- Eintragstyp 

Beschreibung 

owner@

Das Zugriffsrecht, das dem Eigentümer des Objekts gewährt wird. 

group@

Das Zugriffsrecht, das der Eigentümergruppe des Objekts gewährt wird. 

everyone@

Der Zugriff, der allen anderen Benutzern oder Gruppen gewährt wird, denen keine anderen Zugriffssteuerungslisteneinträge entsprechen. 

user

Das Zugriffsrecht, das einem zusätzlichen (und durch den Benutzernamen anzugebenden) Benutzer des Objekts gewährt wird. Dieser Eintrag muss die Zugriffssteuerungslisteneintrags-ID enthalten, die wiederum den betreffenden Benutzernamen oder die Benutzer-ID enthält. Wenn es sich bei diesem Wert um keine gültige nummerische Benutzer-ID oder keinen Benutzername handelt, ist der Zugriffssteuerungslisten-Eintragstyp ungültig.

group

Das Zugriffsrecht, das einer zusätzlichen (und durch den Gruppennamen anzugebenden) Benutzergruppe des Objekts gewährt wird. Dieser Eintrag muss die Zugriffssteuerungslisteneintrags-ID enthalten, die wiederum den betreffenden Gruppennamen oder die Gruppen-ID enthält. Wenn es sich bei diesem Wert um keine gültige nummerische Gruppen-ID oder keinen Gruppenname handelt, ist der Zugriffssteuerungslisten-Eintragstyp ungültig.

In der folgenden Tabelle sind die Zugriffsrechte für Zugriffssteuerungslisten beschrieben.

Tabelle 8–2 Zugriffssteuerungslisten-Zugriffsrechte

Zugriffsrecht 

Kurzform 

Beschreibung 

add_file

w

Berechtigung zum Hinzufügen neuer Dateien zu einem Verzeichnis. 

add_subdirectory

p

Berechtigung zum Erstellen von Unterverzeichnissen in einem Verzeichnis. 

append_data

p

Platzhalter. Gegenwärtig nicht implementiert. 

delete

d

Berechtigung zum Löschen einer Datei. 

delete_child

D

Berechtigung zum Löschen einer Datei oder eines Verzeichnisses in einem Verzeichnis. 

execute

x

Berechtigung zum Ausführen einer Datei bzw. Durchsuchen eines Verzeichnisses. 

list_directory

r

Berechtigung zum Auflisten des Inhalts eines Verzeichnisses. 

read_acl

c

Berechtigung zum Lesen der Zugriffssteuerungsliste (ls).

read_attributes

a

Berechtigung zum Lesen grundlegender (nicht zu Zugriffssteuerungslisten gehörender) Attribute einer Datei. Grundlegende Attribute sind Attribute auf der stat-Ebene. Durch Setzen dieses Zugriffsmaskenbits kann eine Entität ls(1) und stat(2) ausführen.

read_data

r

Berechtigung zum Lesen des Inhalts einer a Datei. 

read_xattr

R

Berechtigung zum Lesen der erweiterten Attribute einer Datei bzw. Durchsuchen des Verzeichnisses erweiterter Dateiattribute. 

synchronize

s

Platzhalter. Gegenwärtig nicht implementiert. 

write_xattr

V

Berechtigung zum Erstellen erweiterter Attribute bzw. Schreiben in das Verzeichnis erweiterter Attribute. 

Durch Gewähren dieses Zugriffsrechtes kann ein Benutzer für eine Datei ein Verzeichnis erweiterter Attribute erstellen. Die Zugriffsrechte der Attributdatei legen das Zugriffsrecht des Benutzers auf das Attribut fest. 

write_data

w

Berechtigung zum Ändern oder Ersetzens des Inhalts einer Datei. 

write_attributes

I

Berechtigung zum Setzen der Zeitmarken einer Datei bzw. eines Verzeichnisses auf einen beliebigen Wert. 

write_acl

A

Berechtigung zum Schreiben bzw. Ändern der Zugriffsteuerungsliste mithilfe des Befehls chmod.

write_owner

o

Berechtigung zum Ändern des Eigentümers bzw. der Gruppe einer Datei bzw. Berechtigung zum Ausführen der Befehle chown oder chgrp für die betreffende Datei.

Berechtigung zum Übernehmen der Eigentümerschaft einer Datei bzw. zum Ändern der ihrer Gruppe, zu der der betreffende Benutzer gehört. Wenn Sie die Benutzer- bzw. Gruppeneigentümerschaft auf einen beliebigen Benutzer bzw. eine beliebige Gruppe setzen wollen, ist das Zugriffsrecht PRIV_FILE_CHOWN erforderlich.

Vererbung von Zugriffssteuerungslisten

Der Zweck der Vererbung von Zugriffssteuerungslisten besteht darin, dass neu erstellte Dateien bzw. Verzeichnisse die vorgesehenen Zugriffssteuerungslisten erben, ohne dass die vorhandenen Zugriffsrechte des übergeordneten Verzeichnisses ignoriert werden.

Standardmäßig werden Zugriffssteuerungslisten nicht weitergegeben. Wenn Sie für ein Verzeichnis eine komplexe Zugriffssteuerungsliste setzen, wird diese nicht an untergeordnete Verzeichnisse vererbt. Sie müssen die Vererbung einer Zugriffssteuerungsliste für Dateien bzw. Verzeichnisse explizit angeben.

In der folgenden Tabelle sind die optionalen Vererbungsflags aufgeführt.

Tabelle 8–3 Vererbungsflags von Zugriffssteuerungslisten

Vererbungsflag 

Kurzform 

Beschreibung 

file_inherit

f

Die Zugriffssteuerungsliste wird vom übergeordneten Verzeichnis nur an die Dateien des betreffenden Verzeichnisses vererbt. 

dir_inherit

d

Die Zugriffssteuerungsliste wird vom übergeordneten Verzeichnis nur an die Unterverzeichnisse des betreffenden Verzeichnisses vererbt. 

inherit_only

i

Die Zugriffssteuerungsliste wird vom übergeordneten Verzeichnis vererbt, gilt jedoch nur für neu erstellte Dateien bzw. Unterverzeichnisse, aber nicht für das betreffende Verzeichnis selbst. Für dieses Flag ist das Flag file_inherit bzw. dir_inherit (oder beide) erforderlich. Diese legen fest, was vererbt wird.

no_propagate

n

Die Zugriffssteuerungsliste wird vom übergeordneten Verzeichnis an die erste Hierarchieebene des betreffenden Verzeichnisses und nicht an untergeordnete Ebenen vererbt. Für dieses Flag ist das Flag file_inherit bzw. dir_inherit (oder beide) erforderlich. Diese legen fest, was vererbt wird.

-

entf. 

Zugriff nicht gewährt.  

Darüber hinaus können Sie mithilfe der Dateisystemeigenschaft aclinherit für das Dateisystem mehr oder weniger strenge Vererbungsrichtlinien für Zugriffssteuerungslisten festlegen. Weitere Informationen finden Sie im folgenden Abschnitt.

Eigenschaften von Zugriffssteuerungslisten

Das ZFS-Dateisystem enthält zwei Eigenschaften für Zugriffssteuerungslisten.