代码之家  ›  专栏  ›  技术社区  ›  Alex Argo

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

  •  220
  • Alex Argo  · 技术社区  · 17 年前

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

    4 回复  |  直到 11 年前
        1
  •  385
  •   Bombe    17 年前
    groups
    

    或

    groups user
    
        2
  •  105
  •   Paul Tomblin    13 年前

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

    id userid
    
        3
  •  18
  •   Community Mohan Dere    6 年前

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

    id -Gn [user]
    

    groups [user] 在Unix上已过时的实用程序。

    在OS X/Unix上,命令 id -p [user]

    有关参数的说明:

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

    -n --name -ugG

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

        4
  •  0
  •   Nils    17 年前

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

        5
  •  0
  •   David Buck Richard Ferris    6 年前

    下面是集成到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