id 명령어: UID와 그룹 확인, whoami, groups와 보조 그룹

리눅스 서버에서 지금 계정의 UID와 그룹을 확인할 때는 id 명령어를 사용하며, 계정 이름만 필요하면 whoami를, 그룹 이름만 필요하면 groups를 사용합니다. AlmaLinux 9와 Debian 12 서버에서 세 명령을 차례로 실행해 출력을 비교한 결과, id -un과 whoami는 같은 계정 이름을 출력했고 groups는 id의 그룹 목록을 이름만 남겨 출력했습니다.
아래 출력은 AlmaLinux 9.8 서버의 root 계정과 Debian 12 서버의 일반 계정에서 실행한 결과입니다. 로그인 계정의 이름과 번호, 보조 그룹은 예시 값(user1, 1000, adm, systemd-journal)으로 바꿨습니다.
1️⃣ id 명령어 기본 사용법
옵션 없이 id를 실행하면 지금 셸을 실행한 계정의 정보가 한 줄로 나옵니다. root 계정에서 실행하자 세 칸이 모두 0(root)이었습니다.
iduid=0(root) gid=0(root) groups=0(root)uid 칸은 계정 번호와 이름, gid 칸은 기본 그룹(primary group)의 번호와 이름입니다. groups 칸은 그 계정이 속한 그룹 전체이고, 맨 앞에 기본 그룹이 옵니다.
id 뒤에 계정 이름을 적으면 그 계정의 정보를 출력합니다. 보조 그룹이 있는 일반 계정 user1을 확인하자 groups 칸에 기본 그룹 user1 뒤로 adm과 systemd-journal이 이어졌습니다. 기본 그룹 밖에 더 속한 이 그룹들이 보조 그룹(supplementary group)입니다.
id user1uid=1000(user1) gid=1000(user1) groups=1000(user1),4(adm),190(systemd-journal)UID와 gid의 번호가 같은 계정이 많아 두 숫자를 같은 값으로 여기기 쉬운데, 서버에 기본으로 있는 adm 계정은 UID가 3, 기본 그룹 번호가 4였습니다. operator 계정은 기본 그룹이 root였습니다.
id admuid=3(adm) gid=4(adm) groups=4(adm)id operatoruid=11(operator) gid=0(root) groups=0(root)계정을 여럿 적으면 한 줄에 하나씩 출력합니다.
id root binuid=0(root) gid=0(root) groups=0(root)
uid=1(bin) gid=1(bin) groups=1(bin)없는 계정을 적으면 [no such user] 오류가 나오고, 종료 코드는 1이었습니다.
id no-such-user9id: 'no-such-user9': no such userecho $?1있는 계정을 적었을 때의 종료 코드는 0이라, 스크립트에서 계정이 있는지 확인하는 조건으로 사용할 수 있습니다.
2️⃣ id 명령어 옵션
전체 출력에서 번호 하나만 스크립트에 넘길 때는 옵션으로 칸을 하나만 고릅니다. -u는 UID, -g는 기본 그룹 번호, -G는 속한 그룹 번호 전체를 출력합니다.
id -u0id -u daemon2id -G user11000 4 190-n을 함께 쓰면 번호 대신 이름이 나옵니다. user1의 그룹을 [id -Gn]으로 확인하자 번호 셋이 이름 셋으로 바뀌었습니다.
id -Gn user1user1 adm systemd-journalid -gn user1user1-n과 -r은 -u, -g, -G 가운데 하나와 함께 사용합니다. -n만 따로 적자 아래 오류가 나왔습니다.
id -nid: cannot print only names or real IDs in default format-r은 유효(effective) ID 대신 실제(real) ID를 출력합니다. root 계정 셸에서 [id -ur]을 실행하자 0이 나왔습니다. -u와 -g처럼 번호를 고르는 옵션을 둘 이상 함께 적으면 [cannot print “only” of more than one choice] 오류가 나옵니다. 옵션을 정리하면 아래와 같습니다.
| 옵션 | 복사 | 설명 |
|---|---|---|
| -u--user | UID 번호 출력 | |
| -g--group | 기본 그룹 번호 출력 | |
| -G--groups | 속한 그룹 번호 전체 출력 | |
| -n--name | -u, -g, -G와 함께 번호 대신 이름 출력 | |
| -r--real | -u, -g, -G와 함께 유효 ID 대신 실제(real) ID 출력 |
| 옵션 | 복사 | 설명 |
|---|---|---|
| -Z--context | 프로세스의 보안 컨텍스트만 출력 | |
| -z--zero | 출력 항목을 공백 대신 NUL 문자로 구분, 기본 형식에서는 사용 불가 | |
| -a | 다른 버전의 id와 호환하려고 받기만 하고 무시 | |
| --help | 도움말 출력 | |
| --version | 버전 출력 |
🔲 id 명령어 시뮬레이터
아래 시뮬레이터는 보조 그룹이 있는 user1 계정으로 시작합니다. [🖊 다른 창] 칩으로 wheel 그룹을 더한 뒤 [id]와 [id user1]을 비교하고, [🔁 다시 로그인] 칩으로 새 셸의 그룹을 확인할 수 있습니다.
3️⃣ whoami 명령어와 id -un
지금 셸의 계정 이름만 필요하면 whoami를 실행합니다. man 페이지는 whoami를 [id -un]과 같은 명령으로 설명합니다. root 계정에서 두 명령을 실행하자 둘 다 root가 나왔습니다.
whoamirootid -unrootDebian 12 서버의 일반 계정에서도 두 명령은 같은 계정 이름을 출력했습니다.
whoamiuser1id -unuser1whoami는 지금 유효한(effective) UID에 해당하는 계정 이름을 출력합니다. 지금 계정만 확인하는 명령이라 뒤에 계정 이름을 붙이면 오류가 나옵니다.
whoami user1whoami: extra operand 'user1'
Try 'whoami --help' for more information.다른 계정의 이름이나 번호는 id 뒤에 그 계정을 적어 확인합니다.
id -un user1user1-un 대신 -u를 적으면 같은 자리에 계정 이름 대신 UID 번호가 나옵니다.
4️⃣ groups 명령어와 보조 그룹
groups는 그룹 이름만 한 줄로 출력합니다. 계정 이름을 적지 않으면 지금 셸의 그룹이 나오고, root 계정에서는 root 하나였습니다.
groupsroot계정 이름을 적으면 계정 이름과 콜론 뒤에 그룹이 나옵니다. 계정을 여럿 적자 한 줄에 하나씩 출력했습니다.
groups user1 daemonuser1 : user1 adm systemd-journal
daemon : daemon기본 그룹과 보조 그룹은 기록되는 자리가 다릅니다. 보조 그룹은 그룹 데이터베이스(/etc/group) 넷째 칸에 멤버로 적히고, 기본 그룹은 계정 정보(/etc/passwd) 넷째 칸에 번호로 적힙니다.
getent group admadm:x:4:user1getent group user1user1:x:1000:getent passwd daemondaemon:x:2:2:daemon:/sbin:/sbin/nologinuser1의 기본 그룹인 user1 그룹은 넷째 칸이 비어 있었고, 보조 그룹 adm에는 user1이 멤버로 적혀 있었습니다. daemon 계정 줄의 넷째 칸 2가 기본 그룹 번호입니다.
보조 그룹에 계정을 더할 때는 usermod 명령어의 [usermod -aG 그룹 계정]을 사용합니다. -a 없이 -G만 쓰면 목록에 적지 않은 기존 보조 그룹에서 빠지므로 -a를 함께 적습니다.
계정 이름 없이 실행한 groups는 지금 셸 프로세스의 그룹을 출력합니다. man 페이지는 그룹 데이터베이스가 바뀌면 이 값이 데이터베이스와 다를 수 있다고 설명합니다.
그래서 그룹을 바꾼 직후에는 [groups 계정]이나 [id 계정]으로 데이터베이스의 그룹을 확인하고, 셸에 반영하려면 다시 로그인합니다. 로그인한 채로 지금 그룹 ID를 바꾸는 명령으로는 newgrp가 있습니다.
🔢 FAQ & 추천 콘텐츠
ℹ️ 제휴 안내
본 사이트의 콘텐츠에는 제휴 링크가 포함되어 있습니다. 방문자가 이 링크를 통해 상품 또는 서비스를 구매하면 본 사이트는 판매처로부터 수수료를 지급받습니다. 이 과정에서 구매자가 지불하는 금액(이벤트 할인 시 금액이 내려갑니다↓)은 오르지 않습니다. 게시된 가격·할인·재고 정보는 작성 시점 기준이며 실제와 다를 수 있으므로, 구매 전 판매처에서 최종 확인하시기 바랍니다. 상품 선정과 평가는 자체 기준에 따라 작성되며, 수수료 지급 여부가 소개 순서나 평가 내용에 영향을 주지 않습니다.