id 명령어 사용법

사용자의 UID, GID, 소속 그룹을 확인하는 명령어입니다.

사용자·그룹/인증연결 실습 문제 3개Rocky Linux 8 기준 · 실행 결과는 실습 컨테이너에서 확인

기본 문법

id [옵션]... [사용자]

id 는 사용자 계정의 신원 정보를 출력하는 명령어입니다. 인자를 주지 않으면 현재 사용자의 UID(사용자 번호), GID(기본 그룹 번호), 그리고 소속된 모든 그룹 목록을 한 줄로 보여 줍니다. 사용자 이름이나 UID를 인자로 주면 다른 계정의 정보도 확인할 수 있습니다.

파일 접근 권한 문제를 진단할 때 유용합니다. 권한 거부가 발생하면 파일의 소유자·소유 그룹과 id 출력의 UID·그룹 목록을 비교해 원인을 좁힐 수 있습니다. 또 useradd, usermod, groupadd 로 계정과 그룹을 변경한 뒤 결과가 의도대로 반영되었는지 검증하는 용도로도 사용합니다.

리눅스마스터, RHCSA, LPIC 등의 시험과 실습 문제에서도 계정 생성 문제의 확인 단계에 자주 등장합니다. 기본 그룹이 맞는지, 보조 그룹이 기존 그룹을 유지한 채 추가되었는지를 판정하는 기준으로 id 출력을 사용합니다. 연습 문제 #135(trainee 사용자와 devops 그룹 만들기), #202(보조 그룹 추가와 확인), #162(보조 그룹 추가와 소유 그룹 유지하기)의 확인 단계에서 이 명령을 그대로 활용할 수 있습니다.

자주 쓰는 옵션

옵션의미
-uUID(사용자 번호)만 출력id -u
-g기본 그룹의 GID만 출력id -g trainee
-G소속된 모든 그룹의 GID를 출력id -G trainee
-n번호 대신 이름으로 출력(-u, -g, -G와 함께 사용)id -nG trainee
-r실효 ID 대신 실제(real) ID를 출력(-u, -g, -G와 함께 사용)id -ru
-Z현재 프로세스의 SELinux 보안 컨텍스트만 출력. SELinux가 비활성화된 환경에서는 오류와 함께 종료 상태 1을 반환합니다.id -Z
-z출력 항목을 줄바꿈 대신 NUL 문자로 구분(-u, -g, -G와 함께 사용)id -zG
-a다른 구현과의 호환을 위해 존재하며 아무 동작도 하지 않음id -a
--help사용법 요약 출력id --help
--versioncoreutils 버전 정보 출력id --version

실무 예시

현재 사용자 확인

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

현재 사용자의 UID, 기본 GID, 소속 그룹 전체를 한 번에 확인합니다. 작업 전 자신이 어떤 권한으로 로그인했는지 점검할 때 씁니다. 아래 출력은 root 로 실행한 예이며, 일반 사용자는 자신의 UID와 그룹이 표시됩니다.

UID와 이름만 뽑기

$ id -u; id -un
0
root

-u 는 UID 숫자만, -un 은 사용자 이름만 출력합니다. 스크립트에서 root 여부를 판별할 때 `[ "$(id -u)" -eq 0 ]` 형태로 사용합니다.

다른 사용자의 정보 확인

준비: groupadd demo_devops; useradd -g demo_devops -s /bin/bash demo_trainee

$ id demo_trainee
uid=1000(demo_trainee) gid=1000(demo_devops) groups=1000(demo_devops)

계정을 만든 뒤 기본 그룹이 의도한 그룹으로 설정되었는지 검증합니다. gid= 뒤에 나오는 것이 기본 그룹입니다. UID와 GID 숫자는 시스템에 이미 만들어진 계정 수에 따라 달라지므로, 숫자보다 괄호 안의 이름을 확인하세요.

보조 그룹 추가 결과 확인

준비: groupadd demo_release; usermod -aG demo_release demo_trainee

$ id -nG demo_trainee
demo_devops demo_release

-nG 는 소속 그룹을 이름으로만 나열합니다. 기존 기본 그룹이 유지된 채 보조 그룹이 추가되었는지 확인할 수 있습니다.

특정 그룹 소속 여부 판정

$ id -nG demo_trainee | tr ' ' '\n' | grep -x demo_release
demo_release

그룹 목록을 한 줄에 하나씩 나눈 뒤 이름이 정확히 일치하는 항목을 찾습니다. 출력이 있으면(종료 상태 0) 해당 그룹에 속한 것이고, 출력이 없으면(종료 상태 1) 속하지 않은 것입니다. 실습 정리가 필요하면 `userdel -r demo_trainee` 와 `groupdel demo_devops`, `groupdel demo_release` 로 테스트 계정과 그룹만 삭제하세요.

주의할 점

  • usermod 로 그룹을 바꿔도 이미 로그인한 세션의 id 출력은 그대로입니다. 다시 로그인하거나 newgrp 로 새 셸을 열어야 반영됩니다.
  • usermod -G 를 -a 없이 쓰면 기존 보조 그룹이 모두 제거됩니다. 보조 그룹 추가는 usermod -aG 를 사용하세요.
  • gid= 는 기본 그룹, groups= 는 기본 그룹을 포함한 전체 목록입니다. 둘을 혼동해 보조 그룹 개수를 잘못 세기 쉽습니다.
  • 존재하지 않는 사용자를 지정하면 `id: 'name': no such user` 오류와 함께 종료 상태 1을 반환합니다.
  • -Z 는 SELinux가 활성화된 환경에서만 동작합니다. SELinux가 비활성화된 시스템이나 일부 컨테이너에서는 오류가 발생합니다.
  • UID·GID 숫자는 환경마다 다르게 배정되므로, 실습 결과를 비교할 때는 숫자가 아니라 괄호 안의 사용자·그룹 이름을 기준으로 판정하세요.

이 명령어로 풀 수 있는 실습 문제

브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.

관련 명령어

마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.