소개
이 랩에서는 여러 가지 일반적인 방법을 사용하여 Linux 시스템에서 사용자 계정이 존재하는지 확인하는 방법을 배우게 됩니다. id 명령어를 사용하여 사용자 존재 여부를 쿼리하고, /etc/passwd 파일 내에서 사용자 항목을 검색하며, getent passwd 명령어를 사용하여 사용자 정보를 검증하는 방법을 살펴볼 것입니다. 이러한 기술은 사용자 계정의 존재 여부를 빠르고 효과적으로 판단하는 다양한 방법을 제공합니다.
이 랩에서는 여러 가지 일반적인 방법을 사용하여 Linux 시스템에서 사용자 계정이 존재하는지 확인하는 방법을 배우게 됩니다. id 명령어를 사용하여 사용자 존재 여부를 쿼리하고, /etc/passwd 파일 내에서 사용자 항목을 검색하며, getent passwd 명령어를 사용하여 사용자 정보를 검증하는 방법을 살펴볼 것입니다. 이러한 기술은 사용자 계정의 존재 여부를 빠르고 효과적으로 판단하는 다양한 방법을 제공합니다.
이 단계에서는 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 파일을 검사하여 사용자 존재 여부를 확인하는 또 다른 방법을 살펴보겠습니다. 이 파일은 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) 를 통해 관리되는 사용자는 여기에 나타나지 않을 수 있습니다.
다음 방법으로 이동하려면 계속을 클릭하십시오.
이 단계에서는 암호 데이터베이스를 포함하여 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 명령어를 사용했으며, 이는 스크립팅 및 자동화에 일반적으로 선호됩니다.