Linux 시스템의 모든 사용자를 나열하거나 시스템의 사용자 수를 세어 본 적이 있습니까? 사용자를 생성하고, 사용자를 삭제하고, 로그인한 사용자를 나열하는 명령이 있지만 Linux의 모든 사용자를 나열하는 명령은 무엇일까요?
이 튜토리얼에서는 Linux 시스템에서 사용자를 나열하는 방법을 보여 줍니다.
/etc/passwd 파일을 사용하여 모든 사용자 목록을 가져오기
로컬 사용자 정보는 /etc/passwd 파일에 저장됩니다. 이 파일의 각 줄은 한 사용자에 대한 로그인 정보를 나타냅니다. 파일을 열려면 cat 또는 less를 사용할 수 있습니다.
less /etc/passwd
파일의 각 줄에는 다음 정보를 포함하는 콜론으로 구분된 7개의 필드가 있습니다.
- 사용자 이름
- 암호화된 암호(x는 암호가 /etc/shadow 파일에 저장됨을 의미합니다).
- UID(사용자 ID 번호)
- 사용자의 그룹 ID 번호(GID)
- 사용자의 전체 이름입니다(GECOS)
- 사용자 홈 디렉토리
- 로그인 셸(기본값은 /bin/bash)
사용자 이름만 표시하려면 awk 또는 cut 명령을 사용하여 사용자 이름이 포함된 첫 번째 필드만 출력할 수 있습니다.
awk -F: '{ print $1}' /etc/passwd
cut -d: -f1 /etc/passwd
# root
# daemon
# bin
# sys
# sync
# ...
# ...
# sshd
# vagrant
# jack
# anne
getent 명령을 사용하여 모든 사용자 목록을 가져오기
getent 명령은 모든 사용자 목록을 쿼리하는 데 사용할 수 있는 passwd 데이터베이스를 포함하여 /etc/nsswitch.conf 파일에 구성된 데이터베이스의 항목을 표시합니다.
모든 Linux 사용자 목록을 가져오려면 다음 명령을 입력합니다.
getent passwd
보시다시피 출력은 /etc/passwd 파일의 내용을 표시할 때와 동일합니다. LDAP를 사용자 인증에 사용하는 경우 getent는 /etc/passwd 파일과 LDAP 데이터베이스의 모든 Linux 사용자를 표시합니다.
awk 또는 cut을 사용하여 사용자 이름이 포함된 첫 번째 필드만 인쇄할 수도 있습니다.
getent passwd | awk -F: '{ print $1}'
getent passwd | cut -d: -f1
Linux 시스템에 사용자가 있는지 확인
이제 모든 사용자를 나열하는 방법을 알게 되었으므로 Linux 상자에 사용자가 있는지 확인하기 위해 목록을 grep 명령에 연결하여 사용자 목록을 필터링할 수 있습니다.
예를 들어 Linux 시스템에 이름 잭을 가진 사용자가 있는지 확인하려면 다음 명령을 사용할 수 있습니다.
getent passwd | grep jack
사용자가 있는 경우 위의 명령어는 사용자의 로그인 정보를 인쇄합니다. 사용자가 존재하지 않는다는 것을 의미하는 출력이 없습니다.
또한 아래와 같이 grep 명령을 사용하지 않고도 사용자가 존재하는지 확인할 수 있습니다.
getent passwd jack
이전과 동일하게 사용자가 있는 경우 명령어에 사용자의 로그인 정보가 표시됩니다.
시스템에 얼마나 많은 사용자 계정이 있는지 확인하려면 getent passwd 출력을 wc 명령으로 연결합니다.
getent passwd | wc -l
# 33
위의 출력에서 볼 수 있듯이 내 Linux 시스템에는 33개의 사용자 계정이 있습니다.
시스템 및 일반 사용자
시스템과 일반(일반) 사용자 사이에는 실질적인 기술적 차이가 없습니다. 일반적으로 시스템 사용자는 OS 및 새 패키지를 설치할 때 생성됩니다. 경우에 따라 일부 응용 프로그램에서 사용할 시스템 사용자를 만들 수 있습니다.
일반 사용자는 루트 또는 sudo 권한을 가진 다른 사용자가 만든 사용자입니다. 일반적으로 일반 사용자는 실제 로그인 셸과 홈 디렉토리를 가집니다.
각 사용자는 UID라는 숫자 사용자 ID를 가집니다. useradd 명령을 사용하여 새 사용자를 생성할 때 지정되지 않은 경우 UID_MIN 및 UID_MIN 값에 따라 /etc/login.defs 파일에서 UID가 자동으로 선택됩니다.
시스템에서 UID_MIN 및 UID_MIN 값을 확인하려면 다음 명령을 사용할 수 있습니다.
grep -E '^UID_MIN|^UID_MAX' /etc/login.defs
# UID_MIN 1000
# UID_MAX 60000
위의 출력에서 모든 일반 사용자는 1000~60000 사이의 UID를 가져야 한다는 것을 알 수 있습니다. 최소값과 최대값을 알면 시스템에 있는 모든 일반 사용자의 목록을 조회할 수 있습니다.
아래 명령에는 Linux 시스템의 모든 일반 사용자가 나열됩니다.
getent passwd {1000..60000}
# vagrant:x:1000:1000:vagrant,,,:/home/vagrant:/bin/bash
# jack:x:1001:1001:,,,:/home/jack:/bin/bash
# anne:x:1002:1002:Anne Stone,,,:/home/anne:/bin/bash
# patrick:x:1003:1003:Patrick Star,,,:/home/patrick:/usr/sbin/nologin
시스템 UID_MIN과 UID_MIN 값이 다를 수 있으므로 위의 명령의 일반 버전은 다음과 같습니다.
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)}
사용자 이름만 인쇄하려면 출력을 잘라내기 명령으로 연결하기만 하면 됩니다.
eval getent passwd {$(awk '/^UID_MIN/ {print $2}' /etc/login.defs)..$(awk '/^UID_MAX/ {print $2}' /etc/login.defs)} | cut -d: -f1
'SW > 리눅스' 카테고리의 다른 글
Ubuntu 18.04 : PostgreSQL를 설치하는 방법, 예제, 명령어 (0) | 2020.11.20 |
---|---|
Ubuntu 18.04 : OpenCV를 설치하는 방법, 예제, 명령어 (0) | 2020.11.19 |
CentOS 7 : Go를 설치하는 방법, 예제, 명령어 (0) | 2020.11.17 |
Ubuntu : 설치된 패키지를 나열하는 방법, 예제, 명령어 (0) | 2020.11.16 |
Ubuntu 18.04 : Git을 설치하는 방법, 예제, 명령어 (0) | 2020.11.15 |