Houve alguns problemas com minha configuração:
- A ACL criada pelo usuário local não tinha
d
eD
sinalizadores definidos, o que significa que não pode ser excluída / movida, embora eu ainda não entenda por que o usuário local conseguiu excluí-la quando o SMB não conseguiu. - As ACLs não foram definidas de forma que as ACLs fossem herdadas, ou seja, as
fd
flags.
A propriedade - ZFS
aclinherit
deve ser definida comopassthrough
em vez derestricted
.
por exemplo:
# chmod A=owner@:rwxpdDaARWcCos:fd:allow /z/shared
# zfs set aclinherit=passthrough z/shared
Depois de criar arquivos do SMB e localmente:
$ ls -V
total 2
-rwx------+ 1 nobody nobody 0 Dec 8 00:17 local
owner@:rwxpdDaARWcCos:------I:allow
-rwx------+ 1 nobody nobody 0 Dec 8 00:17 smb
owner@:rwxpdDaARWcCos:------I:allow
Observe o I
, que mostra que a ACL é herdada.
As configurações do ZFS são descritas no guia de administração do ZFS :
restricted – For new objects, the write_owner and write_acl permissions are removed when an ACL entry is inherited.
passthrough – When property value is set to passthrough, files are created with a mode determined by the inheritable ACEs. If no inheritable ACEs exist that affect the mode, then the mode is set in accordance to the requested mode from the application.
Agora, o cliente SMB pode excluir arquivos criados localmente.