NO_ALL_SQUASH 选项在 NFS 导出中起什么作用?

Siu*_*ji- 5 nfs export

exports(5)手册页的“用户ID映射”部分中,它说:

用户 ID 映射

...

通常,在访问 NFS 服务器上的文件时,不希望客户端计算机上的 root 用户也被视为 root 用户。为此,uid 0 通常会映射到不同的 id:所谓的匿名或nobodyuid。这种操作模式(称为“根挤压”)是默认模式,可以使用 关闭no_root_squash

...

以下是映射选项的完整列表:

根南瓜
将请求从 uid/gid 0 映射到匿名 uid/gid。请注意,这不适用于可能同样敏感的任何其他 uid 或 gid,例如 userbin或 group staff
无根南瓜
关闭根挤压。此选项主要对无盘客户端有用。
全部南瓜
将所有 uids 和 gids 映射到匿名用户。对于 NFS 导出的公共 FTP 目录、新闻假脱机目录等很有用。相反的选项是no_all_squash,这是默认设置。

...

我总结了下表中的UID映射选项(假设1000是非特权用户的UID,并且65534是匿名UID):

选项 客户端UID 服务器UID
根南瓜 0 65534
根南瓜 1000 1000
无根南瓜 0 0
无根南瓜 1000 1000
全部南瓜 0 65534
全部南瓜 1000 65534
没有所有南瓜 0 0(不确定)
没有所有南瓜 1000 65534(不确定)

问题

  1. 我对该no_all_squash选项的总结正确吗?如果有的话什么时候有用?
  2. 哪个选项是默认选项?上面的段落说root_squash,而no_all_squash声明本身在选项解释中默认。

先感谢您!

Siu*_*ji- 6

在虚拟环境中设置一对NFS服务器和客户端后,我发现以下结果:

选项 客户端UID 服务器UID
根南瓜 0 65534
根南瓜 1000 1000
无根南瓜 0 0
无根南瓜 1000 1000
全部南瓜 0 65534
全部南瓜 1000 65534
没有所有南瓜 0 65534
没有所有南瓜 1000 1000

换句话说,该no_all_squash选项的行为似乎与该选项相同root_squash。这回答了问题1,同时解释了问题2。


dro*_*kie -1

通常的方法是允许机器之间的根映射。此外,旧的 NFS 传统方法使用 NIS 来同步 NIS 域中的用户 ID,以达到此确切目的:否则具有不同 ID 的相同用户将相互混淆。

压缩在极少数情况下使用,一方面,您希望允许 NFS 访问某些不属于您的客户端,另一方面,如果他们使用 id 0,您不希望他们拥有完全访问权限通常,NFS 是跨单一组织网络进行配置的,其中所有的机器都由一组工程师进行管理。

至于全部/无挤压/无挤压 - 结果很简单:当您想为文件系统树应用一些复杂的 ACL 时,您必须使用可以正确处理 ACL 的 NFSv4,因为 NFSv<=3 根本不会,有或没有压缩(后者只会使 NFSv<=3 访问模型变得麻烦,但并不完整)。最后一部分才是 NFSv4 出现的主要原因。