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

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

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

【问题讨论】:

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

标签: linux


【解决方案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
  • 是否回答与当前用户以外的组有关的原始问题。
猜你喜欢
  • 2014-01-13
  • 2016-05-18
  • 1970-01-01
  • 2014-02-26
  • 2011-11-11
  • 2010-11-17
  • 1970-01-01
  • 1970-01-01
  • 2011-04-17
相关资源
最近更新 更多