Por que não é possível fazer root em uma máquina alterar o conteúdo montado do nfs de outra máquina?

13

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 para), mas a raiz 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 root:

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

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

    
por gabe. 21.03.2011 / 23:11

2 respostas

18

O NFS foi projetado com a ideia 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 na rede.

Portanto, o NFS trata raiz especialmente. Por padrão, root é mapeado para o usuário nobody , que normalmente não possui acesso de gravação. A opção -maproot permite alterar como o root é tratado. O -maproot=root do BSD corresponde à opção no_root_squash do Linux.

    
por 21.03.2011 / 23:28
5

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

(versões “recentes” do NFS, ou seja, NFSv4 e talvez NFSv3, permitem um comportamento melhor se suportado em ambos os lados, mas eu não sei os detalhes.)

    
por 21.03.2011 / 23:31