在Unix/Linux中,如何通过命令行找到给定用户所在的组?
groups
或
groups user
这个显示了用户的uid以及他们所属的所有组(及其gid)
id userid
或者只是研究/etc/groups(好吧,这可能不工作,如果它使用PAM与ldap)
在Linux/OS X/Unix上显示你(或可选指定的用户)所属的组,使用:
id -Gn [user]
它等价于groups [user]实用程序,在Unix上已经被淘汰了。
groups [user]
在OS X/Unix上,建议使用id -p [user]命令进行正常交互。
id -p [user]
参数说明:
-G, --groups -打印所有组id -n, --name -为-ugG打印一个名称而不是一个数字 -p -使输出可读。
-G, --groups -打印所有组id
-G
--groups
-n, --name -为-ugG打印一个名称而不是一个数字
-n
--name
-ugG
-p -使输出可读。
-p
下面是集成到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