Linux 에서 사용자 계정 존재 여부 확인 방법

LinuxBeginner
지금 연습하기

소개

이 랩에서는 여러 가지 일반적인 방법을 사용하여 Linux 시스템에서 사용자 계정이 존재하는지 확인하는 방법을 배우게 됩니다. id 명령어를 사용하여 사용자 존재 여부를 쿼리하고, /etc/passwd 파일 내에서 사용자 항목을 검색하며, getent passwd 명령어를 사용하여 사용자 정보를 검증하는 방법을 살펴볼 것입니다. 이러한 기술은 사용자 계정의 존재 여부를 빠르고 효과적으로 판단하는 다양한 방법을 제공합니다.

id 명령어로 사용자 존재 여부 쿼리

이 단계에서는 id 명령어를 사용하여 시스템에 특정 사용자가 존재하는지 확인하는 방법을 배우겠습니다. id 명령어는 현재 사용자 또는 지정된 사용자에 대한 사용자 및 그룹 정보를 표시하는 다재다능한 도구입니다.

이미 id를 사용하여 자신의 사용자 및 그룹 정보를 확인했습니다. 이제 다른 사용자에 대한 정보를 쿼리하는 데 사용해 보겠습니다.

특정 사용자를 확인하기 위한 기본 구문은 다음과 같습니다.

id [username]

사용자가 존재하면 명령어는 해당 사용자의 사용자 ID (uid), 그룹 ID (gid) 및 소속된 그룹을 출력합니다. 사용자가 존재하지 않으면 일반적으로 사용자를 알 수 없다는 오류 메시지를 반환합니다.

root와 같이 존재하는 사용자를 확인해 보겠습니다. 터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.

id root

다음과 유사한 출력을 볼 수 있습니다.

uid=0(root) gid=0(root) groups=0(root)

이는 root 사용자가 존재하며 해당 사용자의 사용자 및 그룹 ID 를 보여줍니다.

이제 이 시스템에 존재하지 않을 가능성이 높은 사용자, 예를 들어 nonexistentuser라는 사용자를 확인해 보겠습니다. 다음 명령을 입력하고 Enter 키를 누르십시오.

id nonexistentuser

다음과 같이 사용자를 찾을 수 없다는 오류 메시지를 볼 수 있습니다.

id: ‘nonexistentuser’: no such user

이는 id 명령어를 사용하여 시스템에 사용자 계정이 존재하는지 빠르게 확인할 수 있는 방법을 보여줍니다.

id 명령어는 사용자와 해당 그룹 멤버십에 대한 자세한 정보를 얻는 강력한 방법임을 기억하십시오.

다음 단계로 진행하려면 계속을 클릭하십시오.

/etc/passwd 파일에서 사용자 검색

이 단계에서는 /etc/passwd 파일을 검사하여 사용자 존재 여부를 확인하는 또 다른 방법을 살펴보겠습니다. 이 파일은 Linux 시스템의 기본 부분이며 사용자 계정에 대한 정보를 포함합니다.

/etc/passwd 파일은 각 사용자에 대한 필수 세부 정보를 저장합니다. 여기에는 사용자 이름, 사용자 ID (UID), 그룹 ID (GID), 홈 디렉토리 및 기본 셸이 포함됩니다. 파일의 각 줄은 단일 사용자 계정을 나타내며, 필드는 콜론 (:) 으로 구분됩니다.

cat 명령어를 사용하여 /etc/passwd 파일의 내용을 표시하고 grep 명령어를 사용하여 파일 내에서 특정 사용자 이름을 검색할 수 있습니다.

먼저 /etc/passwd 파일의 전체 내용을 살펴보겠습니다. 터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.

cat /etc/passwd

각 사용자 계정을 나타내는 긴 줄 목록이 표시됩니다. 출력은 다음과 유사합니다 (몇 줄만 표시).

root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
...
labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh
...

이제 grep을 사용하여 labex와 같은 특정 사용자를 검색해 보겠습니다. cat /etc/passwd의 출력을 grep labex로 파이프합니다. 파이프 기호 (|) 는 왼쪽의 명령 출력 결과를 오른쪽 명령의 입력으로 보냅니다.

다음 명령을 입력하고 Enter 키를 누르십시오.

cat /etc/passwd | grep labex

labex 사용자가 존재하면 /etc/passwd 파일에서 labex 사용자에 해당하는 줄이 표시됩니다.

labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh

사용자가 존재하지 않으면 grep이 일치하는 항목을 찾지 못하고 출력이 없습니다.

nonexistentuser를 다시 검색해 보겠습니다.

cat /etc/passwd | grep nonexistentuser

