1. 出口

1. 出口

Linux 上的 NFS4 让我有点困扰。一些“外面”的信息似乎与其他信息相冲突,而其他信息似乎很难找到。所以这里有几件引起我注意的事情,希望有人能对此有所解释。

这个问题只关注没有 Kerberos 等的 NFS4。

1. 出口

exports手册页中有关 /etc/exports 结构的描述不明确。

引自exports(5)

此外,每行路径名后可能有一个或多个默认选项规范,形式为破折号(“-”)后跟选项列表。

该选项列表仅用于该行上的所有后续导出。

“仅在该行进行后续导出”是什么意思?

1.2fsid=0不再需要了吗?

我在搜索 fsid 时发现了一个对 linux-nfs 列表的评论不再需要声明 fsid=0。现在我很困惑,nfs4 是否需要它?!

2. 非导出目录仍可挂载

假设我有以下树:

/exp
/exp/users
/exp/distr
/exp/distr/archlinux
/exp/distr/debian

并且我在此 fstab 条目中有以下条目:

/dev/disk/by-label/users  /mnt/users  ext4  defaults  0  0
/dev/disk/by-label/distr  /mnt/distr  ext4  defaults  0  0
/mnt/users                /exp/users  none  bind      0  0
/mnt/distr                /exp/distr  none  bind      0  0

我的出口正是这样的:

/exp       192.168.1.0/24(fsid=0,rw,async,no_subtree_check,no_root_squash)
/exp/distr 192.168.1.0/24(rw,async,no_subtree_check,no_root_squash)

exportfs -arv显示:

exporting 192.168.1.0/24:/exp/distr
exporting 192.168.1.0/24:/exp

那么为什么我可以做到这一点并且客户端上没有出现任何错误:

mount -t nfs4 server:/exp/users /tmp/test

即使没有导出?我没有导出此目录,尽管除非我指定,否则/exp/users看不到的内容,但我仍然可以写入目录。我写入的所有内容都会进入底层目录,当我..时可以看到该目录。/dev/disk/by-label/userscrossmnt/exp/usersumount /exp/users; ls /exp/users

3. 奇怪的情况showmount -d server

正如所述rpc.mountd(8),此命令应显示当前由客户端挂载的目录或中的陈旧条目/var/lib/nfs/rmtab,如下所示:

rpc.mountd 守护进程通过在 /var/lib/nfs/rmtab 文件中添加条目来注册每个成功的 MNT 请求。当从 NFS 客户端收到 UMNT 请求时,只要该导出的访问控制列表允许该发送者访问该导出,rpc.mountd 就会从 /var/lib/nfs/rmtab 中删除匹配的条目。

(...)

但请注意,几乎没有什么可以保证 /var/lib/nfs/rmtab 的内容准确无误。客户端在调用 UMNT 后仍可继续访问导出。如果客户端重新启动时未发送 UMNT 请求,则 /var/lib/nfs/rmtab 中仍会保留该客户端的过时条目。

读完这篇文章后,我肯定会想:

  1. 仅仅暴露这类客户信息是不是非常不安全?
  2. 不知道服务器管理员必须有一个带有很多陈旧的客户;
  3. 这就是为什么挂载 nfs4 目录的客户端mount -v会看到“未挂载任何内容”这样的输出,尽管曾是安装?

我还有很多关于 nfs4 的其他问题,但暂时就这些。:)

答案1

很好的问题,在我看来,文档突出了更重要的一点。以下是完整答案的尝试:

“仅在该行进行后续导出”是什么意思?

这里举个可能最简单的例子:

/export/stuff -rw 10.0.0.54 10.0.0.55

相当于:

/export/stuff 10.0.0.54(rw) 10.0.0.55(rw)

不再需要了吗fsid=0

这取决于您的使用情况。看起来您正在从查询的其余部分导出基于常规磁盘的文件系统,在这种情况下,最好将其删除fsid=0(在 nfsv4 中,这会将行为更改为引用导出的根文件系统)。

要改变此行为,删除 no_subtree_check 选项


rmtab相关内容

  • 这样处理是否存在rmtab安全风险?
    我想这取决于你的使用情况来回答,在我的网络上它没有出现可信的信息泄露,但我可以看到它可能出现的情况。
  • 不会rmtab充满陈旧的条目吗?
    可能是的,同样取决于您的部署场景/用例。
  • 这就是为什么有些客户端运行时mount -v会错误地看到“没有安装任何内容”的原因吗?
    我还没有遇到过这种情况

相关内容