Você pode usar o comando zfs allow a fim de conceder permissões em conjuntos de dados ZFS a usuários não-privilegiados das seguintes formas:
As permissões individuais podem ser concedidas a um usuário, grupo ou todos.
Os grupos de permissões individuais podem ser concedidos como um conjunto de permissões a um usuário, grupo ou todos.
As permissões podem ser concedidas tanto localmente apenas ao conjunto de dados atual quanto a todos os descendentes do conjunto de dados atual.
A tabela abaixo descreve as operações que podem ser delegadas e as permissões dependentes requeridas para realizar as operações delegadas.
Permissão (Subcomando) |
Descrição |
Dependências |
---|---|---|
allow |
A capacidade que você tem de conceder permissões a outro usuário. |
Também deve ter a permissão que está sendo concedida. |
clone |
A capacidade de clonar quaisquer instantâneos do conjunto de dados. |
Também deve possuir as capacidades create e mount no sistema de arquivos original. |
create |
A capacidade de criar conjuntos de dados descendentes. |
Também deve possuir a capacidade mount. |
destroy |
A capacidade de destruir um conjunto de dados. |
Também dever possuir a capacidade mount. |
mount |
A capacidade de montar e desmontar um conjunto de dados e de criar e destruir os links do dispositivo de volume. | |
promote |
A capacidade de promover um clone de um conjunto de dados. |
Também deve possuir as capacidades mount e promote no sistema de arquivos original. |
receive |
A capacidade de criar sistemas de arquivos descendentes com o comando zfs receive. |
Também deve possuir as capacidades mount e create. |
rename |
A capacidade de renomear um conjunto de dados. |
Também deve possuir as capacidades create e mount no novo pai. |
reversão |
A capacidade de reverter um instantâneo. | |
send |
A capacidade de enviar um fluxo de instantâneo. | |
share |
A capacidade de compartilhar e cancelar o compartilhamento de um conjunto de dados. | |
instantâneo |
A capacidade de obter um instantâneo de um conjunto de dados. |
Você pode delegar os seguintes conjuntos de permissões, mas a permissão pode estar limitada para a permissão de acesso, leitura ou alteração:
groupquota
groupused
userprop
userquota
userused
Além disso, você pode delegar as seguintes propriedades do ZFS a usuários não raiz:
aclinherit
aclmode
atime
canmount
casesensitivity
soma de verificação
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
Algumas destas propriedades podem ser definidas somente durante a criação do conjunto de dados. Para obter uma descrição destas propriedades, consulte Introduzindo as propriedades do ZFS.
A sintaxe de zfs allow é a seguinte:
zfs allow -[ldugecs] everyone|user|group[,...] perm|@setname,...] filesystem| volume |
A sintaxe de zfs allow abaixo (em negrito) identifica a quem as permissões são delegadas:
zfs allow [-uge]|user|group|everyone [,...] filesystem | volume |
Podem ser especificadas várias entidades em uma lista separada por vírgulas. Se não for especificada nenhuma opção -uge , o argumento é interpretado preferencialmente como a palavra-chave everyone, a seguir, como um nome de usuário e, por último, como um nome de grupo. Para especificar um usuário ou grupo denominado “everyone”, use a opção -u ou -g. Para especificar um grupo com o mesmo nome de um usuário, use a opção -g. A opção -c concede as permissões no momento da criação.
A sintaxe de zfs allow abaixo (em negrito) identifica como as permissões e os conjuntos de permissões são especificados:
zfs allow [-s] ... perm|@setname [,...] filesystem | volume |
Podem ser especificadas várias permissões em uma lista separada por vírgulas. Os nomes das permissões são os mesmo dos subcomandos e propriedades do ZFS. Para obter mais informações, consulte a seção anterior.
As permissões podem ser reunidas em conjuntos de permissões e são definidas pela opção -s. Os conjuntos de permissões podem ser usados por outros comandos zfs allow no sistema de arquivos especificado e seus descendentes. Os conjuntos de permissões são avaliados dinamicamente, de modo que as alterações no conjunto são atualizadas imediatamente. Os conjuntos de permissões seguem as mesmas convenções de nomeação dos sistemas de arquivos ZFS, mas o nome deve começar com o sinal de arroba (@) e não pode ter mais de 64 caracteres.
A sintaxe de zfs allow abaixo (em negrito) identifica como as permissões são delegadas:
zfs allow [-ld] ... ... filesystem | volume |
A opção -l indica que a permissão é concedida ao conjunto de dados especificado e não a seus descendentes, a menos que a opção -d também seja especificada. A opção -d indica que a permissão é concedida aos conjuntos de dados descendentes e não a este conjunto de dados, a menos que a opção -l também seja especificada. Se nenhuma das opções -ld forem especificadas, as permissões são concedidas ao sistema de arquivos ou volume e a todos os seus descendentes.
Você pode remover as permissões concedidas anteriormente com o comando zfs unallow.
Por exemplo, suponha que você delegou as permissões create, destroy, mount e snapshot como a seguir:
# 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 ------------------------------------------------------------- |
Para remover estas permissões, pode ser necessário usar uma sintaxe semelhante à seguinte:
# zfs unallow cindys tank/cindys # zfs allow tank/cindys |