为什么使用 NFS 挂载文件系统时 /mnt 下的目录不可见?

为什么使用 NFS 挂载文件系统时 /mnt 下的目录不可见?

我在 NFS 服务器上设置了一个 NFS 共享,其中/etc/exports包含/ *(rw,no_root_squash,no_subtree_check) 然后我exportfs -a激活共享并重新启动 nfs 服务器。

我在客户端计算机上使用 autofs 安装共享,其中/etc/auto.nfs包含foo -fstype=nfs4,soft,rw,noatime,allow_other server.tld:/

我的auto.master包含/mnt/nfs /etc/auto.nfs --timeout=30 --ghost

我重新启动autofs(systemctl restart autofs.service)

然后我看到服务器上的所有目录。但是当我尝试导航到 /mnt/mounteddiskonserver 下安装的服务器磁盘时,我再也看不到任何东西了。客户端计算机上的 nemo 文件浏览器没有文件、没有目录、没有写权限。我可以转到服务器上的 /home/user 并查看并删除服务器上与 /mnt/mounteddiskonserver/files 具有相同权限的所有文件。

当我设置 NFS 服务器来共享 /mnt/mounteddiskonserver 时,/etc/exports/mnt/mounteddiskonserver *(rw,no_root_squash,no_subtree_check)可以看到 /mnt/mounteddiskonserver 下的所有文件和目录,并且可以读写。

答案1

您的根文件系统导出选项列表不包括crossmnt.因此,/mnt如果您希望通过 NFS 访问它们,则必须显式导出 NFS 服务器下的每个单独的文件系统。

这实际上是一件好事,因为通过/devNFS 授予访问权限不太可能实现任何非常有用的目标,并且通过 NFS 访问/proc可能/sys会造成混乱甚至有害。 (由于设备是通过次设备号和主设备号来访问的,挂载 NFS 上的设备节点/dev仍然会映射到该设备的相应设备)客户端主机。任何类型的缓存都可能会为您提供来自 NFS 导出的陈旧数据/proc。)

您可能有导出 NFS 服务器的根文件系统的理由(在我看来,这本身就是一种值得怀疑的做法),但添加crossmnt其导出选项将使您能够用多管加特林搬起石头砸自己的脚如果任何具有 root 访问权限的人在 NFS 客户端系统中犯了错误,则使用枪。如果绝对必要,请单独创建/etc/exports一行/mnt并将选项添加crossmnt到其中。

相关内容