如何获取用户的主要组?

如何获取用户的主要组?

以下命令将列出所有组someUser(主要组和补充组):

groups someUser

但有没有办法只获取主要组呢?

答案1

参见 FreeBSD手册(信息也适用于 Linux):

组 ID (GID)

组 ID (GID) 是用于唯一标识用户所属的主要组的数字。组是一种根据用户的 GID 而不是 UID 来控制对资源的访问的机制。这可以显着减少某些配置文件的大小,并允许用户成为多个组的成员。建议使用 65535 或更低的 GID,因为较高的 GID 可能会破坏某些软件。

如果是这样,运行id <username>将显示gid=<primary group>

id <username>
uid=1000(<username>) gid=1000(<username>) groups=1000(<username>),4(adm),24(cdrom),27(sudo)

如果您希望命令仅返回主要组名称,请参阅man id

   -g, --group
          print only the effective group ID

   -G, --groups
          print all group IDs

   -n, --name
          print a name instead of a number, for -ugG

所以,id -gn <username>应该给你你想要的。

答案2

由于groups <username>将首先列出用户的主要组,因此您可以使用以下命令仅提取指定用户的主要组:

groups <username> | awk '{print $3}'

相关内容