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


615

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

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


6
到目前为止,他尝试了stackoverflow.com/questions/14059916 / ...
ott--

2
“我愿意创建一个列出Linux用户的网页”-您要解决什么问题?这听起来可能会引起一些安全问题(公开用户列表,公开凭据)。

我试图举一个简单的例子。我想打开一个“管理员系统网页以列出当前的Linux帐户名称”。在Linux中,我可以找到添加用户,删除用户,更改用户,找到给定用户组的命令,但找不到用于按名称片段搜索用户的命令。我认为这个问题不是那么无关紧要。我
唯一能记住

Answers:


871

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

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

有关更多信息-> Unix组Cut命令 sort命令


3
是的,MichaelIT是正确的groups命令未列出所有组。我之所以这样问,是因为不确定是否有一个简单的命令,例如groups来列出所有组名,甚至是一个开关,例如groups [-a | --all]来列出所有系统组而不进行文件扫描。
cavila 2012年

1
好的,所以现在的答案是“否”。需要使用文本编辑来过滤组文件。
cavila 2012年

3
什么是“ cut -d:-f1”?
zed

5
@zed cut是另一个从输入中提取特定列的命令。在这里,我提取场1其中的字段由分隔:
Arpit

267

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

getent group

原因是在联网系统上,组可能不仅从 /etc/group文件中,而且可以通过LDAP或黄页获得(已知组的列表来自本地组文件,以及在这种情况下通过LDAP或YP接收的组)。

如果只需要组名,则可以使用:

getent group | cut -d: -f1

7
对于某些用例,最好使用排序的组名列表:getent group | cut -d: -f1 | sort
user1364368 '16

2
如果需要编号的行,请执行getent group | cut -d: -f1 | sort | cat -n
MLC

对于LDAP之类的网络系统来说,这是一个好地方!
Maziyar

50

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

id -Gn

这等效groups于Unix上已废弃的实用程序(根据Unix手册)。

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

参数说明:

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

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

-p -使输出易于阅读。


10
id -Gn someusername返回指定用户的组列表。
严峻的

6
id -Gnz | xargs -0 -I% echo %将在单独的行中列出每个组。如果组名中有空格,这将很有用。
Mark Lakata '17

1
怎么groups过时了?有资料吗?我搜索“过时的unix组命令”,但未找到任何内容。
富兰克林·于

1
@FranklinYu在BSD手册页中groups
kenorb

3
Doest回答与当前用户之外的组有关的原始问题。
不然
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.