如何找出给定用户的组?

时间:2008-12-08 16:53:19

标签: linux unix command-line sysadmin

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

5 个答案:

答案 0 :(得分:346)

groups

groups user

答案 1 :(得分:98)

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

id userid

答案 2 :(得分:14)

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

id -Gn [user]

相当于已在Unix上废弃的groups [user]实用程序。

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

参数说明:

  

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

     

-n--name - 为-ugG

打印名称而不是数字      

-p - 使输出具有人类可读性。

答案 3 :(得分:0)

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

答案 4 :(得分: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