Linux에서 사용자를 나열하는 방법

게시 됨: 2022-06-25
bash 프롬프트를 표시하는 Linux 노트북
Fatmawati achmad zaenuri/Shutterstock.com

Linux는 다중 사용자 운영 체제이므로 수많은 사용자 계정을 쉽게 생성할 수 있습니다. 시간이 지나면서 어떤 계정이 필요한지 잊어버리기 쉽습니다. 사용자 계정을 나열하면 계정을 관리하는 데 도움이 됩니다.

사용자 계정

기술의 발전은 종종 자체적으로 새로운 문제를 가져옵니다. 컴퓨터가 여러 사용자를 지원할 수 있게 되자 각 사람의 작업을 다른 모든 사람과 차단하고 캡슐화해야 할 필요성이 분명해졌습니다. 이것은 사용자 계정의 개념으로 이어졌습니다. 각 사용자는 이름이 지정된 ID와 암호를 가지고 있습니다. 다음은 계정에 로그인할 수 있는 자격 증명입니다. 그들의 파일은 각 사용자에게만 제공되는 영역에 보관됩니다.

바쁜 시스템에서는 생성한 계정과 더 이상 필요하지 않은 계정을 놓치기 쉽습니다. 보안 관점에서 더 이상 구성할 필요가 없고 컴퓨터에서 액세스할 수 있는 사용자 계정을 유지하는 것은 좋지 않습니다. 해당 사용자를 제거해야 합니다.

컴퓨터를 사용하는 다른 사람이 없더라도 컴퓨터를 사용하는 방법을 배우거나 관리 프로세스를 배우고 연습하기 위해 일부 계정을 만들었을 수 있습니다.

Linux에서 사용자를 삭제하고 모든 추적을 제거하는 방법
관련 Linux에서 사용자를 삭제하고 모든 추적을 제거하는 방법

첫 번째 단계는 컴퓨터에 구성된 사용자 계정을 나열하는 것입니다. 이를 통해 검토하고 삭제할 수 있는 판단을 내릴 수 있습니다. 사용자를 나열하는 방법에는 여러 가지가 있습니다. 어떤 배포판을 사용하든 이러한 기술은 응용 프로그램이나 유틸리티를 설치할 필요 없이 작동합니다.

cat 명령으로 사용자 나열

구성된 사용자 목록은 각 사용자에 대한 정보와 함께 "/etc/passwd" 파일에 유지됩니다. 일반 사용자가 터미널 창에 나열할 수 있는 텍스트 파일입니다. "/etc/passwd" 파일을 보기 위해 sudo 를 사용할 필요가 없습니다.

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

cat 명령을 사용하여 "/etc/passwd" 파일의 내용을 터미널 창으로 보낼 수 있습니다. 그러면 파일의 전체 내용이 나열됩니다. 즉, 사람이 아닌 프로세스와 시스템이 소유한 사용자 계정에 대한 항목도 표시됩니다.

 고양이 /etc/passwd 

/etc/passwd 파일의 내용을 cat으로 터미널 창으로 보내기

각 사용자 계정에 대해 보고된 밀집 정보 줄이 있습니다.

/etc/passwd 파일의 내용

"dave"라는 사용자 계정에 대한 정보에는 이러한 정보가 포함되어 있으며 그 사이에는 콜론 " : "이 있습니다.

  • dave : 사용자 계정의 이름입니다. 일반적으로 계정을 소유한 사람의 이름입니다.
  • x : 한 번에 이것은 계정의 비밀번호를 보유했습니다. 요즘에는 암호가 "/etc/shadow" 파일에 저장됩니다. "x"는 암호가 해당 파일에 있음을 의미합니다.
  • 1000 : 이 계정의 사용자 ID입니다. 모든 사용자 계정에는 고유한 숫자 ID가 있습니다. 일반 사용자 계정은 일반적으로 1000에서 시작하며 각각의 새 계정은 1001, 1002 등과 같은 다음 무료 ID를 사용합니다.
  • 1000 : 사용자가 속한 기본 그룹의 그룹 ID입니다. 정상적인 상황에서 기본 그룹은 사용자 ID와 동일한 값을 갖습니다.
  • dave,,, : 사용자에 대한 선택적 추가 정보의 모음입니다. 이 필드는 데이터 사이에 쉼표 " , "가 있는 데이터를 포함합니다. 그들은 사용자의 전체 이름, 사무실 번호 및 전화 번호와 같은 것을 저장할 수 있습니다. 사용자 계정 "mary"에 대한 항목은 그녀의 전체 이름이 Mary Quinn임을 보여줍니다.
  • /home/dave : 사용자의 홈 폴더 경로입니다.
  • /bin/bash : 이 사용자의 기본 셸입니다.

