Mit dem Befehl zfs allow können Sie Nicht-Root-Benutzern Zugriffsrechte für ZFS-Datasets gewähren. Dafür stehen folgende Möglichkeiten zur Verfügung:
Einzelne Zugriffsrechte können einem Benutzer, einer Gruppe oder global gewährt werden.
Gruppen von Einzelzugriffsrechten können in Form von Zugriffsrechtsätzen ebenfalls an Benutzer, Gruppen oder global vergeben werden.
Die Gewährung von Zugriffsrechten ist sowohl lokal für das jeweilige Dataset als auch allgemein an alle untergeordneten Objekte des aktuellen Datasets möglich.
In der folgenden Tabelle finden Sie eine Beschreibung der delegierbaren Vorgänge und aller abhängigen Zugriffsrechte, die zum Durchführen des delegierten Vorgangs erforderlich sind.
Zugriffsrecht (Unterbefehl) |
Beschreibung |
Abhängigkeiten |
---|---|---|
allow |
Die Fähigkeit, eigene Zugriffsrechte an andere Benutzer weiterzugeben. |
Das Zugriffsrecht, das gewährt werden soll, muss ebenfalls vorhanden sein. |
clone |
Die Fähigkeit, beliebige Snapshots des Datasets zu klonen. |
Die Fähigkeiten create und mount müssen im ursprünglichen Dateisystem vorhanden sein. |
create |
Die Fähigkeit, untergeordnete Datasets zu erstellen. |
Die Fähigkeit mount muss ebenfalls vorhanden sein. |
destroy |
Die Fähigkeit, ein Dataset zu löschen. |
Die Fähigkeit mount muss ebenfalls vorhanden sein. |
Einhängen |
Die Fähigkeit, ein Dataset ein- und auszuhängen und Geräteverknüpfungen für Volumes zu erstellen oder zu löschen. | |
promote |
Die Fähigkeit, einen Klon zu einem Dataset zu machen. |
Die Fähigkeiten mount und promote müssen im ursprünglichen Dateisystem vorhanden sein. |
receive |
Die Fähigkeit, mit dem Befehl zfs receive untergeordnete Dateisysteme zu erstellen. |
Die Fähigkeiten mount und create müssen ebenfalls vorhanden sein. |
rename |
Die Fähigkeit, ein Dataset umzubenennen. |
Die Fähigkeiten create und mount müssen im neuen übergeordneten Objekt vorhanden sein. |
rollback |
Die Fähigkeit, frühere Zustände aus einem Snapshot wiederherzustellen. | |
send |
Die Fähigkeit, einen Snapshot-Datenstrom zu senden. | |
share |
Die Fähigkeit, ein Dataset freizugeben und zu sperren. | |
snapshot |
Die Fähigkeit, Snapshots von Datasets herzustellen. |
Sie können die folgenden Zugriffsrechte erteilen, wobei diese auf Zugriff, Lesezugriff oder Bearbeitungszugriff beschränkt sein können:
groupquota
groupused
userprop
userquota
userused
Darüber hinaus können Nicht-Root-Benutzern folgende ZFS-Eigenschaften delegiert werden.
aclinherit
aclmode
atime
canmount
casesensitivity
checksum
compression
copies
devices
exec
mountpoint
nbmand
normalization
primarycache
quota
readonly
recordsize
refreservation
reservation
secondarycache
setuid
shareiscsi
sharenfs
sharesmb
snapdir
utf8only
version
volblocksize
volsize
vscan
xattr
zoned
Einige dieser Eigenschaften können nur bei der Erstellung des Datasets gesetzt werden. Eine Beschreibung dieser Eigenschaften finden Sie unter ZFS-Eigenschaften.
Die Syntax für zfs allow lautet:
zfs allow -[ldugecs] everyone|user|group[,...] perm|@setname,...] filesystem| volume |
Die folgende zfs allow-Syntax (fett gedruckt) gibt an, wem die Zugriffsrechte übertragen werden:
zfs allow [-uge]|user|group|everyone [,...] filesystem | volume |
Mehrere Entitäten können durch Komma getrennt als Liste angegeben werden. Wenn keine -uge-Option angegeben ist, werden die Argumente der Reihenfolge nach als das Schlüsselwort everyone, dann als Benutzername und schließlich als Gruppenname interpretiert. Um einen Benutzer oder eine Gruppe mit dem Namen „everyone “anzugeben, verwenden Sie die Option -u bzw. -g. Mit der Option -g geben Sie eine Gruppe mit demselben Namen eines Benutzers an. Die Option -c gewährt „Create-time“-Zugriffsrechte.
Die folgende zfs allow-Syntax (fett gedruckt) veranschaulicht, wie Zugriffsrechte und Zugriffsrechtsätze angegeben werden:
zfs allow [-s] ... perm|@setname [,...] filesystem | volume |
Mehrere Zugriffsrechte können durch Komma getrennt als Liste angegeben werden. Die Namen der Zugriffsrechte sind mit den ZFS-Unterbefehlen und -Eigenschaften identisch. Weitere Informationen finden Sie im vorherigen Abschnitt.
Mehrere Zugriffsrechte lassen sich in Zugriffsrechtsätzen zusammenfassen. Sie werden durch die Option -s gekennzeichnet. Zugriffsrechtsätze können von anderen zfs allow-Befehlen für das angegebene Dateisystem und dessen untergeordnete Objekte verwendet werden. Zugriffsrechtsätze werden dynamisch ausgewertet, sodass Änderungen an einem Satz unverzüglich aktualisiert werden. Für Zugriffsrechtsätze gelten dieselben Benennungsregeln wie für ZFS-Dateisysteme, wobei der Name allerdings mit dem Zeichen @ beginnen muss und nicht mehr als 64 Zeichen lang sein darf.
Die folgende zfs allow-Syntax (fett gedruckt) gibt an, wie die Zugriffsrechte übertragen werden:
zfs allow [-ld] ... ... filesystem | volume |
Die Option -l gibt an, dass das Zugriffsrecht für das angegebene Dataset, nicht aber für dessen untergeordnete Objekte gewährt wird, es sei denn, es wurde auch die Option -d angegeben. Die Option -d bedeutet, dass das Zugriffsrecht nicht für dieses Dataset, sondern für dessen untergeordnete Objekte gewährt wird, es sei denn, es wurde auch die Option -l angegeben. Wenn keine der Optionen -ld angegeben wird, gelten die Zugriffsrechte für das Dateisystem bzw. Volume und alle untergeordneten Objekte.
Mit dem Befehl zfs unallow können Sie zuvor erteilte Zugriffsrechte wieder löschen.
Gehen wir beispielsweise davon aus, dass Sie die Zugriffsrechte create, destroy, mount und snapshot wie folgt delegiert haben:
# zfs allow cindys create,destroy,mount,snapshot tank/cindys # zfs allow tank/cindys ------------------------------------------------------------- Local+Descendent permissions on (tank/cindys) user cindys create,destroy,mount,snapshot ------------------------------------------------------------- |
Zum Entziehen dieser Zugriffsrechte müssen Sie die folgende Syntax verwenden:
# zfs unallow cindys tank/cindys # zfs allow tank/cindys |