NFS v4 Problemas de herança da ACL - sinalizador “i” definido, mas não desejado

4

O que eu estou tentando é adicionar um NFS v4 ACL que permite que diretórios, filhos e netos, bisnetos, diretórios e arquivos herdem um sinalizador de exclusão ('D') no linux. O sistema de arquivos subjacente no servidor é xfs e.

Eu não estou particularmente familiarizado com isso.

O servidor é o Centos 6.3, o cliente é o Centos 6.4.

Por minha leitura da página man, o sinalizador ' i ' significa definir essa acl em arquivos / dirs filhos, mas não a aplique ao diretório atual. Não estou definindo o sinalizador ' i ' no pai ( /var/www/tauweb ), mas parece estar sendo definido nos diretórios filhos que são criados.

O que acontece quando escrevo as seguintes ACEs usando nfs4_getfacl no diretório /vaw/www/tauweb :

A::OWNER@:rwaDxtTcCy
A::GROUP@:rwaDxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:dg:[email protected]:rwaDxtcy
A:fdi:EVERYONE@:rxtcy

é que o sistema realmente escreve isto:

[root@tau www]# nfs4_getfacl tauweb/
A::OWNER@:rwaDxtTcCy
A::GROUP@:rwaDxtcy
A:g:[email protected]:rwaDxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:[email protected]:rwaDxtcy
A:fdi:EVERYONE@:rxtcy

Observe o 'i' no segundo para o último usuário tau entry. Isso não foi definido quando editei as ACEs, mas estava presente imediatamente - o sistema parece adicioná-lo.

Agora lendo todo o docoo que eu posso encontrar indica que o "dg" após os dois primeiros pontos no conjunto superior de ACEs deve fazer com que a ACL seja herdada dos diretórios filhos (pelo que entendi, o 'g' indica que o principal é um grupo, não um usuário).

Agora, a sinalização "i" aparentemente significa que essa ACE é herdada, mas não a considera em verificações de permutação reais.

Então, quando um diretório filho /var/www/tauweb/d2 é criado, ele obtém estes:

[kkassahn@tau tauweb]$ nfs4_getfacl d2/
A::OWNER@:rwaDxtTcCy
A::GROUP@:rxtcy
A:g:[email protected]:rxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:[email protected]:rwaDxtcy
A:fdi:EVERYONE@:rxtcy

E o neto /var/www/tauweb/d2/d3 obtém estes:

[kkassahn@tau tauweb]$ nfs4_getfacl d2/d3/
A::OWNER@:rwaDxtTcCy
A::GROUP@:rxtcy
A:g:[email protected]:rxtcy
A::EVERYONE@:rxtcy
A:fdi:OWNER@:rwaDxtTcCy
A:fdi:GROUP@:rxtcy
A:fdig:[email protected]:rwaDxtcy
A:fdi:EVERYONE@:rxtcy

Agora d2 é deletável - porque é pai / var/www/tauweb has o

A:g:[email protected]:rwaDxtcy ACE. Mas essa ACE on não é herdada.

Somente A:g:[email protected]:rxtcy é aplicado a d2 e d3, embora a herança, mas não consulte A:fdig:[email protected]:rwaDxtcy , seja herdada por crianças, netos etc.

Qualquer ajuda ou sugestão muito apreciada, obrigado.

    
por Jason Tan 07.10.2013 / 05:13

1 resposta

3

Eu encontrei a causa deste problema. Parece que as ACLs do NFS v4 usam a máscara do usuário. Meus usuários tinham umask de 002, então a falta de gravação nos outros estava fazendo com que as sinalizações 'a' e 'D' fossem removidas.

Até onde eu sei, esse comportamento é diferente das ACLs POSIX.

Em qualquer caso, a solução para mim era definir a umask do usuário para 0.

No meu caso, um dos usuários era o apache, então eu defino umask 000 em /etc/init.d/http .

Os outros usuários eram todos usuários de SFTP com chroot e eu usei o pam_umask no ssh pam config para definir sua umask 000.

Um amigo meu encontrou alguma discussão sobre o assunto aqui: link

    
por 09.10.2013 / 05:33