Exportei um compartilhamento NFS de um servidor e montei-o de um cliente. Recebi erros de permissão negada quando tentei acessá-lo, me perguntei o porquê. Tornou a exportação gravável mundialmente, criei um arquivo lá e descobri que o cliente acessa com um usuário diferente do que eu esperava.

Minha exportação:

/export             fd48:2b50:6a95:a6db::4(ro,no_subtree_check,fsid=0,all_squash)
/export/backup-fs   fd48:2b50:6a95:a6db::4(rw,no_subtree_check,root_squash,anonuid=34,anongid=34)

(Observação: endereços IP públicos alterados para privados por motivos de privacidade.)

A intenção aqui é fazer root_squash, MAS o usuário root do cliente deve ser comprimido para o UID 34 local (usuário de backup); este é o propósito de anonuid, anongid. Portanto, se a exportação for de propriedade do UID / GID 34, o usuário root do cliente deve ser tratado como se fosse o proprietário dele. Ainda assim, quando eu crio um arquivo no compartilhamento, ele passa a ser propriedade de nobody/nogroup. Por quê? Tudo coincide entre os dois sistemas: ambos têm UID / GID 34 e ambos são nomeados backup.

Também tive que mudar /exportpara rw, o que realmente não faz sentido para mim, porque quero que a raiz de exportação seja somente leitura e apenas o subdiretório backup-fs gravável.

Sistema de servidor:

Ubuntu 20.04.3 LTS (GNU/Linux 5.4.0-81-generic x86_64)

É assim que a montagem se parece no cliente:

my-nfs-server:/backup-fs on /var/backups/fs/data type nfs4 (rw,relatime,vers=4.2,rsize=65536,wsize=65536,namlen=255,hard,proto=tcp6,timeo=600,retrans=2,sec=sys,clientaddr=fd48:2b50:6a95:a6db::4,local_lock=none,addr=fdc8:d5f9:cbbf:b206::2001) 

O que particularmente me intriga é que eu tenho EXATAMENTE ESTA MESMA configuração em outro servidor NFS e monte-a COM O MESMO cliente e funciona como planejado. Não consigo encontrar nenhuma diferença entre as duas configurações, embora eu tenha um Ubuntu mais antigo e uma versão de kernel associada no outro sistema.

no answer