是否有列出所有 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”? @zedcut
是另一个从输入中提取特定列的命令。在这里,我正在提取字段 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 组名的命令? [关闭]的主要内容,如果未能解决你的问题,请参考以下文章