是否有列出所有 Unix 组名的命令? [关闭]

Posted

技术标签:

【中文标题】是否有列出所有 Unix 组名的命令? [关闭]【英文标题】:Is there a command to list all Unix group names? [closed] 【发布时间】:2012-12-13 03:39:39 【问题描述】:

我知道有列出所有用户组的/etc/group 文件。

我想知道是否有一个简单的命令可以列出所有用户组名称,尽管解析了世界可读的/etc/group 文件。我愿意创建一个列出 Linux 帐户组名的管理员网页。

【问题讨论】:

到目前为止他尝试了***.com/questions/14059916/… “我愿意创建一个列出 Linux 用户的网页”——你想解决什么问题?这听起来可能会导致一些安全问题(暴露用户列表、暴露凭据)。 我试图举一个简单的例子。我想打开一个“管理员系统网页以列出当前 Linux 帐户名称”。在 Linux 中,我可以找到添加用户、删除用户、更改用户、查找给定用户的组的命令,但没有找到按名称片段搜索用户的命令。我认为这个问题并不是那么无关紧要。为了记住 Linux 组帐户,我所能做的就是查找 /etc/group 文件 类似:How do you find out what group a given user is in via command line? 【参考方案1】:

如果您希望系统知道所有组,我建议使用getent group 而不是解析/etc/group

getent group

原因是在联网的系统上,组不仅可以从/etc/group文件中读取,还可以通过LDAP或者Yellow Pages获得(已知组的列表来自本地组文件加上通过LDAP或者YP接收到的组)这些情况)。

如果您只需要可以使用的组名:

getent group | cut -d: -f1

【讨论】:

对于某些用例,组名的排序列表可能更可取:getent group | cut -d: -f1 | sort 如果需要编号的行,请执行getent group | cut -d: -f1 | sort | cat -n 适用于 LDAP 等联网系统! @dasup 你知道如何创建在联网系统的情况下只分配本地组而不是来自 LDAP 的 ID。【参考方案2】:

要列出所有已分配用户的本地组,请使用以下命令:

cut -d: -f1 /etc/group | sort

更多信息-> Unix groups, Cut command, sort command

【讨论】:

是的 MichaelIT 是对的,groups 命令没有列出所有组。我问这个是因为不确定是否有一个简单的命令,比如 groups 来列出所有组名,或者甚至像 groups [-a|--all] 这样的开关来列出所有系统组而不进行文件扫描。 好的,所以现在答案是否定的。需要使用文本编辑来过滤组文件。 什么是“cut -d: -f1”? @zed cut 是另一个从输入中提取特定列的命令。在这里,我正在提取字段 1,其中字段由 : 分隔【参考方案3】:

在 Linux、macOS 和 Unix 上显示您所属的组,请使用:

id -Gn

相当于groups 实用程序已在 Unix 上过时(根据Unix manual)。

在 macOS 和 Unix 上,建议使用命令 id -p 进行正常交互。

参数说明:

-G, --groups - 打印所有组 ID

-n, --name - 打印名称而不是数字,对于 -ugG

-p - 使输出可读。

【讨论】:

id -Gn someusername返回指定用户的组列表。 id -Gnz | xargs -0 -I% echo % 将在单独的行上列出每个组。如果组名中有空格,这很有用。 groups 怎么过时了?有什么来源吗?我搜索了“unix groups command obsolete”但没有找到任何东西。 @FranklinYu 在BSD manual page for groups 是否回答与当前用户以外的组有关的原始问题。

以上是关于是否有列出所有 Unix 组名的命令? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在 Unix/Linux 中将文件移动到不同目录所需的权限 [关闭]

如何在 Go 中列出所有匹配的进程? [关闭]

chown命令

按主机名的 IPv6 地址 [关闭]

如何在linux系统下建立组名sysadm操作命令

chown命令详解