NFSv4 ne fonctionne plus comme NFSv3. Il n’exporte pas des répertoires indépendants, mais un pseudo‑filesystem unique, avec une racine logique obligatoire : le répertoire exporté avec fsid=0.
Le client monte toujours :
server:/ Puis navigue dans l’arborescence construite par le serveur.
Le pseudo‑root (fsid=0)
Le pseudo‑root :
sert de racine logique du namespace NFSv4
doit être le parent de tous les sous‑exports
doit être exporté avec fsid=0
contrôle la visibilité et la traversée (avec crossmnt et nohide)
❗ Ce que fsid=0 ne fait PAS
Contrairement à NFSv3, le pseudo‑root n’impose pas ses permissions :
son ro n’empêche pas un sous‑export rw
son root_squash n’empêche pas un sous‑export no_root_squash
ses options ne sont pas héritées par les sous‑répertoires
Le pseudo‑root est un conteneur logique, pas un ACL global.
Les sous‑exports
Chaque sous‑répertoire exporté possède ses propres propriétés effectives, qui priment sur celles du pseudo‑root.
Exemples de montages clients et options effectives
Client A (monte la racine NFSv4) -------------------------------- mount -t nfs4 server:/ /mnt/nfs => Accède à /var/nfs/titi via pseudo-root traversal Chemin client: /mnt/nfs/var/nfs/titi Options effectives pour /mnt/nfs/var/nfs/titi : rw (selon /var/nfs/titi)
Client B (monte le sous-export explicitement) --------------------------------------------- mount -t nfs4 server:/var/nfs/titi /home/virtual => Chemin client: /home/virtual Options effectives : rw (selon /var/nfs/titi)
Client C (monte un sous-export en lecture seule) ----------------------------------------------- mount -t nfs4 server:/var/nfs/tata /srv/tata => Chemin client: /srv/tata Options effectives : ro (selon /var/nfs/tata)
Client D (monte la racine sans crossmnt côté serveur) ---------------------------------------------------- Si /var/nfs export fsid=0 sans crossmnt, la traversée vers sous-exports peut échouer. mount -t nfs4 server:/ /mnt/nfs => /mnt/nfs/var/nfs/titi peut être inaccessible ou nécessiter montage explicite.
Notes pratiques --------------- - **fsid=0** : point d’entrée logique, **ne fixe pas** les permissions des sous‑exports. - **Sous‑export rw** reste **rw** même si fsid=0 est marqué ro. - Pour visibilité via la racine, exporter fsid=0 avec **crossmnt** et/ou utiliser **nohide** sur les sous‑exports. - Vérifier côté client avec `nfsstat -m` pour voir les options réellement appliquées.