Linux에서 그룹의 모든 사용자를 나열하는 방법

0
116
bash 프롬프트를 표시하는 Linux 노트북
Fatmawati achmad zaenuri/Shutterstock.com

Linux에서 파일에는 세 가지 권한 집합이 있습니다. 한 세트는 파일 그룹용입니다. 그룹에 파일을 할당하기 전에 그룹 구성원이 누구인지 확인할 수 있습니다.

파일 및 디렉토리 권한

Linux의 파일 및 디렉토리에는 소유자에 대한 권한 집합, 파일이 할당된 그룹에 대한 다른 집합 및 이전 두 범주 중 하나에 속하지 않는 모든 사람에 대한 권한이 있습니다.

각 권한 집합은 해당 범주의 구성원이 파일을 읽고, 쓰고, 실행할 수 있는지 여부를 정의합니다. 디렉토리의 경우 실행 작업은 다음을 수행할 수 있는 것과 같습니다. cd 디렉토리에.

파일 또는 디렉토리의 기본 그룹은 소유자의 기본 그룹입니다. 보통 만든 사람입니다. 그룹 권한은 사용자 컬렉션이 해당 그룹의 다른 구성원의 파일 및 디렉터리에 대한 액세스를 제어할 수 있도록 하는 데 사용됩니다.

예를 들어 개발자 팀, 문서 팀, 연구 팀 등이 있을 수 있습니다. 각 팀의 구성원은 공동 작업을 돕기 위해 적절하게 명명된 그룹에 추가할 수 있습니다. 사용자는 한 번에 여러 그룹에 속할 수 있습니다.

간단하지만 강력한 계획입니다. 그러나 파일이 민감한 경우 작업을 공유하기 전에 그룹 구성원이 누구인지 확인하는 것이 더 행복할 수 있습니다. 이를 수행하는 다양한 방법이 있습니다. 하지만 참고하세요. 가장 자주 권장되는 두 가지 방법이 문제가 있습니다.

관련된: Linux에서 chgrp 명령을 사용하는 방법

/etc/groups 파일

“/etc/group” 파일에는 콜론 “:“로 구분된 그룹 및 그룹 구성원 목록입니다. 각 줄에는 4개의 필드가 있습니다.

  • 이름: 그룹의 고유한 이름입니다.
  • 비밀번호: 사용하지 않습니다. 이것은 항상 “x”를 유지합니다.
  • 그룹 ID: 고유한 그룹 식별자입니다.
  • 사용자: 그룹 구성원의 쉼표로 구분된 목록입니다. 목록은 일반적으로 시스템 및 데몬 계정에 대해 비어 있습니다.

파일 내용을 터미널 창에 덤프하려면 다음을 사용할 수 있습니다. cat하지만 다음을 사용하여 파일 내용을 스크롤할 수 있는 것이 더 편리합니다. less.

less /etc/group

cat을 사용하여 /etc/group 파일의 내용 보기

목록 맨 위에 있는 대부분의 항목에는 구성원이 없지만 “adm” 그룹에는 2개가 있고 “cdrom” 그룹에는 1개가 있습니다.

less 파일 뷰어에서 /etc/groups 파일의 첫 번째 부분

특정 사용자가 속한 그룹을 찾으려면 다음을 사용할 수 있습니다. grep 사용자 계정 이름으로 항목을 검색합니다. 이것은 우리의 과제가 아닙니다. 우리는 한 사람이 속한 그룹이 아닌 그룹의 구성원인 모든 사람을 보고 싶습니다. 그러나 살펴보는 것은 우리에게 유익합니다.

grep "dave" /etc/group

사용자 dave가 구성원인 그룹 목록

“dave” 문자열이 포함된 항목이 나열됩니다. 그리고 그들 사이에 숨어 있는 것은 일이 우리가 생각하는 것만큼 간단하지 않을 수도 있다는 신호입니다.

