useradd — 계정 생성

Linux / 사용자 및 보안 관리 / useradd.html

사용자 및 보안 관리원문등록 2026-10-18

💬 "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·셸을 확인한 결과입니다.

useradd 명령어 실행 결과: 서비스 계정 생성과 확인

실제 운영 중인 서버

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