
Estou com um problema para exibir arquivos usando uma montagem NFSv4 entre
Server: Ubuntu 20.04, 192.168.1.1
Client: Ubuntu 18.04, 192.168.1.2
No servidor, tenho uma pasta e um arquivo
/home/server/files/myfile.pdf
(observe que 'servidor' está sendo usado como o nome da conta do usuário). Aqui está a cadeia completa de propriedade e permissões do arquivo original:
drwxr-xr-x root:root /
drwxr-xr-x root:root /home/
drwxr-xr-x server:server /home/server/
drwxrwxr-x server:nfsgroup /home/server/files/
-rwxrwxrwx server:nfsgroup /home/server/files/myfile.pdf
Aqui você pode ver um exemplo de utilitário 'user':'group' que criei:
nfsuser uid=127
nfsgroup gid=134
Tanto 'nfsuser' quanto 'server' estão no grupo 'nfsgroup'.
No servidor, tenho o /files/
diretório montado em ligação /srv/nfs4/files/
in /etc/fstab
, com uma entrada
/home/server/files /srv/nfs4/files none bind 0 0
Isso foi bem-sucedido e posso ver claramente o /srv/nfs4/files/myfile.pdf
arquivo como
-rwxrwxrwx server:nfsgroup /srv/nfs4/files/myfile.pdf
Aqui está a cadeia completa de propriedade e permissões do arquivo montado e servido:
drwxr-xr-x root:root /
drwxr-xr-x root:root /srv/
drwxrwxr-x server:nfsgroup /srv/nfs4/
drwxrwxr-x server:nfsgroup /srv/nfs4/files/
-rwxrwxrwx server:nfsgroup /srv/nfs4/files/myfile.pdf
Agora, quero exportar o /srv/nfs4/
diretório inteiro, que contém o bind-mounted files/
, para o cliente. Eu tenho esta entrada no servidor /etc/exports
:
/srv/nfs4 192.168.1.2(rw,sync,fsid=0,root_squash,all_squash,anonuid=127,anongid=134,no_subtree_check)
Observe em particular que o all_squash,anonuid=127,anongid=134
grupo de configurações faz com que o usuário cliente 'client' seja reconhecido como 'nfsuser' no 'nfsgroup' no que diz respeito às permissões.
Depois de exportar isso usando $ sudo exportfs -ra
, eu o monto no diretório de nível raiz /nsffiles/
do cliente usando o comando $ sudo mount -t nfs 192.168.1.1:/srv/nfs4 /nsffiles
.
O resultado é que eupode verfiles/
o diretório exportado /nsffiles/
no cliente. No entanto, não consigo ver seu conteúdo:
$ ls -Alhd /nsffiles/
drwxrwxr-x 8 client 134 4.0K Nov 14 20:37 /nsffiles/
$ ls -Alhd /nsffiles/files/
drwxr-xr-x 2 root root 4.0K Nov 14 20:36 /nsffiles/files/
$ ls -Alh /nsffiles/files/
total 0
O fato de o cliente NFS poder ver o files/
diretório indica que não há nada fundamentalmente errado com meus serviços NFS ou com a rede local. Não há problemas de firewall e não preciso instalar nenhum pacote adicional. Além disso, anteriormente eu tinha a montagem NFS funcionando perfeitamente em uma estrutura de pastas ligeiramente diferente ( files/
estava em um diretório fora de casa, por exemplo), então sei que o básico está bom nesse aspecto.
Presumo que a causa mais provável de não funcionar agora é uma mudança sutil de propriedade/permissões entre a configuração anterior e a atual. Em particular, o diretório montado é
server side: `/srv/nfs4/` drwxrwxr-x server:nfsgroup
client side: `/nsffiles/` drwxrwxr-x client:134
O diretório contido é
server side: `/srv/nfs4/files/` drwxrwxr-x server:nfsgroup
client side: `/nsffiles/files/` drwxr-xr-x root:root
Ou seja, para o diretório montado, as permissões são convertidas como server:nfsgroup -> client:134
, o que é esperado. As permissões para o diretório contido, no entanto, são convertidas como server:nfsgroup -> root:root
. Por que root:root
e não client:134
?
Esta falha no servidorperguntaparece semelhante, mas diz respeito ao Windows, e não posso dizer se a única resposta se aplica.
Este Unix.SEperguntadiz respeito às permissões de arquivo NFS para uma configuração Windows/Linux; todas as informações que posso obter são coisas que já sei e acho que já cuidei.
Por favor, responda apenas se você souber do que está falando. Se você não consegue resistir a postar um palpite, identifique-o como um palpite. Ou, você sabe, forneça informações suficientes para que seu leitor perceba a diferença.