Comprendre NFS4 (serveur Linux)


26

J'ai été un peu gêné par NFS4 sous Linux. Certaines informations «là-bas» semblent entrer en conflit avec d'autres informations, et d'autres informations semblent difficiles à trouver. Voici donc deux ou trois choses qui ont attiré mon attention, j'espère que quelqu'un là-bas pourra nous éclairer à ce sujet.

Cette question se concentre exclusivement sur NFS4 sans Kerberos, etc.

1. Exportations

La exportspage de manuel contient des informations ambiguës sur la structure de / etc / exports.

Pour citer exports(5):

De plus, chaque ligne peut avoir une ou plusieurs spécifications pour les options par défaut après le nom du chemin, sous la forme d'un tiret ("-") suivi d'une liste d'options.

La liste d'options est utilisée pour toutes les exportations suivantes sur cette ligne uniquement.

Que signifie «exportations ultérieures sur cette ligne uniquement»?

1.2 fsid=0n'est plus requis?

Je cherchais fsid lorsque j'ai trouvé un commentaire sur la liste linux-nfs indiquant que fsid = 0 n'est plus requis. Maintenant je suis juste confus, en ai-je besoin avec nfs4 ou pas?!

2. Répertoire non exporté toujours montable

Disons que j'ai l'arborescence suivante:

/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian

Et j'ai les entrées suivantes dans cette entrée fstab:

/dev/disk/by-label/users  /mnt/users  ext4  defaults  0  0
/dev/disk/by-label/distr  /mnt/distr  ext4  defaults  0  0
/mnt/users                /exp/users  none  bind      0  0
/mnt/distr                /exp/distr  none  bind      0  0

Et mes exportations sont exactement ceci:

/exp       192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)

Et exportfs -arvmontre:

exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp

Alors pourquoi suis-je capable de faire cela et de ne pas obtenir d'erreur sur un client:

mount -t nfs4 server:/exp/users /tmp/test

Même si /exp/usersn'est pas exporté? Je n'ai pas exporté ce répertoire, et même si je ne vois pas le contenu de /dev/disk/by-label/userssauf indication contraire crossmnt, je suis toujours en mesure d'écrire dans le répertoire. Tout ce que j'écris là va dans le répertoire sous-jacent /exp/usersdont on peut voir quand je umount /exp/users; ls /exp/users..

3. Le cas étrange de showmount -d server

Comme indiqué par rpc.mountd(8), cette commande doit afficher les répertoires actuellement montés par les clients ou les entrées périmées /var/lib/nfs/rmtab, comme on peut le lire:

Le démon rpc.mountd enregistre chaque requête MNT réussie en ajoutant une entrée au fichier / var / lib / nfs / rmtab. Lors de la réception d'une demande UMNT d'un client NFS, rpc.mountd supprime simplement l'entrée correspondante de / var / lib / nfs / rmtab, tant que la liste de contrôle d'accès pour cette exportation permet à cet expéditeur d'accéder à l'exportation.

(...)

Notez cependant qu'il n'y a pas grand-chose pour garantir que le contenu de / var / lib / nfs / rmtab est exact. Un client peut continuer d'accéder à une exportation même après avoir appelé UMNT. Si le client redémarre sans envoyer de demande UMNT, les entrées périmées restent pour ce client dans / var / lib / nfs / rmtab.

Après avoir lu ceci, je me demande sûrement:

  1. N'est-il pas terriblement dangereux de simplement exposer ce type d'informations sur les clients;
  2. Les administrateurs de serveur ne sont pas ignorants liés à avoir un rmtab avec beaucoup de clients périmés;
  3. Est-ce la raison pour laquelle les clients qui montent les répertoires nfs4 avec mount -vget to see output comme "rien n'a été monté" même si quelque chose a été monté?

J'ai beaucoup d'autres questions concernant nfs4, mais je vais en rester là pour le moment .. :)


Peut-être que la liste d'exportation n'aime pas vos étranges systèmes de fichiers montés sur bind. Essayez d'abord avec / mnt / users ...
jirib

Il s'agit de nfs4, qui nécessite un "pseudo système de fichiers", c'est-à-dire une hiérarchie de système de fichiers à une arborescence. Pouvez-vous clarifier ce que vous voulez dire, s'il vous plaît?
drumfire

Cette page wiki affirme également que fsid = 0 n'est plus requis: wiki.linux-nfs.org/wiki/index.php/… , mais 'man exports' implique toujours qu'il est requis
SystemParadox

1
Je voudrais dire que je soutiens cette question. Comme vous, j'ai observé plusieurs des mêmes choses, et j'ai la même question et plus encore. Cela ressemble à un gâchis f * ing.
Cyclone du

1
Trop de questions dans un seul post. @drumfire, pourriez-vous s'il vous plaît le décomposer en plusieurs questions-messages plus simples?
Victor Yarema

Réponses:


7

Grandes questions, met en évidence un point plus important avec la documentation IMO. Voici une tentative de réponse complète:

Que signifie «exportations ultérieures sur cette ligne uniquement»?

Un exemple est probablement le plus simple ici:

/export/stuff -rw 10.0.0.54 10.0.0.55

est équivalent à:

/export/stuff 10.0.0.54(rw) 10.0.0.55(rw)

N'est fsid=0plus nécessaire?

Cela dépend de votre cas d'utilisation. Il semble que vous exportiez des systèmes de fichiers sur disque standard à partir du reste de votre requête, dans ce cas, il est préférable de supprimer fsid=0(ce qui dans nfsv4 modifie le comportement pour référencer le système de fichiers racine de l'exportation).

Pour modifier ce comportement, supprimez l'option no_subtree_check


rmtabdes trucs liés

  • La gestion d' rmtabun risque de sécurité est-elle?
    Je suppose que cela dépend de votre cas d'utilisation pour répondre à cela, sur mon réseau, il ne présente pas de fuite d'informations crédible, mais je peux voir des cas où cela pourrait potentiellement.
  • Vous ne rmtabserez pas plein d'entrées périmées?
    Potentiellement oui, toujours en fonction de votre scénario de déploiement / cas d'utilisation.
  • Est-ce la raison pour laquelle certains clients exécutant par mount -verreur voient "rien n'a été monté"?
    Je ne l'ai pas encore rencontré
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.