如何找出给定用户所属的组?


Answers:



102

此页面显示用户的uid以及他们所属的所有组(及其gid)

id userid

2
这似乎也非常有用。它的输出比'groups'命令更为详细,因此,如果您需要组ID /用户ID,请使用此命令!
亚历克斯·阿戈

这应该是最详细,最正确的答案,敬请期待!
哈维·林

16

在Linux / OS X / Unix上,要显示您(或可选的指定用户)所属的组,请使用:

id -Gn [user]

这等效于groups [user]在Unix上已废弃的实用程序。

在OS X / Unix上,id -p [user]建议使用此命令进行普通交互。

参数说明:

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

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

-p -使输出易于阅读。


0

或只是研究/ etc / groups(好吧,如果它与ldap一起使用pam,这可能不起作用)


7
确实,这是一个错误的答案。“ getent小组”是一个更好的小组。
bortzmeyer

0

以下是脚本,该脚本已集成到ansible并以CSV格式生成仪表板。

sh collection.sh

#!/bin/bash

HOSTNAME=`hostname -s`

for i in `cat /etc/passwd| grep -vE "nologin|shutd|hal|sync|root|false"|awk -F':' '{print$1}' | sed 's/[[:space:]]/,/g'`; do groups $i; done|sed s/\:/\,/g|tr -d ' '|sed -e "s/^/$HOSTNAME,/"> /tmp/"$HOSTNAME"_inventory.txt

sudo cat /etc/sudoers| grep -v "^#"|awk '{print $1}'|grep -v Defaults|sed '/^$/d;s/[[:blank:]]//g'>/tmp/"$HOSTNAME"_sudo.txt

paste -d , /tmp/"$HOSTNAME"_inventory.txt /tmp/"$HOSTNAME"_sudo.txt|sed 's/,[[:blank:]]*$//g' >/tmp/"$HOSTNAME"_inventory_users.txt

我的输出存储在下面的文本文件中。

cat /tmp/ANSIBLENODE_sudo.txt
cat /tmp/ANSIBLENODE_inventory.txt
cat /tmp/ANSIBLENODE_inventory_users.txt
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.