Lorsque vous accordez les droits create et mount à un utilisateur individuel, vous devez vous assurer que cet utilisateur dispose de droits sur le point de montage sous-jacent.
Pour accorder par exemple à l'utilisateur marks les droits create et mount sur tank, définissez au préalable ces droits :
# chmod A+user:marks:add_subdirectory:fd:allow /tank |
Utilisez ensuite la commande zfs allow pour accorder les droits create, destroy et mount. Exemple :
# zfs allow marks create,destroy,mount tank |
L'utilisateur marks peut dorénavant créer ses propres systèmes de fichiers dans le système de fichiers tank. Exemple :
# su marks marks$ zfs create tank/marks marks$ ^D # su lp $ zfs create tank/lp cannot create 'tank/lp': permission denied |
L'exemple suivant illustre la configuration d'un système de fichiers pour que tout membre du groupe staff puisse créer et monter des systèmes de fichiers dans le système de fichiers tank, ainsi que 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 # zfs allow -c create,destroy tank # zfs allow tank ------------------------------------------------------------- Create time permissions on (tank) create,destroy Local+Descendent permissions on (tank) group staff create,mount ------------------------------------------------------------- # su cindys cindys% zfs create tank/cindys cindys% exit # su marks marks% zfs create tank/marks/data marks% exit cindys% zfs destroy tank/marks/data cannot destroy 'tank/mark': permission denied |
Assurez-vous d'accorder les droits aux utilisateurs au niveau approprié du système de fichiers. Par exemple, les droits create, destroy et mount pour les systèmes de fichiers locaux et descendants sont accordés à l'utilisateur marks. Le droit local de prendre un instantané du système de fichiers tank a été accordé à l'utilisateur marks, mais pas celui de prendre un instantané de son propre système de fichiers. Le droit snapshot ne lui donc a pas été accordé au niveau approprié du système de fichiers.
# zfs allow -l marks snapshot tank # zfs allow tank ------------------------------------------------------------- Local permissions on (tank) user marks snapshot Local+Descendent permissions on (tank) user marks create,destroy,mount ------------------------------------------------------------- # su marks marks$ zfs snapshot tank/@snap1 marks$ zfs snapshot tank/marks@snap1 cannot create snapshot 'mark/marks@snap1': permission denied |
Pour accorder à l'utilisateur marks ce droit au niveau des descendants, utilisez l'option zfs allow - d. Exemple :
# zfs unallow -l marks snapshot tank # zfs allow -d marks snapshot tank # zfs allow tank ------------------------------------------------------------- Descendent permissions on (tank) user marks snapshot Local+Descendent permissions on (tank) user marks create,destroy,mount ------------------------------------------------------------- # su marks $ zfs snapshot tank@snap2 cannot create snapshot 'tank@snap2': permission denied $ zfs snapshot tank/marks@snappy |
L'utilisateur marks ne peut maintenant créer un instantané qu'à un niveau inférieur à tank.
Vous pouvez accorder des droits spécifiques à des utilisateurs ou des groupes. Par exemple, la commande zfs allow suivante accorde des droits spécifiques au groupe staff. En outre, les droits destroy et snapshot sont accordés après la création de systèmes de fichiers tank.
# zfs allow staff create,mount tank # zfs allow -c destroy,snapshot tank # zfs allow tank ------------------------------------------------------------- Create time permissions on (tank) destroy,snapshot Local+Descendent permissions on (tank) group staff create,mount ------------------------------------------------------------- |
Étant donné que l'utilisateur marks est membre du groupe staff, il peut créer des systèmes de fichiers dans tank. En outre, l'utilisateur marks peut créer un instantané de tank/marks2 parce qu'il dispose des droits spécifiques pour le faire. Exemple :
# su marks $ zfs create tank/marks2 $ zfs allow tank/marks2 ------------------------------------------------------------- Local permissions on (tank/marks2) user marks destroy,snapshot ------------------------------------------------------------- Create time permissions on (tank) destroy,snapshot Local+Descendent permissions on (tank) group staff create everyone mount ------------------------------------------------------------- |
Il ne peut par contre pas créer d'instantané dans tank/marks parce qu'il ne dispose pas des droits spécifiques pour le faire. Exemple :
$ zfs snapshot tank/marks2@snap1 $ zfs snapshot tank/marks@snappp cannot create snapshot 'tank/marks@snappp': permission denied |
Si vous disposez des droits create dans votre répertoire personnel, vous pouvez créer vos propres répertoires d'instantanés. Ce scénario s'avère utile lorsque votre système de fichiers est monté sur un système NFS. Exemple :
$ cd /tank/marks2 $ ls $ cd .zfs $ ls snapshot $ cd snapshot $ ls -l total 3 drwxr-xr-x 2 marks staff 2 Dec 15 13:53 snap1 $ pwd /tank/marks2/.zfs/snapshot $ mkdir snap2 $ zfs list NAME USED AVAIL REFER MOUNTPOINT tank 264K 33.2G 33.5K /tank tank/marks 24.5K 33.2G 24.5K /tank/marks tank/marks2 46K 33.2G 24.5K /tank/marks2 tank/marks2@snap1 21.5K - 24.5K - tank/marks2@snap2 0 - 24.5K - $ ls snap1 snap2 $ rmdir snap2 $ ls snap1 |
L'exemple suivant illustre la création d'un jeu de droits intitulé @myset et, accorde ce jeu de droits ainsi que le droit de renommage au groupe staff pour le système de fichiers tank. L'utilisateur cindys, membre du groupe staff, a le droit de créer un système de fichiers dans tank. Par contre, l'utilisateur lp ne dispose pas de ce droit 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 ------------------------------------------------------------- Permission sets on (tank) @myset clone,create,destroy,mount,promote,readonly,snapshot ------------------------------------------------------------- # zfs allow staff @myset,rename tank # zfs allow tank ------------------------------------------------------------- Permission sets on (tank) @myset clone,create,destroy,mount,promote,readonly,snapshot Local+Descendent permissions on (tank) group staff @myset,rename # chmod A+group:staff:add_subdirectory:fd:allow tank # su cindys cindys% zfs create tank/data Cindys% zfs allow tank ------------------------------------------------------------- Permission sets on (tank) @myset clone,create,destroy,mount,promote,readonly,snapshot Local+Descendent permissions on (tank) group staff @myset,rename ------------------------------------------------------------- cindys% ls -l /tank total 15 drwxr-xr-x 2 cindys staff 2 Aug 8 14:10 data cindys% exit # su lp $ zfs create tank/lp cannot create 'tank/lp': permission denied |