如何直接挂载nfsv4文件夹而不是root

如何直接挂载nfsv4文件夹而不是root

运行 CentOS 8

server side: /etc/exports:
/home/share *(ro)

/home 和 /home/share 属于 root.root,对目录有 755 权限,对文件有 644 权限。

 client side:
 mount -t nfs4 server:/ /sharefolder

如何直接挂载 /home/share 到 /sharefolder 而不是挂载 fs 的根目录?如果我尝试“mount -t nfs4 server:/home/share /sharefolder”,则会收到“不允许操作”错误

答案1

mount -t nfs4 server:/home/share /sharefolder看起来像是一个正确的客户端命令,并且您的设置对我有用,因为我刚刚测试了它。

当然,你必须以 root 身份输入该命令,或者使用sudo它。 “不允许操作”错误消息表明您可能不小心以非 root 用户身份运行了该命令,或者输入了错误的共享名。

请注意,即使您只是导出并挂载server:/home/share,NFSv4 服务器也需要自动生成虚拟出口对于//home。但是,这些不会是 NFS 服务器的真实//home,而是虚拟只读目录,仅包含到达实际导出目录所需的最少子目录。挂载共享后,您可以/proc/fs/nfsd/exports在 NFS 服务器上看到:

cat /proc/fs/nfsd/exports
# Version 1.1
# Path Client(Flags) # IPs
/home   *(ro,insecure,no_root_squash,sync,no_wdelay,no_subtree_check,v4root,uuid=e4c0fcd4:00b94db3:b63bd9a8:0e705e29,sec=390003:390004:390005:1)
/home/share     *(ro,root_squash,sync,wdelay,no_subtree_check,uuid=e4c0fcd4:00b94db3:b63bd9a8:0e705e29,sec=1)
/       *(ro,insecure,no_root_squash,sync,no_wdelay,no_subtree_check,v4root,fsid=0,uuid=e4c0fcd4:00b94db3:b63bd9a8:0e705e29,sec=390003:390004:390005:1)

答案2

经过一些测试,我设法重现了您的问题,结果证明是防火墙问题。请确保防火墙已禁用,然后验证您的nfs共享是否正常工作。

假设您使用firewalld

sudo systemctl stop firewalld

一旦确定其nfs按预期工作,您将需要更改防火墙配置。 nfs依赖于其他守护进程,因此为了nfs正常工作,您不仅需要允许nfs,而且还mountd需要允许rpc-bind

sudo firewall-cmd --permanent --add-service=rpc-bind
sudo firewall-cmd --permanent --add-service=mountd
sudo firewall-cmd --permanent --add-service=nfs
sudo firewall-cmd --reload

如果您希望仅允许特定区域使用这些服务,您还可以通过添加 ie 来指定区域--zone=nfszone

我还没有彻底测试这个解决方案,您可能需要打开额外的端口才能使所有功能正常工作(即文件锁定)请参阅https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/6/html/storage_administration_guide/s2-nfs-nfs-firewall-config

相关内容