wc 유틸리티를 통해 이 명령의 출력을 파이프하고 -l (줄) 옵션을 사용하면 파일의 줄 수를 계산할 수 있습니다. 그러면 이 컴퓨터에 구성된 계정 수가 표시됩니다.

 고양이 /etc/passwd | 화장실 -l 

/etc/passwd 파일의 계정 수 계산

이 수치에는 애플리케이션에서 생성한 시스템 계정과 사용자가 포함됩니다. 이 컴퓨터에는 약 400명의 일반 사용자가 구성되어 있습니다. 당신의 결과는 훨씬 적습니다.

계정이 많으면 "/etc/passwd" 파일을 보기 위해 less 사용하는 것이 더 편리합니다.

 적은 /etc/passwd 

/etc/passwd 파일 열기

less 를 사용하면 특정 사용자 계정을 찾으려는 경우 출력 내에서 검색할 수도 있습니다.

/etc/passwd 파일에서 mary 계정 검색

awk 명령

awk 명령을 사용하여 사용자 이름만 표시할 수 있습니다. 이는 많은 사용자 계정에 대해 작업을 수행해야 하는 스크립트를 작성할 때 유용할 수 있습니다. 사용자 계정 이름을 나열하고 텍스트 파일로 리디렉션하면 시간을 크게 절약할 수 있습니다. 그런 다음 나머지 명령을 복사하여 각 줄에 붙여넣기만 하면 됩니다.

Linux에서 awk 명령을 사용하는 방법
관련 Linux에서 awk 명령을 사용하는 방법

필드 구분자로 콜론 ":"을 사용하고 첫 번째 필드를 인쇄하도록 awk에 지시합니다. -F(필드 구분 기호) 옵션을 사용합니다.

 awk -F: '{$1 인쇄}' /etc/passwd 

/etc/passwd에서 사용자 이름만 선택하는 awk 명령

사용자 계정 이름은 다른 계정 정보 없이 터미널 창에 기록됩니다.

터미널 창에 표시되는 사용자 계정 이름

컷 명령

cut 명령을 사용하여 같은 종류의 것을 얻을 수 있습니다. -d (구분자) 옵션을 사용하고 -f (필드) 옵션을 사용하여 첫 번째 필드만 선택하도록 요청해야 합니다.

 절단 -d: -f1 

cut 명령을 사용하여 /etc/passwd 파일의 사용자 이름만 표시

여기에는 시스템 및 기타 비인간 계정을 포함한 모든 사용자 계정이 나열됩니다.

compgen 명령

compgen 명령을 -u (user) 옵션과 함께 사용하여 사용자 계정을 나열할 수 있습니다. 한 줄에 단일 사용자 이름이 있는 하나의 긴 목록 대신 column 명령을 통해 출력을 파이프하여 사용자 계정을 열에 나열합니다.

 컴젠 -u | 열 

compgen 및 column 명령을 사용하여 /etc/passwd 파일의 사용자 계정 이름을 열에 나열

다시 말하지만, 나열된 첫 번째 사용자 계정은 사람이 아닌 프로세스에 속합니다.

UID 최소 및 UID 최대

사용자 계정에는 앞에서 본 숫자 ID가 부여됩니다. 일반적으로 일반 사용자 계정은 1000에서 시작하고 시스템, 비인간 사용자 계정은 0에서 시작합니다. 루트 계정의 ID는 0입니다.

가능한 가장 낮은 사용자 ID와 가장 높은 사용자 ID를 확인할 수 있으면 해당 정보를 사용하여 두 값 사이에 있는 사용자 계정을 선택할 수 있습니다. 그러면 실제 사람에 속한 사용자 계정만 선택할 수 있습니다.

Linux는 UID_MINUID_MAX 라는 구성 매개변수를 사용하여 이 두 값을 추적합니다. 이들은 "/etc/login.defs" 파일에 보관됩니다. grep 을 사용하여 이러한 값을 쉽게 볼 수 있습니다.

