我在 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 服务器下的每个单独的文件系统。
这实际上是一件好事,因为通过/dev
NFS 授予访问权限不太可能实现任何非常有用的目标,并且通过 NFS 访问/proc
可能/sys
会造成混乱甚至有害。 (由于设备是通过次设备号和主设备号来访问的,挂载 NFS 上的设备节点/dev
仍然会映射到该设备的相应设备)客户端主机。任何类型的缓存都可能会为您提供来自 NFS 导出的陈旧数据/proc
。)
您可能有导出 NFS 服务器的根文件系统的理由(在我看来,这本身就是一种值得怀疑的做法),但添加crossmnt
其导出选项将使您能够用多管加特林搬起石头砸自己的脚如果任何具有 root 访问权限的人在 NFS 客户端系统中犯了错误,则使用枪。如果绝对必要,请单独创建/etc/exports
一行/mnt
并将选项添加crossmnt
到其中。