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
9. Delegierte Oracle Solaris ZFS-Administration
Delegierte ZFS-Administration im Überblick
Deaktivieren von delegierten ZFS-Zugriffsrechten
Delegieren von ZFS-Zugriffsrechten
Delegieren von ZFS-Zugriffsrechten (zfs allow)
Löschen von delegierten ZFS-Zugriffsrechten (zfs unallow)
Anzeigen von delegierten ZFS-Zugriffsrechten (Beispiele)
Löschen von delegierten ZFS-Zugriffsrechten (Beispiele)
10. Fortgeschrittene Oracle Solaris ZFS-Themen
11. Problembehebung und Pool-Wiederherstellung in Oracle Solaris ZFS
Beispiel 9-1 Delegieren von Zugriffsrechten an einzelne Benutzer
Wenn Sie die Zugriffsrechte create und mount an einen einzelnen Benutzer delegieren, müssen Sie sich vergewissern, dass dieser über die erforderlichen Zugriffsrechte für den zugrunde liegenden Einhängepunkt verfügt.
Um beispielsweise an den Benutzer mark die Zugriffsrechte create und mount für das Dateisystem tank zu delegieren, legen Sie zuerst die Zugriffsrechte fest:
# chmod A+user:mark:add_subdirectory:fd:allow /tank/home
Anschließend delegieren Sie mit dem Befehl zfs allow die Zugriffsrechte create, destroy und mount. Beispiel:
# zfs allow mark create,destroy,mount tank/home
Jetzt kann der Benutzer mark im Dateisystem tank eigene Dateisysteme anlegen. Beispiel:
# su mark mark$ zfs create tank/home/mark mark$ ^D # su lp $ zfs create tank/lp cannot create 'tank/lp': permission denied
Beispiel 9-2 Delegieren der Zugriffsrechte create und destroy an Gruppen
Das folgende Beispiel veranschaulicht, wie ein Dateisystem eingerichtet wird, damit jedes Mitglied der Gruppe staff Dateisysteme unter tank erstellen und einhängen sowie eigene Dateisysteme löschen kann. Die Gruppenmitglieder von staff können jedoch nicht die Dateisysteme anderer Gruppenmitglieder löschen.
# zfs allow staff create,mount tank/home # zfs allow -c create,destroy tank/home # zfs allow tank/home ---- Permissions on tank/home ---------------------------------------- Create time permissions: create,destroy Local+Descendent permissions: group staff create,mount # su cindy cindy% zfs create tank/home/cindy cindy% exit # su mark mark% zfs create tank/home/mark/data mark% exit cindy% zfs destroy tank/home/mark/data cannot destroy 'tank/home/mark/data': permission denied
Beispiel 9-3 Delegieren von Zugriffsrechten auf der richtigen Ebene der Dateisystemhierarchie
Stellen Sie sicher, dass Sie auf der richtigen Ebene der Dateisystemhierarchie die Zugriffsrechte an die Benutzer delegieren. So werden beispielsweise an den Benutzer mark die Zugriffsrechte create, destroy und mount für das lokale und für die untergeordneten Dateisysteme delegiert. An den Benutzer mark werden lokale Zugriffsrechte zum Erstellen von Schnappschüssen des Dateisystems tank/home, nicht aber des eigenen Dateisystems, delegiert. Das Zugriffsrecht snapshot wurde also nicht auf der richtigen Ebene der Dateisystemhierarchie an ihn delegiert.
# zfs allow -l mark snapshot tank/home # zfs allow tank/home ---- Permissions on tank/home ---------------------------------------- Create time permissions: create,destroy Local permissions: user mark snapshot Local+Descendent permissions: group staff create,mount # su mark mark$ zfs snapshot tank/home@snap1 mark$ zfs snapshot tank/home/mark@snap1 cannot create snapshot 'tank/home/mark@snap1': permission denied
Um an den Benutzer mark Zugriffsrechte für die untergeordnete Ebene zu delegieren, verwenden Sie den Befehl zfs allow mit der Option -d. Beispiel:
# zfs unallow -l mark snapshot tank/home # zfs allow -d mark snapshot tank/home # zfs allow tank/home ---- Permissions on tank/home ---------------------------------------- Create time permissions: create,destroy Descendent permissions: user mark snapshot Local+Descendent permissions: group staff create,mount # su mark $ zfs snapshot tank/home@snap2 cannot create snapshot 'tank/home@snap2': permission denied $ zfs snapshot tank/home/mark@snappy
Jetzt kann der Benutzer mark nur Schnappschüsse unterhalb der Dateisystemebene tank/home erstellen.
Beispiel 9-4 Definieren und Anwenden komplexer delegierter Zugriffsrechte
Es können spezifische Zugriffsrechte an Benutzer oder Gruppen delegiert werden. So werden beispielsweise mit dem folgenden zfs allow-Befehl spezifische Zugriffsrechte an die Gruppe staff delegiert. Darüber hinaus werden die Zugriffsrechte destroy und snapshot delegiert, sobald tank/home-Dateisysteme erstellt werden.
# zfs allow staff create,mount tank/home # zfs allow -c destroy,snapshot tank/home # zfs allow tank/home ---- Permissions on tank/home ---------------------------------------- Create time permissions: create,destroy,snapshot Local+Descendent permissions: group staff create,mount
Da Benutzer mark ein Mitglied der Gruppe staff ist, kann er in tank/home Dateisysteme erstellen. Zusätzlich kann Benutzer mark Schnappschüsse von tank/home/mark2 erstellen, da er über die dafür erforderlichen Zugriffsrechte verfügt. Beispiel:
# su mark $ zfs create tank/home/mark2 $ zfs allow tank/home/mark2 ---- Permissions on tank/home/mark2 ---------------------------------- Local permissions: user mark create,destroy,snapshot ---- Permissions on tank/home ---------------------------------------- Create time permissions: create,destroy,snapshot Local+Descendent permissions: group staff create,mount
Benutzer mark kann jedoch keine Schnappschüsse in tank/home/mark erstellen, da ihm die Zugriffsrechte hierfür fehlen. Beispiel:
$ zfs snapshot tank/home/mark2@snap1 $ zfs snapshot tank/home/mark@snap1 cannot create snapshot 'tank/home/mark@snap1': permission denied
In diesem Beispiel verfügt der Benutzer mark über das Zugriffsrecht create in seinem Home-Verzeichnis. Er kann also Schnappschüsse erstellen. Dies kann sich bei Dateisystemen als hilfreich erweisen, die per NFS eingehängt werden.
Beispiel 9-5 Definieren und Anwenden von delegierten Zugriffsrechtsätzen für ZFS
Das folgende Beispiel zeigt, wie der Zugriffsrechtsatz @myset erstellt wird und dieser sowie das Zugriffsrecht rename an die Gruppe staff für das Dateisystem tank delegiert werden. Der Benutzer cindy, Mitglied der Gruppe staff, verfügt über die Berechtigung zum Erstellen von Dateisystemen in tank. Benutzer lp verfügt jedoch nicht über die Berechtigung zum Erstellen von Dateisystemen in tank.
# zfs allow -s @myset create,destroy,mount,snapshot,promote,clone,readonly tank # zfs allow tank ---- Permissions on tank --------------------------------------------- Permission sets: @myset clone,create,destroy,mount,promote,readonly,snapshot # zfs allow staff @myset,rename tank # zfs allow tank ---- Permissions on tank --------------------------------------------- Permission sets: @myset clone,create,destroy,mount,promote,readonly,snapshot Local+Descendent permissions: group staff @myset,rename # chmod A+group:staff:add_subdirectory:fd:allow tank # su cindy cindy% zfs create tank/data cindy% zfs allow tank ---- Permissions on tank --------------------------------------------- Permission sets: @myset clone,create,destroy,mount,promote,readonly,snapshot Local+Descendent permissions: group staff @myset,rename cindy% ls -l /tank total 15 drwxr-xr-x 2 cindy staff 2 Jun 24 10:55 data cindy% exit # su lp $ zfs create tank/lp cannot create 'tank/lp': permission denied