Linux에서 그룹의 모든 사용자를 나열하는 방법
게시 됨: 2022-08-29Linux에서 파일에는 세 가지 권한 집합이 있습니다. 한 세트는 파일 그룹용입니다. 그룹에 파일을 할당하기 전에 그룹 구성원이 누구인지 확인할 수 있습니다.
파일 및 디렉토리 권한
Linux의 파일 및 디렉토리에는 소유자에 대한 권한 집합, 파일이 할당된 그룹에 대한 다른 집합 및 이전 두 범주 중 하나에 속하지 않는 모든 사람에 대한 권한이 있습니다.
각 권한 집합은 해당 범주의 구성원이 파일을 읽고, 쓰고, 실행할 수 있는지 여부를 정의합니다. 디렉터리의 경우 실행 작업은 디렉터리로 cd
할 수 있는 것과 같습니다.
파일 또는 디렉토리의 기본 그룹은 소유자의 기본 그룹입니다. 보통 만든 사람입니다. 그룹 권한은 사용자 컬렉션이 해당 그룹의 다른 구성원의 파일 및 디렉터리에 대한 액세스를 제어할 수 있도록 하는 데 사용됩니다.
예를 들어 개발자 팀, 문서 팀, 연구 팀 등이 있을 수 있습니다. 각 팀의 구성원은 공동 작업을 돕기 위해 적절하게 명명된 그룹에 추가할 수 있습니다. 사용자는 한 번에 여러 그룹에 속할 수 있습니다.
간단하지만 강력한 계획입니다. 그러나 파일이 민감한 경우 작업을 공유하기 전에 그룹 구성원이 누구인지 확인하는 것이 더 행복할 수 있습니다. 이를 수행하는 여러 가지 방법이 있습니다. 하지만 참고하세요. 가장 자주 권장되는 두 가지 방법이 문제가 있습니다.
관련: Linux에서 chgrp 명령을 사용하는 방법
/etc/groups 파일
"/etc/group" 파일에는 콜론 " :
"으로 구분된 그룹 및 그룹 구성원 목록이 포함되어 있습니다. 각 줄에는 4개의 필드가 있습니다.
- 이름 : 그룹의 고유한 이름입니다.
- 비밀번호 : 사용하지 않습니다. 이것은 항상 "x"를 유지합니다.
- 그룹 ID : 고유한 그룹 식별자입니다.
- 사용자 : 그룹 구성원의 쉼표로 구분된 목록입니다. 목록은 일반적으로 시스템 및 데몬 계정에 대해 비어 있습니다.
파일 내용을 터미널 창에 덤프하려면 cat
을 사용할 수 있지만 less
로 파일 내용을 스크롤할 수 있는 것이 더 편리합니다.
적은 /etc/group
목록 맨 위에 있는 대부분의 항목에는 구성원이 없지만 "adm" 그룹에는 2개가 있고 "cdrom" 그룹에는 1개가 있습니다.
특정 사용자가 속한 그룹을 찾으려면 grep
을 사용하여 해당 사용자 계정 이름으로 항목을 검색할 수 있습니다. 이것은 우리의 과제가 아닙니다. 우리는 한 사람이 속한 그룹이 아닌 그룹의 구성원인 모든 사람을 보고 싶습니다. 그러나 살펴보는 것은 우리에게 유익합니다.
grep "데이브" /etc/group
"dave" 문자열이 포함된 항목이 나열됩니다. 그리고 그들 사이에 숨어 있는 것은 일이 우리가 생각하는 것만큼 간단하지 않을 수도 있다는 신호입니다.
사용자가 Linux에 추가되면 기본 작업은 사용자 계정과 이름이 같은 그룹에 배치하는 것입니다. 이것은 그들의 기본 그룹입니다. 추가된 다른 그룹을 보조 그룹이라고 합니다.
문제는 사용자가 기본 그룹 의 구성원으로 나열되지 않는다는 것입니다. 그렇기 때문에 사용자 "dave"는 해당 그룹의 구성원이지만 "dave" 그룹에는 구성원이 표시되지 않습니다.
물론 시스템 관리자는 사용자의 기본 그룹을 다른 그룹의 기본 그룹으로 변경할 수 있습니다. 즉, 사용자는 모든 그룹의 구성원이 될 수 있지만 "/etc/group" 파일에 나열되지 않습니다. 한 가지 문제입니다.
두 번째 문제는 "/etc/group" 파일이 단일 출처가 아니라는 것입니다. 최신 Linux 설치는 특히 Lightweight Directory Access Protocol과 같은 서비스가 배포되는 기업 상황에서 "/etc/passwd" 및 "/etc/group"보다 더 많은 위치에 사용자 및 그룹 정보를 저장할 수 있습니다. 한 곳만 보면 큰 그림을 볼 수 없을 수도 있습니다.
테스트 시나리오에서는 개발 부서에 대해 4개의 그룹을 만들었습니다. 그들은:
- resteam : 연구팀.
- devteam : 개발팀.
- pvqteam : 제품 검증 및 품질 팀.
- docteam : 문서 팀.
우리는 이 팀에 사람들을 추가했습니다. 어떤 사람들은 하나 이상의 팀에 있습니다. less
에서 "/etc/group" 파일을 열고 파일 맨 아래로 스크롤하면 새 그룹과 그룹 구성원이 표시됩니다. 최소한 "/etc/group" 파일만큼 많은 구성원이 알고 있습니다.
단일 그룹을 추출하려면 grep
을 사용하여 검색할 수 있습니다. 캐럿 " ^
"은 줄의 시작을 나타냅니다.
grep "^devteam" /etc/group
이렇게 하면 파일에서 "devteam" 항목이 추출되고 모든 그룹 구성원이 나열됩니다. 아니면 합니까?
getent 명령
getent
명령은 "/etc/group"뿐만 아니라 여러 데이터베이스에서 사용자 그룹 정보를 확인합니다. getent
를 사용하여 사용자 그룹을 표시합니다.
getent 그룹
이 테스트 시스템에서 getent
를 group
옵션과 함께 사용하면 "/etc/group" 파일을 사용하는 것과 동일한 결과가 생성됩니다. LDAP 또는 기타 중앙 집중식 이름 지정 서비스를 사용하지 않기 때문입니다. 따라서 getent
가 참조할 다른 소스가 없습니다.
그렇다면 결과가 "/etc/group" 파일의 결과와 합산된다는 것은 놀라운 일이 아닙니다. 아마도 우리가 실제로 보고 있는 것이 상황의 현실일 것입니다. 어쩌면 모든 것이 간단하고 이 컴퓨터에서 보는 것이 당신이 얻는 것입니까? 그것에 대해서는 판단을 유보합시다.
getent
명령은 우리를 위해 단일 그룹을 볼 수 있습니다. "devteam" 그룹을 살펴보겠습니다.
getent 그룹 개발팀
우리는 이전과 정확히 동일한 결과를 얻습니다. 하지만 더 깊이 파고드는 방법이 있습니다.
관련: Linux에서 사용자를 나열하는 방법
뚜껑 명령
lid
명령은 libuser
도구 모음의 일부입니다. Fedora 36 테스트 컴퓨터에 이미 설치되었지만 Ubuntu 22.04 및 Manjaro 21 컴퓨터에 설치해야 했습니다.
또한 명령은 Fedora와 Manjaro에서는 lid
라고 하지만 Ubuntu에서는 libuser-lid
를 사용해야 합니다.
Ubuntu에 명령을 설치하려면 다음을 입력하십시오.
sudo apt 설치 libuser
Manjaro에서 libuser
는 AUR에서 설치되므로 좋아하는 AUR 도우미를 사용해야 합니다. 우리는 예를 사용 yay
.
야 리바이저
libuser-lid
를 사용하여 그룹 또는 사용자에 대한 그룹 정보를 표시할 수 있습니다. 개인이 속한 그룹을 표시하려면 명령줄에 사용자 계정 이름을 전달합니다. Fedora와 Manjaro에서는 libuser-lid
lid
에 뚜껑을 사용하는 것을 잊지 마십시오.
sudo libuser-lib 데이브
그룹의 구성원을 보려면 그룹 이름과 함께 -g
(그룹) 옵션을 사용합니다.
sudo libuser-lid -g devteam
보라, "프랜시스"라는 사용자가 목록의 구성원으로 나타났습니다. 우리가 그를 본 것은 이번이 처음입니다. 그는 "/etc/group"에 나열되어 있지 않으며 getent
도 그를 발견하지 못했습니다.
groups
명령을 사용하는 몇 명의 사용자를 살펴보겠습니다.
그룹 아비가일
그룹 헤이든
그룹 프란시스
- 사용자 "abigail"은 "abigail"이라는 그룹과 "resteam" 및 "devteam"이라는 다른 두 그룹에 속해 있습니다.
- 사용자 "hayden"은 "hayden"이라는 그룹과 "pvqteam" 및 "docteam"이라는 두 개의 다른 그룹에 있습니다.
- 사용자 "francis"는 단일 그룹인 "devteam" 그룹에 있습니다. '프란시스'라는 그룹에 속하지 않는다는 점은 주목할 만하다.
모든 사용자는 기본 그룹의 구성원이어야 하며 기본적으로 기본 그룹에는 사용자의 UID 및 계정 이름과 일치하는 GID 및 이름이 있습니다. 사용자 "프랜시스"에 대해 뭔가 다른 것이 있는 것으로 보입니다.
id
명령을 사용하여 UID와 GID가 알려주는 내용을 살펴보겠습니다.
이드 아비게일
이드 프란시스
사용자 "abigail"은 UID가 1002이고 GID가 1002입니다. 이들은 세 그룹에 속하며 그 중 하나는 "abigail"입니다. GID는 1002입니다. 이것은 기본 기본 그룹입니다.
사용자 "francis"는 "devteam" 그룹의 GID와 일치하는 1019의 GID를 갖습니다. 이 사용자는 새 기본 그룹에 할당되었거나 이 사용자가 시스템에 추가될 때 "devteam" 그룹이 기본 그룹으로 설정되었습니다.
그것이 무엇이든 libuser-lid
만이 그것들을 감지하고 "devteam" 그룹에 존재한다고 보고했습니다.
악마의 세부 사항
따라서 실제 세부 사항을 보는 것이 중요합니다.
그룹은 공동 작업을 시작할 사람을 알고 있는 한 공동 작업을 설정하는 좋은 방법입니다.
관련: Linux에서 chfn 및 usermod를 사용하여 사용자 데이터를 변경하는 방법