useradd — 계정 생성
Linux / 사용자 및 보안 관리 / useradd.html
💬 "useradd 명령어"
useradd는 계정을 만듭니다. 서비스 계정은 로그인 셸을 막아 최소 권한으로 운영합니다.
adduser(대화형)와 달리 옵션으로 정확히 지정합니다.
- 개념: 새 사용자 계정을 생성합니다.
- -r: 시스템 계정으로 만들어 UID를 낮게 잡습니다.
- -s: 로그인 셸을 지정합니다(서비스 계정은 /usr/sbin/nologin).
- -G: 보조 그룹을 지정합니다.
자주 쓰는 옵션
| 옵션 | 설명 |
|---|---|
-r | 시스템 계정 생성 |
-m | 홈 디렉터리 생성 |
-s /usr/sbin/nologin | 로그인 금지(서비스 계정) |
-G <그룹> | 보조 그룹 지정 |
필수 명령어 조합 3가지
useradd -r -s /usr/sbin/nologin -d /opt/app myapp— 로그인 불가 서비스 계정 생성useradd -m -s /bin/bash deploy— 배포용 로그인 계정 생성id myapp— 생성 결과(UID/GID/그룹) 확인
💬 "트러블슈팅 흐름으로 예시 하나 구성해줘"
실제 운영 중인 서버에서 자주 만나는 상황을 순서대로 정리했습니다.
1단계 · 계정 생성
용도에 맞게 옵션을 지정합니다.
useradd -r -s /usr/sbin/nologin -d /opt/app myapp
2단계 · 그룹 지정
필요하면 보조 그룹에 넣습니다.
usermod -aG www-data myapp
3단계 · 확인
UID/GID와 셸을 확인합니다.
id myapp && getent passwd myapp
실무에서는 이렇게 씁니다
1. 서비스 계정 분리
상황 — 앱을 root로 돌리지 않도록 전용 계정이 필요합니다.
useradd -r -s /usr/sbin/nologin -d /opt/app myapp && chown -R myapp:myapp /opt/app
결과 — 앱이 전용 계정으로 실행될 수 있는 기반이 만들어집니다.
포인트 — 서비스는 최소 권한 계정으로 돌리는 것이 보안 기본입니다.
2. 배포 계정
상황 — CI가 SSH로 접속할 계정이 필요합니다.
useradd -m -s /bin/bash deploy && mkdir -p /home/deploy/.ssh && chown -R deploy:deploy /home/deploy/.ssh
결과 — 키 인증을 설정할 수 있는 배포 계정이 생깁니다.
포인트 — 권한은 필요한 디렉터리로만 한정합니다.
주의할 점
- root로 서비스 실행은 금지에 가깝습니다. 전용 계정을 만듭니다.
- 셸을 nologin으로 두지 않으면 서비스 계정이 로그인 통로가 됩니다.
- 계정 삭제 시 남은 파일 소유권과 cron/서비스 참조를 함께 정리합니다.
실제 실행 화면
서비스 계정을 생성하고 UID/GID·셸을 확인한 결과입니다.

실제 운영 중인 서버
이 문서는 화면 표시용 가상 디렉터리의 항목입니다. 실제 서버 파일시스템과 연결되지 않으며, 파일 실행이나 시스템 명령을 수행하지 않습니다.