-E (확장 정규식) 옵션을 사용할 것입니다. 검색 문자열은 "/etc/login.defs" 파일에서 "UID_MIN" 또는 "UID_MAX"로 시작하는 줄을 찾습니다. 캐럿 " ^ "은 줄의 시작을 나타냅니다.

 grep -E '^UID_MIN|^UID_MAX' /etc/login.defs 

이 컴퓨터의 사용자 ID 범위는 1000~60,000입니다.

관련: Linux에서 정규식(regexes)을 사용하는 방법

getent 명령

getent 명령은 시스템 데이터베이스에서 정보를 읽습니다. "passwd"를 매개변수로 사용하여 "/etc/passwd" 파일의 항목을 나열하도록 지시할 수 있습니다.

 getent 암호 

getent를 사용하여 /etc/passwd 파일을 터미널 창에 덤프

이것은 cat 을 사용하여 얻을 수 있는 것과 동일한 판독값을 제공합니다. 그러나 getent 가 빛나는 곳은 "열쇠"로 알려진 값을 수용하는 것입니다. 키는 getent 가 보고하는 정보를 나타냅니다. 단일 사용자에 대한 항목을 보려면 명령줄에 사용자 계정 이름을 전달할 수 있습니다.

 getent 암호 사라

사용자 계정 이름은 대소문자를 구분합니다.

 getent 암호 사라 

getent로 단일 사용자 계정 찾기

또한 보고자 하는 사용자 계정 ID의 상한 및 하한을 전달할 수도 있습니다. 모든 일반 사용자 계정을 절대적으로 보려면 UID_MINUID_MAX 값을 사용할 수 있습니다.

 getent 암호 {1000..60000} 

getent에서 상위 및 하위 계정 ID 사용

실행하는 데 약간의 시간이 걸립니다. 결국 명령 프롬프트로 돌아갑니다.

getent가 터미널 창으로 보낸 /etc/passwd 파일의 내용

실행 시간이 긴 이유는 getent 가 최대 60000까지의 모든 사용자 계정 값에 대해 일치하는 항목을 찾으려고 시도하기 때문입니다.

가장 높은 사용자 계정 ID가 무엇인지 봅시다. cut 명령을 사용하지만 이번에는 세 번째 필드인 사용자 ID 필드를 요청합니다. 출력을 sort 을 통해 파이프하고 -g (일반 숫자 정렬) 옵션을 사용합니다.

 컷 -d: -f3 /etc/passwd | 정렬 -g 

cut에서 sort 명령으로 출력을 파이프하는 명령

사람이 소유한 사용자 계정의 가장 높은 ID 값은 1401입니다.

정렬된 사용자 계정 ID 목록

사용자 ID 65534는 "아무도"라는 시스템 개념에 할당됩니다.

 getent 암호 {65534..65534} 

시스템 사용자 없음, ID 65534

따라서 이 컴퓨터에서는 UID_MAX 값 60000을 사용하는 대신 1500과 같은 보다 현실적인 값을 사용할 수 있다는 것을 알고 있습니다. 그러면 속도가 훨씬 빨라집니다. 사용자 계정의 이름만 추출하기 위해 cut 을 통해 출력을 파이프할 것입니다.

getent 암호 {1000..1500} | 컷 -d: -f1

사용자 계정 이름을 나열하기 위해 cut을 통해 파이프된 getent의 출력

사용자가 나열되고 즉시 명령 프롬프트로 돌아갑니다.

cut 을 통해 출력을 파이프하는 대신 wc 를 통해 출력을 파이프하고 라인을 한 번 더 계산해 보겠습니다. 그러면 "실제" 사용자 계정 수가 표시됩니다.

 getent 암호 {1000..1500} | 화장실 -l 

getent 및 wc로 일반 사용자 계정 계산

이제 이 컴퓨터에 사람이 소유한 400개의 구성된 사용자 계정이 있음을 알 수 있습니다.

강력함과 단순함

이러한 기술 중 하나는 Linux 컴퓨터에서 사용자 계정을 검토해야 할 때 필요에 적합합니다. 이러한 명령은 모든 배포판에 있어야 하며 sudo 액세스가 필요하지 않으므로 모든 사용자가 모두 사용할 수 있습니다.

관련: Linux에서 sudo 액세스를 제어하는 ​​방법