我有一台服务器 A,其已安装的卷通过 NFS 与服务器 B 和 C 共享。
如果我使用仅存在于服务器 A 上的组 Y 中的用户 X 在该卷上创建文件,那么通过 NFS 共享该文件是否会产生任何问题?如果第三方权限包括读取,服务器 B 和服务器 C 是否能够正常读取该文件?
答案1
是的,没关系。
UNIX 并不真正关心名称。对于文件权限来说,重要的是数字;当您尝试访问该文件时,它会查看您的 UID 是否匹配,然后是 GID,然后它将使用“其他”权限。只要“其他”权限包括读取,您就可以读取这些文件。
它不会检查该号码是否存在用户或组,除非您正在运行类似ls
显示用户和组名称的内容(在这种情况下,它只会显示号码)。
在我的家庭服务器上,我有许多其他计算机上不存在的 UID 和 GID; NFS 处理得很好。 FreeBSD 服务器、OpenBSD 和 Linux 客户端。
答案2
让不存在的用户拥有文件不会导致任何直接问题。就内核而言,不存在用户的概念,只有数字用户ID。就更高级别而言,特定用户 ID 可能没有与之关联的用户名,这是不寻常的,但本身并没有问题。
不存在的用户拥有的文件的风险在于,如果您创建帐户,它可能会获取该用户 ID。由于该ID没有账户,因此该ID是免费的;文件以该用户 ID 存在的事实不会影响这一点。 (如果文件位于当前未安装的可移动驱动器或网络文件系统上怎么办?操作系统将无法执行此操作。)
在您的分布式设置中,这应该没问题。服务器 B 和 C 应该配置为不使用与服务器 A 相同的用户 ID 范围,以避免与现有用户发生冲突,不拥有 A 的 NFS 共享上的文件的用户除外。