为什么Linux中的“id”命令会显示同一个组两次?

为什么Linux中的“id”命令会显示同一个组两次?

由于某种原因,当我在探索 Linux 用户和组时,id我在高山容器提供以下内容:

# id botmyaccount
uid=10001(botmyaccount) gid=10001(botmyaccount) groups=10001(botmyaccount),10001(botmyaccount)

这让我很困惑,因为组列表中似乎有一个重复的botmyaccount组(与创建的用户同名)。发生了什么?这是否涉及用户的补充组与主要组,尽管我认为“gid”和“groups”列表之间已经进行了区分?

botmyaccount组仅出现在 内的单个条目中/etc/group/。运行后,所有内容如下:

addgroup botmyaccount -g 10001
adduser botmyaccount -u 10001 -G botmyaccount

谢谢!

答案1

因为您使用了-G(而不是-g),它会添加botmyaccount到用户的补充组列表中(而不是将其设置为其主要组)。

由于是隐含的(有关详细信息,-g botmyaccount请参阅的手册页)并列出用户的主要组和补充组,因此您会看到两个。addusergroups=botmyaccount

答案2

在内部id调用 Gnulib 函数mgetgroups其文档写道:

如果GID不为-1,则先存储它。

真正的魔法发生在另一个函数中。

因此,即使id手册页中没有记录,这实际上是明确定义的行为。

相关内容