Lorsque vous déléguez les autorisations create et mount à un utilisateur individuel, vous devez vous assurer qu'il dispose d'un droit d'accès au de point de montage sous-jacent.
Par exemple, pour déléguer à l'utilisateur mark les autorisations create et mount sur le système de fichiers tank, définissez au préalable ces autorisations :
# chmod A+user:mark:add_subdirectory:fd:allow /tank/home
Utilisez ensuite la commande zfs allow pour déléguer les autorisations create, destroy et mount. Par exemple :
# zfs allow mark create,destroy,mount tank/home
L'utilisateur mark peut dorénavant créer ses propres systèmes de fichiers dans le système de fichiers tank/home. Par exemple :
# su mark mark$ zfs create tank/home/mark mark$ ^D # su lp $ zfs create tank/home/lp cannot create 'tank/home/lp': permission deniedExemple 8-2 Délégation des autorisations de création (create) et de destruction (destroy) à un groupe
L'exemple suivant décrit comment configurer un système de fichiers de manière à ce que tout membre du groupe staff puisse créer et monter des systèmes de fichiers dans le système de fichiers tank/home, et détruire ses propres systèmes de fichiers. Toutefois, les membres du groupe staff ne sont pas autorisés à détruire les systèmes de fichiers des autres utilisateurs.
# 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/files 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 deniedExemple 8-3 Délégation d'autorisations au niveau approprié d'un système de fichiers
Assurez-vous de déléguer les autorisations aux utilisateurs au niveau approprié du système de fichiers. Par exemple, l'utilisateur mark est autorisé àcreate, destroy et mount les autorisations pour les systèmes de fichiers locaux et descendants. L'autorisation locale de créer un instantané du système de fichiers tank/home a été délégué à l'utilisateur mark, mais pas celle de créer un instantané de son propre système de fichiers. L'autorisation snapshot ne lui a donc pas été déléguée au niveau approprié du système de fichiers.
# 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
Pour déléguer à l'utilisateur mark cette autorisation au niveau du système de fichiers descendants, utilisez l'option zfs allow –d. Par exemple :
# 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
L'utilisateur mark ne peut maintenant créer un instantané qu'à un niveau inférieur du système de fichiers tank/home.
Exemple 8-4 Définition et utilisation d'autorisations déléguées complexesVous pouvez déléguer des autorisations spécifiques à des utilisateurs ou des groupes. Par exemple, la commande zfs allow suivante délègue des autorisations spécifiques au groupe staff. En outre, les autorisations destroy et snapshot sont déléguées après la création de systèmes de fichiers tank/home.
# 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
Etant donné que l'utilisateur mark est membre du groupe staff, il peut créer des systèmes de fichiers dans tank/home. En outre, l'utilisateur mark peut créer un instantané de tank/home/mark2 parce qu'il dispose des autorisations spécifiques pour le faire. Par exemple :
# 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
L'utilisateur mark ne peut pas créer d'instantané dans tank/home/mark parce qu'il ne dispose pas des autorisations spécifiques pour le faire. Par exemple :
$ zfs snapshot tank/home/mark@snap1 cannot create snapshot 'tank/home/mark@snap1': permission denied
Dans cet exemple, l'utilisateur mark possède l'autorisation create dans son répertoire d'accueil, ce qui signifie qu'il peut créer des instantanés. Ce scénario s'avère utile lorsque votre système de fichiers est monté sur un système NFS.
$ cd /tank/home/mark2 $ ls $ cd .zfs $ ls shares snapshot $ cd snapshot $ ls -l total 3 drwxr-xr-x 2 mark staff 2 Sep 27 15:55 snap1 $ pwd /tank/home/mark2/.zfs/snapshot $ mkdir snap2 $ zfs list # zfs list -r tank/home NAME USED AVAIL REFER MOUNTPOINT tank/home/mark 63K 62.3G 32K /tank/home/mark tank/home/mark2 49K 62.3G 31K /tank/home/mark2 tank/home/mark2@snap1 18K - 31K - tank/home/mark2@snap2 0 - 31K - $ ls snap1 snap2 $ rmdir snap2 $ ls snap1Exemple 8-5 Définition et utilisation d'un jeu d'autorisations délégué ZFS
L'exemple suivant décrit comment créer un jeu d'autorisations intitulé @myset et déléguer ce jeu d'autorisations ainsi que l'autorisation rename au groupe staff pour le système de fichiers tank. L'utilisateur cindy, membre du groupe staff, a l'autorisation de créer un système de fichiers dans tank. Par contre, l'utilisateur lp ne dispose pas de cette autorisation de création de systèmes de fichiers dans 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