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 exports
page 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=0
n'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 -arv
montre:
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/users
n'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/users
sauf 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/users
dont 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:
- N'est-il pas terriblement dangereux de simplement exposer ce type d'informations sur les clients;
- Les administrateurs de serveur ne sont pas ignorants liés à avoir un rmtab avec beaucoup de clients périmés;
- Est-ce la raison pour laquelle les clients qui montent les répertoires nfs4 avec
mount -v
get 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 .. :)