NFS4 / ZFS: reverta a ACL para limpar / herdar o estado

2

Meu problema é idêntico ao esta questão do Windows , mas diz respeito ao NFS4 (Linux) e ao ZFS (OpenIndiana) subjacente que estamos usando. Temos esse ZFS compartilhado via NFS4 e CIFS para usuários do Linux e Windows, respectivamente. Seria bom que ambos os grupos de usuários se beneficiassem das ACLs, mas a única peça que faltava no quebra-cabeça é:

Cada usuário tem uma casa, onde define uma ACL herdada de nível superior. Ele pode mais tarde refinar as permissões para os arquivos / pastas contidos iterativamente. Com o tempo, às vezes, as permissões precisam ser generalizadas novamente para evitar o aumento da poluição das entradas da ACL. Você pode ajustar a ACL de cada arquivo, se necessário, para obter as permissões desejadas, mas isso anula o propósito das ACLs herdadas. Então, como uma ACL pode ser completamente limpa como na pergunta acima?

Não encontrei nada sobre como deve ser uma ACL herdada em branco. Este usecase simplesmente parece não existir. De fato, a manapage solaris chmod afirma claramente

A-                            Removes all ACEs  for  current
                              ACL   on   file  and  replaces
                              current ACL with new ACL  that
                              represents  only  the  current
                              mode of the file.

Ou seja. recebemos três novas entradas da ACL preenchidas com itens que representam os bits de permissão, o que é inútil para a limpeza.

Se eu tentar remover manualmente cada ACE, no último eu obtenho

chmod A0- <file>
chmod: ERROR: Can't remove all ACL entries from a file

Que por sinal me faz pensar: e porque não? Na verdade, eu realmente quero que toda a ACL específica do arquivo seja usada.

O mesmo vale para o linux, que enumera ACEs iniciando com 1 (!) e verbaliza seus problemas menos diligentemente

nfs4_setacl -x 1 <file>
Failed setxattr operation: Unknown error 524

Então, qual é a ideia por trás das ACLs no Solaris / NFS? Eles nunca podem ser limpos? Por que a opção de recursão dos comandos de configuração da ACL polui todas as crianças em vez de definir uma única ACL e fazer as crianças herdarem? Esta é realmente a intenção dos designers? Eu posso limpar as ACLs usando um cliente Windows perfeitamente bem, mas devo dizer aos usuários do Linux que eles têm que trocar o sistema operacional apenas para consolidar as permissões?

    
por Keiichi 11.01.2011 / 19:31

1 resposta

1

Com "chmod A- file", você está limpando completamente a ACL de um arquivo armazenado em um sistema de arquivos ZFS. O que ainda é exibido depois disso são ACLs "falsas" calculadas a partir das permissões de arquivo. Se você quiser removê-los também, pode executar o "arquivo chmod 0" além do comando anterior.

    
por 17.01.2011 / 16:40

Tags