Is there a command to list all Unix group names?
我知道有一个/etc/group文件列出了所有用户组。
我想知道是否有一个简单的命令来列出所有用户组名称,尽管要解析世界可读的/etc/group文件。我愿意创建一个列出Linux帐户组名的管理员网页。
- 到目前为止,他尝试了stackoverflow.com/questions/14059916/…
- "我愿意创建一个列出Linux用户的网页"-您想解决什么问题?这听起来可能会导致一些安全问题(公开用户列表、公开凭据)。
- 我想举个简单的例子。我想打开一个"管理员系统网页,列出当前Linux帐户名"。在Linux中,我可以找到添加用户、删除用户、更改用户、查找给定用户组的命令,但没有找到按名称片段搜索用户的命令。我认为这个问题并不那么无关紧要。我唯一能做的就是在/etc/group文件上查找Linux组帐户。
- 类似:如何通过命令行找出给定用户所属的组?
你试过这个命令吗
用于整个组列表
1
| cut -d: -f1 /etc/group | sort |
更多信息->UNIX组,切割命令,排序命令
- 是的,michaelit是对的。groups命令没有列出所有组。我之所以这样问是因为不确定是否有一个简单的命令,比如groups来列出所有组的名称,或者甚至是像groups一样的swith来列出所有系统组,而不进行文件扫描。
- 好的,现在答案是"否"。需要使用文本编辑来过滤组文件。
- 什么是"Cut-D:-F1"?
- @zed cut是从输入中提取特定列的另一个命令。这里我提取字段1,其中字段由:分隔。
如果您希望系统了解所有组,我建议使用getent,而不是解析/etc/group。在联网系统上,组不仅可以读取/etc/group文件,还可以通过LDAP或黄页获取,即已知组的列表来自本地组文件加上通过LDAP或YP接收的组。
getent group将以/etc/group文件使用的相同格式为您提供所有组的列表。
如果您只需要组名,那么getent group | cut -d: -f1将完成该任务(与上面相同)。
- 对于某些使用情况,可能更倾向于使用已排序的组名列表:getent group | cut -d: -f1 | sort。
- 如果需要编号行,则执行getent group | cut -d: -f1 | sort | cat -n。
- 对于像LDAP这样的网络化系统来说是一个很好的选择!
在Linux、MacOS和Unix上,要显示您所属的组,请使用:
相当于在Unix上被废弃的groups实用程序(根据Unix手册)。
在MacOS和Unix上,建议使用命令id -p进行正常交互。
参数说明:
-G, --groups - print all group IDs
-n, --name - print a name instead of a number, for -ugG
-p - Make the output human-readable.
- id -Gn someusername返回指定用户的组列表。
- id -Gnz | xargs -0 -I% echo %将在单独的行上列出每个组。如果组名中有空格,这很有用。
- groups是如何过时的?有什么消息来源吗?我搜索了"unix groups command obsolete",但没有找到任何内容。
- @Franklinyu在groups的BSD手册页上。
- 不回答与当前用户以外的组有关的原始问题。