Pourquoi ne peut-on pas rooter sur une machine le contenu monté en nfs depuis une autre machine?

14

Sur mon serveur NFS, j'ai l'export suivant défini:

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

Sur mon client NFS:

192.168.1.7:/shared /shared nfs rw 0 0

Évidemment, en tant que root sur le serveur, je peux faire ce que je veux. Sur le client cependant, mon utilisateur habituel 'gabe' peut apporter des modifications au montage nfs (en supposant que j'en ai les autorisations), mais root ne le peut pas.

En tant qu'utilisateur régulier:

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

En tant que root:

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

Encore une fois, tout cela est du côté client NFS , et je soupçonne peut-être que cela a quelque chose à voir avec l'option -maproot. C'est la première fois que je configure NFS et je viens de remarquer cette particularité. Je vais faire un peu de lecture maintenant, pour voir si je peux comprendre cela, mais si quelqu'un a une idée, je l'apprécierais.

gabe.
la source

Réponses:

18

NFS a été conçu avec l'idée que les identifiants d'utilisateur et de groupe seraient les mêmes sur toutes les machines du réseau. Pour les utilisateurs ordinaires, cela fonctionne bien. Mais l'UID de root est toujours 0, et ce n'est pas parce que vous avez root sur une boîte que vous devez avoir un accès root sur chaque machine du réseau.

Par conséquent, NFS traite spécialement root. Par défaut, root est mappé à l' nobodyutilisateur, qui n'a normalement aucun accès en écriture. L' -maprootoption vous permet de modifier la façon dont root est géré. BSD -maproot=rootcorrespond à l' no_root_squashoption Linux .

cjm
la source
Oui en effet. Cela a résolu mon problème. La page de manuel que je lisais était un peu énigmatique (ou ce que je comprenais) en ce qui concerne exactement ce que maproot a fait. Merci!
gabe.
Un autre noob ici. Je me demandais si vous pouviez savoir si un lecteur NFS a été configuré pour utiliser l' -maprootoption sans avoir accès au serveur NFS.
John
@John, c'est assez différent pour que vous posiez une nouvelle question au lieu d'ajouter un commentaire.
cjm
5

C'est un comportement courant avec les implémentations NFS traditionnelles. Les mappages d'utilisateurs NFS sont effectués indépendamment du contexte, de sorte que tous les accès par la racine client doivent être mappés à un utilisateur particulier (généralement nobodypar défaut). D'où ce comportement étrange, où la racine du client ne peut pas accéder directement à vos fichiers, mais peut su gabey accéder.

(Les versions «récentes» de NFS, c'est-à-dire NFSv4 et peut-être NFSv3, permettent un comportement plus sain si elles sont prises en charge des deux côtés, mais je ne connais pas les détails.)

Gilles 'SO- arrête d'être méchant'
la source