Por que o root em uma máquina não pode alterar o conteúdo montado de nfs de outra máquina?

14

No meu servidor NFS, tenho a seguinte exportação definida:

#NFS exports Database
/shared -alldirs -network=192.168.1 -mask=255.255.255.0

No meu cliente NFS:

192.168.1.7:/shared /shared nfs rw 0 0

Obviamente, como root no servidor, posso fazer o que quiser. No cliente, no entanto, meu usuário comum 'gabe' pode fazer alterações na montagem nfs (supondo que eu tenha permissões), mas o root não pode.

Como meu usuário comum:

gabe@client$ cd /shared
gabe@client$ ls -l
total 8
drwxrwxrwx  4 gabe  wheel   512 Mar 20 19:20 tmp
gabe@client$ cd tmp
gabe@client$ touch test.txt
gabe@client$ rm test.txt

Como raiz:

# cd /shared/tmp
# touch test.txt
touch: test.txt: Permission denied

Novamente, tudo isso é do lado do cliente NFS , e suspeito que talvez tenha algo a ver com a opção -maproot. Esta é a primeira vez que estou configurando o NFS e notei essa peculiaridade. Vou fazer algumas leituras agora, para ver se consigo descobrir isso, mas se alguém tiver alguma ideia, eu agradeceria.

Gabe.
fonte

Respostas:

18

O NFS foi projetado com a idéia de que os IDs de usuário e grupo seriam os mesmos em todas as máquinas da rede. Para usuários comuns, isso funciona bem. Mas o UID do root é sempre 0, e só porque você tem root em uma caixa, isso não significa que você deve ter acesso root a todas as máquinas da rede.

Portanto, o NFS trata a raiz especialmente. Por padrão, o root é mapeado para o nobodyusuário, que normalmente não tem acesso de gravação. A -maprootopção permite alterar como o root é tratado. BSD -maproot=rootcorresponde à no_root_squashopção do Linux .

cjm
fonte
Sim, de fato. Isso resolveu o meu problema. A página de manual que eu estava lendo era um pouco enigmática (ou o meu entendimento era) com relação ao que exatamente a raiz principal fez. Obrigado!
Gabe.
Outro noob aqui. Eu queria saber se vocês podem saber uma maneira de saber se uma unidade NFS foi configurada para usar a -maprootopção sem ter acesso ao servidor NFS.
John
@ John, isso é diferente o suficiente para você fazer uma nova pergunta em vez de adicionar um comentário.
Cjm 30/07
5

Esse é um comportamento comum nas implementações tradicionais do NFS. Os mapeamentos de usuário do NFS são executados independentemente do contexto, portanto, todos os acessos pela raiz do cliente precisam ser mapeados para um usuário específico (geralmente nobodypor padrão). Daí esse comportamento estranho, em que a raiz do cliente não pode acessar seus arquivos diretamente, mas pode su gabeacessá-los.

(As versões “recentes” do NFS, ou seja, NFSv4 e talvez NFSv3, permitem um comportamento mais saudável se suportadas pelos dois lados, mas não conheço os detalhes.)

Gilles 'SO- parar de ser mau'
fonte