运行 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