在 CentOS 上挂载多个 nfs4 而不共享父目录

在 CentOS 上挂载多个 nfs4 而不共享父目录

我想在 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。

相关内容