이 명령은 출력을 생성하지 않아야 하며, 이는 nonexistentuser 사용자가 /etc/passwd 파일에서 발견되지 않았음을 나타냅니다.

/etc/passwd 파일을 직접 검색하는 것은 특히 스크립트에서 사용자 존재 여부를 확인하는 일반적인 방법입니다. 그러나 이 파일에는 로컬 사용자 계정만 포함되어 있다는 점에 유의해야 합니다. 네트워크 서비스 (예: LDAP) 를 통해 관리되는 사용자는 여기에 나타나지 않을 수 있습니다.

다음 방법으로 이동하려면 계속을 클릭하십시오.

getent passwd 명령어로 사용자 유효성 검사

이 단계에서는 암호 데이터베이스를 포함하여 Name Service Switch (NSS) 데이터베이스에서 항목을 검색하는 보다 강력한 방법인 getent 명령어에 대해 배우겠습니다. getent 명령어는 /etc/passwd와 같은 로컬 파일뿐만 아니라 LDAP 또는 NIS 와 같은 네트워크 기반 소스도 쿼리할 수 있기 때문에 특히 유용합니다.

getent를 사용하여 암호 데이터베이스를 쿼리하는 기본 구문은 다음과 같습니다.

getent passwd [username]

사용자가 구성된 NSS 소스 중 하나에 존재하면 getent/etc/passwd를 사용할 때와 유사하게 암호 데이터베이스에서 해당 줄을 출력합니다. 사용자가 존재하지 않으면 getent는 출력을 생성하지 않고 0 이 아닌 상태로 종료됩니다.

getent를 사용하여 labex 사용자를 확인해 보겠습니다. 터미널에 다음 명령을 입력하고 Enter 키를 누르십시오.

getent passwd labex

labex 사용자에 대한 줄이 표시됩니다.

labex:x:5000:5000:LabEx user,,,:/home/labex:/bin/zsh

이제 getent를 사용하여 nonexistentuser를 다시 확인해 보겠습니다. 다음 명령을 입력하고 Enter 키를 누르십시오.

getent passwd nonexistentuser

이 명령어는 /etc/passwd에서 grep을 사용했을 때와 마찬가지로 출력을 생성하지 않아야 합니다. 그러나 getent는 시스템의 NSS 구성을 존중하고 다양한 소스에서 사용자를 찾을 수 있으므로 직접 /etc/passwd를 구문 분석하는 것보다 일반적으로 선호됩니다.

종료 상태의 차이를 보려면 명령을 실행한 후 $?의 값을 확인할 수 있습니다. $?는 마지막으로 실행된 명령의 종료 상태를 저장합니다. 값 0은 일반적으로 성공을 나타내고, 0 이 아닌 값은 오류를 나타냅니다.

labex에 대해 getent 명령을 다시 실행한 다음 종료 상태를 확인합니다.

getent passwd labex
echo $?

사용자 정보 다음에 0이 표시됩니다.

이제 nonexistentuser에 대해 getent 명령을 실행하고 종료 상태를 확인합니다.

getent passwd nonexistentuser
echo $?

getent에서 출력이 없고, 그 뒤에 0 이 아닌 값 (종종 1 또는 2) 이 표시됩니다.

getent를 사용하고 종료 상태를 확인하는 것은 사용자가 로컬로 정의되었는지 또는 네트워크 서비스를 통해 정의되었는지 여부에 관계없이 Linux 시스템에 사용자가 존재하는지 프로그래밍 방식으로 결정하는 신뢰할 수 있는 방법입니다.

이제 Linux 에서 사용자 존재 여부를 확인하는 세 가지 다른 방법을 배웠습니다!

이 랩을 완료하려면 계속을 클릭하십시오.

요약

이 랩에서는 Linux 에서 사용자 계정이 존재하는지 확인하는 세 가지 방법을 배웠습니다. 먼저, 사용자가 존재하면 사용자 및 그룹 정보를 제공하고 존재하지 않으면 오류를 반환하는 id 명령어를 사용했습니다. root 사용자와 존재하지 않는 사용자를 확인하여 이를 시연했습니다.

다음으로, 사용자 계정 세부 정보를 포함하는 핵심 시스템 파일인 /etc/passwd 파일을 탐색했습니다. 이 파일을 검색하여 사용자의 항목이 있는지 확인할 수 있습니다. 마지막으로, /etc/passwd를 포함한 다양한 소스에서 사용자 정보를 쿼리하는 보다 강력한 방법인 getent passwd 명령어를 사용했으며, 이는 스크립팅 및 자동화에 일반적으로 선호됩니다.