266

在 Unix/Linux 中,如何通过命令行找出给定用户所在的组?

4

5 回答 5

386
groups

或者

groups user
于 2008-12-08T16:54:28.020 回答
105

这个显示了用户的 uid 以及他们所属的所有组(及其 gid)

id userid
于 2008-12-08T16:54:28.643 回答
18

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

id -Gn [user]

这相当于groups [user]在 Unix 上已经过时的实用程序。

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

参数说明:

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

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

-p- 使输出可读。

于 2015-04-13T22:02:42.020 回答
0

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

于 2008-12-08T17:14:25.780 回答
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
于 2020-05-04T13:51:58.033 回答