如何在离散目录树中定义 NFS 根?

如何在离散目录树中定义 NFS 根?

我想为多个docker容器设置一个NFS服务器,我找到了关于archlinux-wiki。我认为这个项目是了解 NFS 配置及其安全细节的一个有用示例。

我不确定下面这句话是什么意思以及该如何表达。

一个好的安全做法是在一个离散的目录树中定义一个 NFS 根,这将使用户仅限于该挂载点。

这是否仅意味着为共享数据创建一个特定的目录,而不是让它分布在多个用户的主目录中?

服务器操作系统:centos7或8

答案1

我想我知道这里发生了什么以及为什么 Arch wiki 令人困惑。

20 世纪 90 年代的 NFS 旧版本(版本 3 及更早版本)可以简单地导出位于文件系统任何位置的任意目录。NFSv4 改变了这一现状,要求所有导出的目录都是顶级“根”导出的子目录,该导出由系统管理员定义,并带有导出选项fsid=0以将其区分为根目录。没有预定义的根目录;管理员明确选择定义根目录。

因此,如果您定义/srv/nfs为根,则所有其他 NFSv4 导出都必须是该目录的子目录。

但是,您要导出的目录可能实际上不在 下/srv/nfs。例如,您可能想要导出/var/lib/docker/volumes。为此,您可以创建绑定挂载,这样文件就保留在文件系统中的原始位置,但也可以在绑定挂载路径下看到,而不是移动文件(这可能会破坏依赖于它们位于原始位置的事物)。

mkdir /srv/nfs/volumes
mount --bind /var/lib/docker/volumes /srv/nfs/volumes

现在,这些文件在文件系统树的两个位置均可用,因此 NFSv4 可以导出它们。

我唯一仍感到困惑的是,为什么 Arch wiki 将其称为“良好的安全实践”,而这只是 NFSv4 的工作方式。

相关内容