| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | |||||
| 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 10 | 11 | 12 | 13 | 14 | 15 | 16 |
| 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| 24 | 25 | 26 | 27 | 28 | 29 | 30 |
| 31 |
- Web
- 정보보호
- IR
- 블루팀
- 보안 관제
- OverTheWire
- 사이버 보안
- linux
- cert
- Cross-Site Scripting
- 워게임
- TryHackMe
- write-up
- 해킹
- 리눅스
- Bandit
- 정보보안
- 모의해킹
- Cyber Security
- 보안 스터디
- THM
- XSS
- 해킹 스터디
- CTF
- Blue Team
- web hacking
- 해커
- http
- SoC
- 리눅스 기초
- Today
- Total
AnbyMata의 해킹 노트
[Linux 기초] EP.11 - UID, GID (useradd, id, su, exit) 본문
지금까지 기본적인 조작법들을 학습했으니, 이제는 권한과 관련된 부분들을 배워봅시다!
[1] UID (User ID)
"UID" = "사용자 고유 식별자" 입니다.
UID (User Identifier)는 시스템 내부에서 사용자를 구분하기 위해 부여되는 유일한 숫자 값입니다.
이를 이해하기 위해 웹사이트 회원가입을 떠올리면 쉽습니다.
새로운 웹사이트에 회원가입을 할 때, 시스템은 아이디의 중복 여부를 검사하여 각 사용자가 중복되지 않는 식별자를 가지도록 합니다.
리눅스에서도 각 사용자에게 계정이 부여되며, 시스템 내부에서는 사용자를 구분하기 위해 UID를 사용합니다.
UID는 중복될 수 없는 고유한 값이며, 사용자 식별의 기준이 되므로 변경하지 않는 것이 원칙입니다.
즉, UID는 웹사이트의 회원번호에 해당하는 개념입니다.
(UID는 숫자로 이루이진 식별자입니다)
UID 예시를 좀 알아보면,
- 0 = root (최고 권한의 관리자 계정, UID = 0이면 무조건 root)
- 1~999 = System User (사람을 위한 계정이 아닌 웹 서버, 데이터베이스 같은 시스템 서비스나 데몬 실행용 계정)
- 보통 1000 이상 = 일반 사용자 (실제 사람이 사용하는 계정, 보통 권한이 제한됨)
UID = 0이 root인건 동일하지만, Sytem User나 일반 사용자의 UID 범위의 경우 배포판마다 다를 수 있습니다.
[2] GID (Group ID)
"GID" = "그룹 고유 식별자" 입니다.
GID (Group Identifier)는 시스템 내부에서 사용자 그룹을 구분하기 위해 부여되는 유일한 숫자 값입니다.
사용자 계정이 너무 많아지면 관리가 힘들어집니다.
그래서 여러 사용자들을 하나의 그룹으로 묶어 권한을 관리하기 위해 사용자 그룹을 만들고, 이 그룹을 구분하기 위한 GID를 사용합니다.
(ex. 관리자 그룹, 운영자 그룹, 일반 회원 그룹 등..)
GID도 UID처럼 숫자로 이루어진 고유한 값을 가지는 식별자입니다.
추가적으로 각 사용자는 하나의 기본 그룹 (primary group)을 가지고, 여러 개의 보조 그룹 (supplementary group)에 속할 수 있습니다.
[3] 칼리 리눅스에서 ID 확인하기
이제 칼리 리눅스에서 계정을 만들어보고 UID와 GID를 확인해봅시다!
이 과정에서 'id', 'useradd', 'su', 'exit' 명령어를 배우게 됩니다.
1. 명령어 'useradd' : 계정 생성하기
'useradd' 명령어는 리눅스에 새로운 사용자 계정을 만들 때 사용합니다.
기본적인 사용법은
$ useradd [생성할_계정이름]
# 기본적인 계정 생성법
로 간단하게 'useradd' 뒤에 생성할 계정의 이름을 입력하면 기본적인 사용자 계정이 생성됩니다.
(원래는 더 다양한 기능을 가지고 있지만, 일단은 넘어갑니다)
계정을 생성하는 명령어인만큼 root 권한이 있어야 실행할 수 있습니다.
위의 기본적인 방법으로 계정을 생성하면 UID, 기본 그룹 (primary group)은 자동적으로 할당 및 지정됩니다.
하지만, 비밀번호는 자동으로 설정하지 않습니다!
(비밀번호 설정은 passwd 명령어로 따로 설정해야 됨!)
본격적으로 계정을 만들어봅시다.
'useradd anbymata' 명령어로 "anbymata"라는 계정을 만들어줍니다.