사용자가 Linux에 추가되면 기본 작업은 사용자 계정과 이름이 같은 그룹에 배치하는 것입니다. 이것은 그들의 일 순위 그룹. 그들이 추가되는 다른 그룹은 중고등 학년 여러 떼.

문제는 사용자가 의 구성원으로 나열되지 않는다는 것입니다. 그들의 주요 그룹. 그렇기 때문에 사용자 “dave”는 해당 그룹의 구성원이지만 “dave” 그룹에는 구성원이 표시되지 않습니다.

물론 시스템 관리자는 사용자의 기본 그룹을 다른 그룹의 기본 그룹으로 변경할 수 있습니다. 즉, 사용자는 모든 그룹의 구성원이 될 수 있지만 “/etc/group” 파일에 나열되지 않습니다. 한 가지 문제입니다.

두 번째 문제는 “/etc/group” 파일이 단일 출처가 아니라는 것입니다. 최신 Linux 설치는 “/etc/passwd” 및 “/etc/group”보다 더 많은 위치에 사용자 및 그룹 정보를 저장할 수 있습니다. 특히 Lightweight Directory Access Protocol과 같은 서비스가 배포되는 기업 상황에서는 더욱 그렇습니다. 한 곳만 보면 큰 그림을 볼 수 없을 수도 있습니다.

테스트 시나리오에서는 개발 부서에 대해 4개의 그룹을 만들었습니다. 그들은:

  • 재증명: 연구팀.
  • 개발팀: 개발팀.
  • pvq 팀: 제품검증 및 품질팀.
  • 독팀: 문서 팀.

우리는 이 팀에 사람들을 추가했습니다. 어떤 사람들은 하나 이상의 팀에 있습니다. “/etc/group” 파일을 열면 less 파일 맨 아래로 스크롤하면 새 그룹과 그룹 구성원이 표시됩니다. 최소한 “/etc/group” 파일만큼 많은 구성원이 알고 있습니다.

less 파일 뷰어의 /etc/group 파일 하단

단일 그룹을 추출하려면 다음을 사용하여 검색할 수 있습니다. grep. 캐럿 “^“는 줄의 시작을 나타냅니다.

grep "^devteam" /etc/group

grep을 사용하여 단일 그룹의 구성원 추출

이렇게 하면 파일에서 “devteam” 항목이 추출되고 모든 그룹 구성원이 나열됩니다. 아니면 합니까?

getent 명령

그만큼 getent 명령은 “/etc/group”뿐만 아니라 여러 데이터베이스에서 사용자 그룹 정보를 확인합니다. 우리는 사용할 것입니다 getent 사용자 그룹을 보여줍니다.

getent group

getent를 사용하여 정의된 모든 그룹 나열

사용 getent 이랑 group 이 테스트 시스템에서 옵션은 “/etc/group” 파일을 사용하는 것과 동일한 결과를 생성합니다. LDAP 또는 기타 중앙 집중식 이름 지정 서비스를 사용하지 않기 때문입니다. 그래서 다른 출처가 없다. getent 참고로.

그룹 및 구성원을 보여주는 getent 그룹의 출력

그렇다면 결과가 “/etc/group” 파일의 결과와 합산된다는 것은 놀라운 일이 아닙니다. 아마도 우리가 실제로 보고 있는 것이 상황의 현실일 것입니다. 어쩌면 모든 것이 간단하고 이 컴퓨터에서 보는 것이 당신이 얻는 것입니까? 그것에 대해서는 판단을 유보합시다.

그만큼 getent 명령은 우리를 위해 단일 그룹을 볼 수 있습니다. “devteam” 그룹을 살펴보겠습니다.

getent group devteam

getent 그룹을 사용하여 단일 그룹의 세부 정보 추출

우리는 이전과 정확히 동일한 결과를 얻습니다. 하지만 더 깊이 파고드는 방법이 있습니다.

관련된: Linux에서 사용자를 나열하는 방법

뚜껑 명령

