我想在 CentOS 上通过 NFS 共享等/share/foo
。/share/bar
我遇到了这个常见问题:
mount.nfs4: mounting 192.168.101.254:/share/foo failed, reason given by server: No such file or directory
解决方案似乎是使用导出父目录,/share
然后fsid=0
在客户端上使用与相关的路径挂载命令/share
,即
服务器导出文件:
/share 192.160.0.0/16(rw,fsid=0)
/share/foo 192.160.0.0/16(ro)
/share/bar 192.160.0.0/16(ro)
客户端 fstab:
192.168.101.254:/foo /share/foo nfs4 intr
但如果我想从服务器导出它:
/share/private 192.168.101.123(ro)
192.168.101.123
那么除了因为许多地址都可以访问/share
及其子目录之外,这在机器上是否可用?
如果是,那么这就是一个不可接受的安全漏洞。如果不是,那么我如何保证没有客户端可以访问,/share/private
尽管他们可以访问/share
?
总之,我需要服务器导出/share/foo
、/share/bar
和/share/private
不同的通过 nfs4 的客户端机器。
答案1
处理此问题的最佳方法是使用绑定挂载:创建一个仅用于 NFS 导出的文件夹:
mkdir /srv/nfs
然后将其添加到您的 /etc/fstab:
/share/foo /srv/nfs/foo none defaults,bind 0 0
/share/foo /srv/nfs/bar none defaults,bind 0 0
/etc/exports 完全相同,只是将 /share 替换为 /srv/nfs。另外,请确保为 /etc/exports 中的 foo 和 bar 条目分配唯一的 fsid。