When configuring NFS shares, the export path shown in showmount -e directly reflects the server's filesystem path. By default, if you export /opt/target, clients will see and mount this exact path. However, NFS provides mechanisms to present different paths to clients.
The key is using the -o nohide and fsid options in your /etc/exports file:
# /etc/exports configuration /opt/target *(rw,sync,no_subtree_check,fsid=0,no_root_squash) /target *(rw,sync,no_subtree_check,nohide)
1. First, ensure both directories exist on the server:
sudo mkdir -p /opt/target /target sudo mount --bind /opt/target /target
2. Add the following line to /etc/fstab to make the bind mount persistent:
/opt/target /target none bind 0 0
After making changes, export the shares and verify:
sudo exportfs -rav showmount -e localhost
Clients should now see both /target and /opt/target, but can mount using the cleaner /target path.
Remember to:
- Restrict exports to specific client IPs/subnets
- Use appropriate squashing options
- Consider adding
secureoption for port restrictions
When configuring NFS shares, the exported path on the server directly corresponds to what clients see when running showmount -e. In your case, exporting /opt/target means clients must mount this exact path, which isn't always ideal for maintaining clean filesystem structures.
The most reliable method involves creating a bind mount before exporting. This creates a virtual mapping at your desired path without moving actual data:
# On the NFS server: sudo mkdir /target sudo mount --bind /opt/target /target
Add this to /etc/fstab to survive reboots:
/opt/target /target none bind 0 0
Now export the new path in /etc/exports:
/target *(rw,sync,no_subtree_check)
After modifying, always run:
sudo exportfs -ra
For temporary solutions without bind mounts, you can use exportfs with the -o flag:
sudo exportfs -o rw,sync,no_root_squash,fsid=0 *:/opt/target=/target
Note this approach has limitations and isn't persistent across reboots.
Clients can now mount the cleaner path:
mount server:/target /mnt/target
Check the export list on server:
showmount -e localhost
Should display /target instead of /opt/target.
1. Ensure proper permissions on both original and bind-mounted directories
2. The fsid=0 option may be needed when exporting from non-root paths
3. SELinux contexts may need adjustment with chcon
4. For large deployments, consider automounter configurations