2. 명령어 'su' : 계정 변경하기
'su' 명령어는 "switch user"의 약자, 즉, 계정을 변경해주는 명령어입니다.
사용법은
$ su [변경할_계정이름]
입니다.
아시다시 현재 우리는 root 계정으로 계속 접속한 상태입니다.
'su anbymata' 명령어로 방금 만든 "anbymata" 계정으로 접속합니다.

명령어를 입력하면, 기존의 입력부분이던 '#'이 아닌 '$'에 입력하는 것으로 바뀌게 됩니다.
모양이 달라지긴 했지만, 똑같이 명령어는 입력하는 부분인 shell입니다.
3. 명령어 'id' : 현재 접속한 계정의 id 정보 확인하기
가장 간단한 버전의 'id' 명령어만 사용해봅시다.
$ id
# 명령어 뒤에 아무 전달 인자도 없으면, 현재 접속한 계정의 id 정보를 출력
'id' 명령어도 'useradd' 명령어와 같이 더 많은 기능 및 입력 방법을 가지고 있지만, 우선은 단독으로 사용하여 현재 접속한 계정의 id 정보를 확인하는 용도로만 사용합니다.
(궁금하면, 찾아보세요)
'id' 명령어를 입력해 현재 접속한 anbymata 계정의 사용자 정보를 확인해보면,

anbymata 계정의 UID가 1001이고,
계정 생성 시 별도로 그룹을 지정하지 않았기 때문에, 시스템은 사용자 이름과 동일한 anbymata 그룹을 자동으로 생성하고
GID 1001을 할당한 뒤, 해당 계정을 그 그룹의 기본 그룹 (primary group)으로 설정한 모습입니다.
(useradd 시 그룹을 지정하지 않으면, 사용자명과 동일한 그룹이 자동 생성되고 UID와 동일한 GID가 할당됩니다.)
사실 useradd 명령어의 예시를 하나 들어보면,
'useradd -m -u 1001 -g users -G sudo /bin/bash anbymata'
처럼 옵션을 사용하여 UID 1001을 지정하고, users라는 기본 그룹과 sudo라는 보조 그룹을 지정하며 "/bin/bash"라는 로그인 쉘까지 지정한 anbymata 계정을 만들 수도 있습니다.
(상세히 다 지정한 상태로 계정 생성 가능! 일단은 넘어가죠~)
4. 명령어 'exit' : 접속한 계정에서 나가기
다시 원래의 root 계정으로 되돌아가기 위해 anbymata 계정에서 나갑시다!
'exit' 명령어를 입력하면 su 명령어로 변경했던 계정에서 나갈 수 있습니다.

'exit' 명령어를 통해 변경했던 shell에서 나가고,
다시 원래의 입력 부분으로 돌아온 모습입니다.
현재는 root 계정으로 돌아온 상태이니, 여기서 'id' 명령어를 입력해 root 계정의 정보도 확인해봅시다!

위에서 설명한 것처럼 UID 0을 가진 모습이고, 기본 그룹도 GID 0의 root 그룹인걸 확인할 수 있습니다.
EP.11 - UID, GID (useradd, id, su, exit). END.
'[Linux 기초]' 카테고리의 다른 글
| [Linux 기초] EP.10 - 파일/디렉토리의 복사, 삭제, 이동 (cp, rm, mv) (1) | 2025.10.09 |
|---|---|
| [Linux 기초] EP.9 - 파일 내용 확인하기 (cat, file, more) (1) | 2025.10.06 |
| [Linux 기초] EP.8 - vi 편집기로 파일 생성, 입력, 저장하기 (vi) (2) | 2025.10.04 |
| [Linux 기초] EP.7 - 리눅스 편리하게 사용하기 - man과 자동완성 (0) | 2025.09.23 |
| [Linux 기초] EP.6 - 절대 경로? 상대 경로? (1) | 2025.09.22 |