Isso porque force user
, force group
, create mask
e directory mask
impõem o uso de permissões de estilo unix tradicionais que não podem ser combinadas com a herança de ACLs.
Suas ACLs padrão devem residir no nível de sistema de arquivos da pasta, não no próprio compartilhamento samba, para que a herança funcione, mas esteja ciente de que as permissões contraditórias sempre negarão o acesso, por exemplo. quando um usuário tem permissão como usuário, mas não como grupo, o samba impedirá o acesso ao usar ACLs (o que me parece um bug), por exemplo: o usuário nobody é membro do nogroup então, as ACLs precisam permitir que ninguém & permissão de gravação do nogroup, caso contrário, o acesso de gravação seja negado. Apenas o samba se comporta dessa maneira!
Uma maneira possível de criar uma pasta com permissões padrão herdadas pode ser:
me@myHost:/shares$ getfacl myShare/
# file: myShare/
# owner: JohnDoe
# group: domain0users
user::rwx
group::rwx #effective:r-x
group:domain0users:rwx #effective:r-x
group:domain0admins:rwx #effective:r-x
mask::rwx
other::r-x
default:user::rwx
default:group::rwx
default:group:domain0users:rwx
default:group:domain0admins:rwx
default:mask::rwx
default:other::r-x
A seção com os valores default:*
é a parte interessante da herança porque qualquer novo arquivo ou pasta os obterá quando criados dentro da pasta myShare . Veja a página man setfacls para detalhes de configuração dos valores default: em um arquivo ou pasta. Agora, o problema de usar create mask
ou directory mask
em uma pasta com o conjunto padrão: ACLs é que o samba substituirá esses valores padrão e, na maioria dos casos, essas instruções máscara são úteis apenas enquanto você deseja a pasta inteira e seus arquivos contendo apenas um único proprietário e grupo. As ACLs são mais difíceis de configurar, mas oferecem muito mais flexibilidade, como de costume, nas máquinas com Windows.
Para que o samba honre esses default:*::
permissions inherit acls
precisa ser definido em [global]
section:
[global]
; Important if ACLs (eg: setfacl) contain default entries
; which samba honors only if this is set to 'yes'.
inherit acls = yes
[...]
[myShare]
comment = Put your files here
path = /shares/myShare
writeable = yes
Isso permitiria um compartilhamento em que todos pudessem escrever para o compartilhamento ... mas (! )
isso não significa necessariamente que é permitido no nível do sistema de arquivos, porque a pasta myShare permite apenas usuários de domínio . De qualquer forma, para o paranóico, as permissões de compartilhamento podem ser limitadas, permitindo apenas grupos específicos:
write list = @"domain users"
que implica writeable=yes
, mas apenas para grupos definidos em lista de gravação . Certifique-se de que as permissões de compartilhamento e pasta estejam livres de contradições, por exemplo:
write list = @"other group"
permitiria que outro grupo escrevesse para o compartilhamento, mas como as pastas myShare permitem que somente usuários de domínio escrevam, ele falhará obviamente.