그만큼 lid 명령은 일부입니다 libuser 도구 모음. Fedora 36 테스트 컴퓨터에 이미 설치되었지만 Ubuntu 22.04 및 Manjaro 21 컴퓨터에 설치해야 했습니다.

또한 명령은 lid Fedora 및 Manjaro에서는 하지만 Ubuntu에서는 다음을 사용해야 합니다. libuser-lid.

Ubuntu에 명령을 설치하려면 다음을 입력하십시오.

sudo apt install libuser

우분투에 libuser 설치

만자로에서, libuser AUR에서 설치되므로 좋아하는 AUR 도우미를 사용해야 합니다. 우리는 사용했었다 yay.

yay libuser

Manjaro에 libuser 설치

당신이 사용할 수있는 libuser-lid 그룹 또는 사용자에 대한 그룹 정보를 표시합니다. 개인이 속한 그룹을 표시하려면 명령줄에 사용자 계정 이름을 전달합니다. Fedora 및 Manjaro에서 사용하는 것을 기억하십시오. lid 대신에 libuser-lid.

sudo libuser-lib dave

libuser-lid를 사용하여 사용자 dave가 구성원인 그룹 표시

그룹의 구성원을 보려면 다음을 사용하십시오. -g (그룹) 옵션을 그룹 이름과 함께 사용합니다.

sudo libuser-lid -g devteam

libuser-lid를 사용하여 devteam 그룹의 구성원 나열

보라, “프랜시스”라는 사용자가 목록의 구성원으로 나타났습니다. 우리가 그를 본 것은 이번이 처음입니다. 그는 “/etc/group”에 나열되지 않으며 getent 그를 발견하지도 못했다.

다음과 같은 몇 가지 사용자를 살펴보겠습니다. groups 명령.

groups abigail
groups hayden
groups francis

선택한 사용자에 대해 groups 명령 사용

  • 사용자 “abigail”은 “abigail”이라는 그룹과 “resteam” 및 “devteam”이라는 다른 두 그룹에 속해 있습니다.
  • 사용자 “hayden”은 “hayden”이라는 그룹과 “pvqteam” 및 “docteam”이라는 두 개의 다른 그룹에 있습니다.
  • 사용자 “francis”는 단일 그룹인 “devteam” 그룹에 있습니다. 주목할 만하다. ~ 아니다 “프랜시스”라는 그룹에서.
Linux에서 그룹(또는 두 번째 그룹)에 사용자 추가

관련된Linux에서 그룹(또는 두 번째 그룹)에 사용자 추가

모든 사용자는 기본 그룹의 구성원이어야 하며 기본적으로 기본 그룹에는 사용자의 UID 및 계정 이름과 일치하는 GID 및 이름이 있습니다. 사용자 “프랜시스”에 대해 뭔가 다른 것이 있는 것으로 보입니다.

사용하자 id 명령을 실행하고 UID와 GID가 알려주는 내용을 확인하세요.

id abigail
id francis

사용자 abigail 및 francis에서 id 명령 사용

사용자 “abigail”은 UID가 1002이고 GID가 1002입니다. 이들은 세 그룹에 속하며 그 중 하나는 “abigail”입니다. 그것은 1002의 GID를 가지고 있습니다. 이것은 그들의 기본 기본 그룹.

사용자 “francis”는 “devteam” 그룹의 GID와 일치하는 1019의 GID를 갖습니다. 이 사용자에게 새 기본 그룹이 할당되었거나 이 사용자가 시스템에 추가될 때 “devteam” 그룹이 기본 그룹으로 설정되었습니다.

어느 쪽이든, 오직 libuser-lid 발견하고 “devteam”그룹에 존재한다고 보고했습니다.

악마의 세부 사항

따라서 실제 세부 사항을 보는 것이 중요합니다.

그룹은 공동 작업을 시작할 사람을 알고 있는 한 공동 작업을 설정하는 좋은 방법입니다.

관련된: Linux에서 chfn 및 usermod를 사용하여 사용자 데이터를 변경하는 방법