특정 사용자의 그룹을 찾는 방법은 무엇입니까?


256

유닉스 / 리눅스에서 명령 행을 통해 특정 사용자가 어떤 그룹에 속하는지 어떻게 알 수 있습니까?


23
반대편을 얻으려면 주어진 그룹에 누가 있는지 확인하십시오 getent group <groupname>.
iconoclast

1
@iconoclast : / etc / passwd에서 그룹에 속한 사용자를 나열하지 않습니다.
user2284570

답변:



102

이것은 사용자의 uid와 그들이 속한 모든 그룹 (자녀들과 함께)을 보여줍니다

id userid

2
이것은 꽤 유용한 것으로 보입니다. 'groups'명령보다 더 자세한 출력이 있으므로 그룹 ID / 사용자 ID가 필요한 경우 이것을 사용하십시오!
Alex Argo

이것은 가장 상세하고 정답이어야합니다.
Harvey Lin

16

Linux / OS X / Unix에서 사용자 (또는 선택적으로 지정된 사용자)가 속한 그룹을 표시하려면 다음을 사용하십시오.

id -Gn [user]

이것은 groups [user]유닉스에서 폐기 된 유틸리티 와 같습니다 .

OS X / Unix에서 명령 id -p [user]은 일반 대화식으로 제안됩니다.

매개 변수에 대한 설명 :

-G, --groups-모든 그룹 ID를 인쇄

-n, --name-숫자 대신 이름을 인쇄하십시오.-ugG

-p -출력을 사람이 읽을 수있게 만드십시오.


0

또는 / etc / groups를 연구하십시오 (ldap과 함께 pam을 사용하면 작동하지 않을 것입니다)


7
실제로, 그것은 나쁜 대답입니다. 'getent group'이 더 좋습니다.
bortzmeyer

0

아래는 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
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.