在exports(5)手册页的“用户ID映射”部分中,它说:
用户 ID 映射
...
通常,在访问 NFS 服务器上的文件时,不希望客户端计算机上的 root 用户也被视为 root 用户。为此,uid 0 通常会映射到不同的 id:所谓的匿名或
nobody
uid。这种操作模式(称为“根挤压”)是默认模式,可以使用 关闭no_root_squash
。...
以下是映射选项的完整列表:
- 根南瓜
- 将请求从 uid/gid 0 映射到匿名 uid/gid。请注意,这不适用于可能同样敏感的任何其他 uid 或 gid,例如 user
bin
或 groupstaff
。
- 无根南瓜
- 关闭根挤压。此选项主要对无盘客户端有用。
- 全部南瓜
- 将所有 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(不确定) |
no_all_squash
选项的总结正确吗?如果有的话什么时候有用?root_squash
,而no_all_squash
声明本身在选项解释中默认。先感谢您!
在虚拟环境中设置一对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 出现的主要原因。