Ao fornecer as permissões create e mount a um usuário individual, você precisa ter certeza de que o usuário tem as permissões no ponto de montagem subjacente.
Por exemplo, para dar ao usuário marks as permissões create e mount em tank, defina primeiro as permissões:
# chmod A+user:marks:add_subdirectory:fd:allow /tank |
A seguir, use o comando zfs allow para conceder as permissões create, destroy e mount. Por exemplo:
# zfs allow marks create,destroy,mount tank |
Agora, o usuário marks pode criar seus próprios sistemas de arquivos no sistema de arquivos tank. Por exemplo:
# su marks marks$ zfs create tank/marks marks$ ^D # su lp $ zfs create tank/lp cannot create 'tank/lp': permission denied |
O exemplo abaixo mostra como configurar um sistema de arquivos para que todos no grupo staff possam criar e montar sistemas de arquivos no sistema de arquivos tank, bem como destruir seus próprios sistemas de arquivos. No entanto, os membros do grupo staff não podem destruir os sistemas de arquivos de outros.
# 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 |
Certifique-se de ter concedido a permissão aos usuários no nível correto do sistema de arquivos. Por exemplo, ao usuário marks são concedidas as permissões create, destroy e mount para os sistemas de arquivos locais e descendentes. Ao usuário marks é concedida a permissão local para realizar instantâneos do sistema de arquivos tank, mas não tem permissão para realizar instantâneos do seu próprio sistema de arquivos. Assim, ele não tem a permissãosnapshot no nível correto do sistema de arquivos.
# 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 |
Para conceder ao usuário marks a permissão no nível do descendente, use a opção zfs allow - d. Por exemplo:
# 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 |
Agora, o usuário marks pode somente criar um instantâneo abaixo do nível tank.
Você pode conceder permissões específicas a usuários ou grupos. Por exemplo, o comando zfs allow seguinte concede permissões específicas ao grupo staff. Além disso, as permissões destroy e snapshot são concedidas após a criação dos sistemas de arquivos 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 ------------------------------------------------------------- |
Por ser um membro do grupo staff, o usuário marks pode criar sistemas de arquivos tank. Além disso, o usuário marks pode criar um instantâneo de tank/marks2 porque possui as permissões específicas para isso. Por exemplo:
# 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 ------------------------------------------------------------- |
Porém, ele não pode criar um instantâneo em tank/marks porque não possui as permissões específicas para isso. Por exemplo:
$ zfs snapshot tank/marks2@snap1 $ zfs snapshot tank/marks@snappp cannot create snapshot 'tank/marks@snappp': permission denied |
Se tiver a permissão create no diretório de início, você pode criar seus próprios diretórios de instantâneos. Esta situação é útil quando o sistema de arquivos está montado em NFS. Por exemplo:
$ 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 |
O exemplo seguinte mostra como criar um conjunto de permissões @myset e conceder e renomear permissões no grupo staff para o sistema de arquivos tank. O usuário cindys, membro do grupo staff, possui a permissão para criar um sistema de arquivos em tank. No entanto, o usuário lp não possui a permissão para criar um sistema de arquivos em 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 |