对于 NFS 共享,root 的补充组的行为是否与常规帐户的行为不同?

对于 NFS 共享,root 的补充组的行为是否与常规帐户的行为不同?

操作系统:Linux CentOS 7、NFSv4

在一台机器上,我导出了一个 NFS 共享组,该组的所有者是国家金融服务集团拥有 2770 个小组协作权限:

groupadd -g 5000 nfsgroup
chown nobody:nfsgroup /home/groupshare
chmod 2770 /home/groupshare

然后,在另一台计算机上添加相同的组并将其分配给 root 用户。然后,我尝试访问已安装的 NFS 共享并收到“权限被拒绝”错误:

groupadd -g 5000 nfsgroup
usermod -a -G nfsgroup root
ls -l /mnt/groupshare       # Permission denied!

注意:为此,我尝试以 root 身份重新登录,甚至重新启动计算机,结果是相同的:权限被拒绝。

然后我对常规帐户(名为用户)并且没有访问问题

usermod -a -G nfsgroup user
su - user
ls -l /mnt/groupshare      # Works as expected, no permission errors

我可以访问根目录下共享的唯一方法是更改​​有效组(尽管有补充国家金融服务集团有没有):

su - root
newgrp nfsgroup
ls -l /mnt/groupshare     # No permission errors

我发现这种行为不一致且奇怪。有人可以解释为什么它会这样吗?

一条可能在某种程度上相关的信息如下。两者id(下用户account)并id user返回相同的输出,特别是组=1000(用户),5000(nfs组),而id(下帐户)产生组=0(根)id root输出,正如预期的那样,组=0(根),5000(nfsgroup)

答案1

我想我找到了导致问题的原因。当NFS客户端访问NFS共享时,服务器会检查访问用户的UID和GID。默认情况下,NFS 服务器启用了root_squash选项,该选项为以 root 身份访问共享的 NFS 客户端分配 UID/GID无人值守

在我将选项添加no_root_squash到文件导出后/etc/exports,问题就消失了。

显然,当 NFS 服务器“压缩”根的 UID/GID 时,它完全忽略补充组(对我来说似乎是错误的,但可能 NFSv4 标准的想法不同)。

相关内容