如何在redhat中使用gid列出组?

kin*_*jou 47 rhel command

我首先使用以下列出了组:

groups 
Run Code Online (Sandbox Code Playgroud)

我添加了组使用

groupadd -g 300 oinstall
groupadd –g 500 dba
Run Code Online (Sandbox Code Playgroud)

然后当我做

groups 
root bin daemon sys adm disk wheel sfcb
Run Code Online (Sandbox Code Playgroud)

我找不到我添加的组。如何使用组 ID 列出组?另外,如果我尝试再次添加它,它会说组已经存在。

jor*_*anm 80

groups命令列出用户当前所属的组,而不是系统上所有可用的组。您可以使用该getent命令按名称或 gid 查找组。

getent group oinstall
getent group 500
Run Code Online (Sandbox Code Playgroud)

要显示所有组,只需将您的搜索查询放在命令之外:

getent group
Run Code Online (Sandbox Code Playgroud)

  • @kinkajou 有很多专业经验,并且在这个网站和 IRC Linux 支持等网站上花费了大量时间。大约 8 年来,我一直是专业人士和爱好者。我认为成为爱好者是很重要的一部分,因为你更有可能记住你关心的事情。 (3认同)
  • @Kitex 因为您创建了该组,但您不是该组的成员。您需要将您的用户添加到组中,然后注销并重新登录以使用 `groups` 命令显示。 (2认同)
  • @Kitex 更新了答案 (2认同)

M_d*_*_dk 9

您可以使用列出组,getent如果不存在,请查看/etc/group

运行命令时,GID 是输出中的第三个值,例如:

$ getent group
man:x:15:
audio:x:63:
nobody:x:99:
users:x:100:
<--snipped-->
utmp:x:22:
Run Code Online (Sandbox Code Playgroud)

因此,要仅列出组名及其 GID,请使用awk打印您想要的列,如下所示:

$ getent group | awk -F ":" '{ print $1,$3 }'
man 15
audio 63
nobody 99
users 100
<--snipped-->
utmp 22
Run Code Online (Sandbox Code Playgroud)

另见http://man7.org/linux/man-pages/man1/getent.1.html

getent不存在的情况下。

$ grep $group /etc/group

GID 是输出中的第三个值。例如

$ grep users /etc/group
users:x:100:
Run Code Online (Sandbox Code Playgroud)

在上面,组用户的 GID 是 100。要只获取组名和 GID,您可以像这样使用 awk 和 grep:

$ cat /etc/group | awk -F ":" '{ print $1,$3 }' 
man 15
audio 63
nobody 99
users 100
<--snipped-->
utmp 22
Run Code Online (Sandbox Code Playgroud)

请注意,对于设置为使用外部身份验证(如 LDAP)的系统,/etc/group 文件中不会出现所有组。另见http://www.cyberciti.biz/faq/understanding-etcgroup-file/

  • 组并不总是存储在`/etc/group` 中。它们可以存储在 NIS、LDAP 等中。 (6认同)
  • 不要使用 ldap 组,使用 `getent group`。 (2认同)