기본 문법
id [옵션]... [사용자]
id 는 사용자 계정의 신원 정보를 출력하는 명령어입니다. 인자를 주지 않으면 현재 사용자의 UID(사용자 번호), GID(기본 그룹 번호), 그리고 소속된 모든 그룹 목록을 한 줄로 보여 줍니다. 사용자 이름이나 UID를 인자로 주면 다른 계정의 정보도 확인할 수 있습니다.
파일 접근 권한 문제를 진단할 때 유용합니다. 권한 거부가 발생하면 파일의 소유자·소유 그룹과 id 출력의 UID·그룹 목록을 비교해 원인을 좁힐 수 있습니다. 또 useradd, usermod, groupadd 로 계정과 그룹을 변경한 뒤 결과가 의도대로 반영되었는지 검증하는 용도로도 사용합니다.
리눅스마스터, RHCSA, LPIC 등의 시험과 실습 문제에서도 계정 생성 문제의 확인 단계에 자주 등장합니다. 기본 그룹이 맞는지, 보조 그룹이 기존 그룹을 유지한 채 추가되었는지를 판정하는 기준으로 id 출력을 사용합니다. 연습 문제 #135(trainee 사용자와 devops 그룹 만들기), #202(보조 그룹 추가와 확인), #162(보조 그룹 추가와 소유 그룹 유지하기)의 확인 단계에서 이 명령을 그대로 활용할 수 있습니다.
자주 쓰는 옵션
| 옵션 | 의미 | 예 |
|---|---|---|
-u | UID(사용자 번호)만 출력 | 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 |
--version | coreutils 버전 정보 출력 | 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 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.
