Eu tenho um sistema FreeNAS (FreeBSD) com um compartilhamento CIFS (chamado "biblioteca") apoiado por um sistema de arquivos ZFS. O compartilhamento é configurado de acordo com a GUI do FreeNAS para usar ACLs "Windows/Mac", que sou levado a acreditar que significam ACLs NFSv4.
É assim que quero que as ACLs básicas sejam:
nas# getfacl /mnt/big/library/test
# file: /mnt/big/library/test
# owner: DOMAIN\administrator
# group: DOMAIN\domain admins
owner@:rwxpDdaARWcCo-:fd----:allow
group@:rwxpDdaARWcCo-:fd----:allow
everyone@:r-x---a-R-c---:fd----:allow
Que na GUI do Windows 7 aparece como "Controle total" para "DOMÍNIO\administrador" e "DOMÍNIO\Administradores de domínio" e "Ler e executar" para "Todos" herdados da raiz do compartilhamento. O Windows até reconhece o proprietário como o “Administrador” corretamente.
Estou tendo dois problemas que acredito que possam estar relacionados.
Primeiramente se eu modificar ou criar uma ACE em um objeto existente (arquivo ou diretório) o Windows substitui a owner@
ACE por uma para group:DOMAIN\administrator
e no caso de adicionar, cria uma ACE de grupo para group:DOMAIN\joe
o usuário. Eu não me importo muito com o fato de ele pensar que um usuário é um grupo (desde que funcione), mas substituir o proprietário ACE é uma dor porque agora, se eu mudar o proprietário do objeto, o ACE ainda existirá para o anterior proprietário.
O segundo incômodo é que ao criar um novo objeto a ACL fica assim:
nas2# getfacl /mnt/big/library/test/New\ folder/
# file: /mnt/big/library/test/New folder/
# owner: DOMAIN\joe
# group: DOMAIN\domain users
owner@:rwxpDdaARWcCo-:fd----:allow
group@:rwxpDdaARWcCo-:fd----:allow
everyone@:r-x---a-R-c---:fd----:allow
Embora pareça ter herdado as ACEs corretamente, não manteve o proprietário ou grupo do diretório pai. Existe uma maneira de criá-lo com as propriedades do diretório que o contém?
Olhando para opágina de manual setfaclafirma:
-d The operations apply to the default ACL entries instead of access
ACL entries. Currently only directories may have default ACL's.
This option is not applicable to NFSv4 ACLs.
O que para mim implica que as ACLs NFSv4 não suportam ACEs padrão, o que parece ser o que preciso para corrigir meu segundo problema. Alguém sabe se isso está correto?
Responder1
Então, eu realmente não lidei muito com nada disso e posso estar seriamente errado, mas aqui estão algumas coisas que podem explicar isso:
As ACLs do NFSv4 são semelhantes, masnão exatamentecomo ACLs do Windows/CIFS/NTFS.
Por exemplo, o formato ACL do Windows não faz distinção entre SIDs de 'usuário' ou 'grupo' ou 'especiais'. Como o NAS não sabe quais contas o seu sistema Windows possui, ele não pode determinar quais SIDs são usuários e quais são grupos – ele precisa adivinhar.
No entanto, embora as ACLs NFSv4 não suportem 'ACEs padrão' no estilo POSIX, elasfazersuporta ACEs 'herdáveis' no estilo Windows/CIFS; isto é, cada entrada pode ser herdável ou não.
No FreeBSD
getfacl
, você pode ver os sinalizadoresf
ed
que correspondem a "herdável por arquivos" e "herdável por diretórios".Há também um sinalizador "somente herança"
i
, que é praticamente um equivalente exato às ACEs 'padrão' em ACLs POSIX - ou seja, a ACE é apenas herdada, mas não é usada para o diretório em si.Ao criar um arquivo, ésemprepropriedade do usuário que o criou. Não é herdável.
Se o servidor CIFS estivesse executando o Windows Server, ele teria a opção de tornar o grupo interno "Administradores" o proprietário do arquivo padrão (observe novamente como ele permite que o proprietário seja um usuário ou um grupo e não possui 'propriedade do grupo ').