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 .. :)
Réponses:
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:
est équivalent à:
N'est
fsid=0
plus 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
rmtab
des trucs liésrmtab
un 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.
rmtab
serez pas plein d'entrées périmées?Potentiellement oui, toujours en fonction de votre scénario de déploiement / cas d'utilisation.
mount -v
erreur voient "rien n'a été monté"?Je ne l'ai pas encore rencontré
la source