Como posso fazer o Windows modificar corretamente as ACLs do CIFS / ZFS?

0

Eu tenho um sistema FreeNAS (FreeBSD) com um compartilhamento CIFS (chamado de "biblioteca") apoiado por um sistema de arquivos ZFS. O compartilhamento é configurado de acordo com a GUI do FreeNAS para usar as ACLs "Windows / Mac" que acredito serem as ACLs do 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 "DOMAIN \ administrator" e "DOMAIN \ Domain Admins" e "Read & execute" para "Everyone" herdado da raiz do compartilhamento. O Windows reconhece o proprietário como o "Administrador" corretamente.

Estou tendo dois problemas que acredito estarem relacionados.

Primeiramente, se eu modificar ou criar uma ACE em um objeto existente (arquivo ou diretório), o Windows substitui a owner@ ACE por group:DOMAIN\administrator e, no caso de adição, ela cria um grupo ACE para group:DOMAIN\joe o usuário. Eu não me importo muito com o fato de que um usuário é um grupo (contanto que funcione), mas substituir o proprietário ACE é uma dor, porque agora, se eu alterar o dono do objeto, o ACE ainda existirá para o anterior proprietário.

O segundo incômodo é quando se cria um novo objeto que a ACL se parece com isso:

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, ele não manteve o proprietário ou o grupo do diretório pai. Existe uma maneira de tê-lo criado com as propriedades do diretório de contenção?

Olhando para o setfacl manpage indica:

 -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 do NFSv4 não suportam ACEs padrão, o que parece ser o que eu preciso para corrigir o meu segundo problema. Alguém sabe se isso está correto?

    
por Styne666 13.08.2014 / 10:49

1 resposta

2

Então, eu não lidei muito com nada disso, e posso estar seriamente errado, mas aqui estão alguns exemplos que podem explicar isso:

  • As ACLs do NFSv4 são semelhantes, mas não são semelhantes às ACLs do Windows / CIFS / NTFS.

    Por exemplo, o formato Windows ACL não distingue entre SIDs 'usuário' ou 'grupo' ou 'especial'. Como o NAS não sabe quais contas seu sistema Windows possui, ele não pode determinar quais SIDs são usuários e quais são os grupos - ele precisa adivinhar.

  • No entanto, embora as ACLs do NFSv4 não suportem 'ACEs padrão do estilo POSIX', elas fazem suportam as ACEs 'herdáveis' no estilo Windows / CIFS; ou seja, cada entrada pode ser herdada ou não.

    No FreeBSD getfacl , você pode ver o f e d flags que correspondem a "herdáveis por arquivos" e "herdáveis por diretórios".

    Há também um sinalizador "herdar somente" i , que é praticamente um equivalente exato a ACEs 'padrão' em ACLs POSIX - ou seja, a ACE é herdada apenas, mas não é usada para o próprio diretório .

  • Ao criar um arquivo, ele é sempre de propriedade do usuário que o criou. Não é hereditário.

    Se o servidor CIFS estivesse executando o Windows Server, ele teria uma opção para tornar o grupo "Administradores" interno 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 tenha 'propriedade do grupo').

por 13.08.2014 / 13:23