Meu servidor NFS parece estar ignorando os grupos secundários. Eu tenho menos de 16 grupos por usuário, mas tenho --manage-gids
ativado. O compartilhamento NFS não é montado quando esta opção está ausente. Usuários e grupos são gerenciados com o LDAP, e a autenticação é feita via Kerberos. Minhas exportações são configuradas assim:
> cat /etc/exports
/srv/nfs4 *(rw,sync,fsid=root,crossmnt,no_subtree_check,sec=krb5i,insecure)
> grep /srv/nfs4 /etc/fstab
/home /srv/nfs4/home none bind 0 0
/var/backups/home /srv/nfs4/archive none bind 0 0
> hostname -f
nfs.example.com
A montagem do NFS é montada da seguinte maneira, tanto no próprio servidor quanto em algumas outras máquinas clientes:
> grep nfs4 /etc/fstab
nfs.example.com:/ /mnt/nfs nfs rw,exec,nfsvers=4 0 0
Os UIDs estão corretos, já que o sistema de arquivos NFS é montado no próprio servidor. Isso também acontece quando eu o monto em outra máquina.
> id
uid=1027(kai) gid=1027(kai) groups=1027(kai),27(sudo),100(users)
> ls -n /mnt/nfs/home/kai/test
total 0
drwxr-xr-- 1 1001 100 0 Mar 27 11:44 test1/
drwxr-xr-x 1 1001 100 0 Mar 27 11:44 test2/
drwxr-xr-- 1 1001 1027 0 Mar 27 11:44 test3/
No diretório local ( /home/kai/test
e /srv/nfs4/home/kai/test
), posso cd
para todos os diretórios de teste. Em /mnt/nfs/home/kai/test
, não consigo cd
to test1/
. Minha conclusão é que a permissão de grupo ( r-x
) no grupo secundário users
está sendo ignorada - alguma ideia de por que isso pode ser?
Depois de investigar mais sobre o wireshark, parece ser um problema do lado do host. O cliente está emitindo LOOKUP
chamadas e obtendo a resposta esperada (o que deve ser, já que as permissões corretas são mostradas com ls
). No entanto, ele não está recebendo a resposta correta para ACCESS
chamadas - o cliente envia Check: Read/Lookup/Modify/Extend/Delete
e recebe Allowed: Read/Lookup
para test2
e test3
, mas apenas Allowed: Read
para test1
.