기본 문법
useradd [옵션] 사용자명
useradd는 /etc/passwd, /etc/shadow, /etc/group, /etc/gshadow 등 계정 관련 파일에 항목을 추가해 새 사용자 계정을 만드는 저수준 관리 명령입니다. UID, 기본 그룹, 추가 그룹, 홈 디렉터리, 로그인 셸, 계정 설명 같은 속성을 옵션으로 지정할 수 있고, 값을 주지 않으면 /etc/default/useradd와 /etc/login.defs에 정의된 기본값을 따릅니다. 실행에는 root 권한(또는 sudo)이 필요합니다.
실무에서는 신규 입사자 계정 발급, 서비스 전용 계정 생성, 스크립트를 이용한 다수 계정 일괄 생성에 사용합니다. Rocky Linux 8에서는 사용자와 같은 이름의 개인 그룹(UPG)이 함께 만들어지고, /etc/login.defs의 CREATE_HOME 설정이 yes이므로 일반 사용자는 -m 없이도 홈 디렉터리가 생성됩니다(시스템 계정 -r은 예외). 홈 디렉터리를 만들 때는 /etc/skel의 내용이 복사됩니다.
useradd는 비밀번호를 설정하지 않으므로 생성 직후 계정은 비밀번호 로그인이 불가능한 상태입니다. 로그인이 필요하면 passwd로 비밀번호를 지정하고, 사용 기간 정책은 chage로 조정합니다. 리눅스마스터·RHCSA·LPIC 등 자격 시험에서는 -u, -g, -G, -s, -d 옵션의 차이와 /etc/skel, /etc/default/useradd의 역할이 출제 범위에 포함됩니다.
자주 쓰는 옵션
| 옵션 | 의미 | 예 |
|---|---|---|
-u | 사용자의 UID를 직접 지정 | useradd -u 2024 sisley |
-g | 기본(주) 그룹을 그룹명 또는 GID로 지정. 그룹이 미리 존재해야 함 | useradd -g devops trainee |
-G | 추가(2차) 그룹을 쉼표로 구분해 지정. 그룹이 미리 존재해야 함 | useradd -G sysadms,wheel harry |
-s | 로그인 셸을 지정. 대화형 로그인 차단에는 /sbin/nologin 사용 | useradd -s /sbin/nologin appsvc |
-c | 계정 설명(GECOS) 필드를 지정 | useradd -c "Sales Team" sisley |
-d | 홈 디렉터리 경로를 기본값과 다르게 지정. 상위 디렉터리는 미리 있어야 함 | useradd -d /home2/trainee trainee |
-m | 홈 디렉터리를 생성하고 스켈레톤 파일을 복사 | useradd -m demo_user |
-M | 홈 디렉터리를 만들지 않음(CREATE_HOME=yes여도 적용) | useradd -M -s /sbin/nologin appsvc |
-r | 시스템 계정으로 생성. UID를 /etc/login.defs의 SYS_UID_MIN~SYS_UID_MAX 범위에서 할당하고 기본적으로 홈 디렉터리를 만들지 않음 | useradd -r -s /sbin/nologin appsvc |
-k | /etc/skel 대신 사용할 스켈레톤 디렉터리를 지정(-m과 함께 사용) | useradd -m -k /etc/skel.web webuser |
-D | 사용자명 없이 쓰면 /etc/default/useradd의 기본값을 출력하고, 값과 함께 쓰면 기본값을 변경 | useradd -D |
실무 예시
기본 사용자 생성
$ useradd demo_user1; id demo_user1
uid=1000(demo_user1) gid=1000(demo_user1) groups=1000(demo_user1)
옵션 없이 생성하면 사용자와 같은 이름의 개인 그룹(UPG)이 기본 그룹으로 함께 만들어집니다. UID·GID 숫자는 시스템에 이미 있는 계정 수에 따라 달라집니다.
UID와 설명 지정
$ useradd -u 2024 -c "New Staff" demo_sisley; grep demo_sisley /etc/passwd
demo_sisley:x:2024:2024:New Staff:/home/demo_sisley:/bin/bash
-u로 UID를 고정하고 -c로 계정 설명(GECOS)을 넣은 결과를 /etc/passwd에서 확인합니다. 개인 그룹의 GID도 비어 있으면 같은 번호로 잡힙니다.
기본 그룹과 추가 그룹 지정
준비: groupadd -f demo_devops; groupadd -f demo_sysadms
$ useradd -g demo_devops -G demo_sysadms -s /bin/bash demo_harry; id demo_harry
uid=2025(demo_harry) gid=2025(demo_devops) groups=2025(demo_devops),2026(demo_sysadms)
-g는 기본 그룹, -G는 추가 그룹을 지정합니다. id 출력의 gid가 기본 그룹이며, -g를 쓰면 같은 이름의 개인 그룹은 만들어지지 않습니다. UID/GID 숫자는 환경에 따라 달라집니다.
로그인 차단 서비스 계정
준비: groupadd -f demo_apps
$ useradd -r -M -g demo_apps -s /sbin/nologin demo_appsvc; grep demo_appsvc /etc/passwd
demo_appsvc:x:997:2027::/home/demo_appsvc:/sbin/nologin
-r로 시스템 계정을 만들어 UID가 1000 미만(SYS_UID 범위)에서 할당되고, -M으로 홈 디렉터리 생성을 생략하며, nologin 셸로 대화형 로그인을 차단합니다. /etc/passwd에는 홈 경로가 기록되지만 디렉터리는 실제로 만들어지지 않습니다.
스켈레톤 디렉터리로 기본 파일 제공
준비: mkdir -p /tmp/demo/skel/www; echo hello > /tmp/demo/skel/www/index.html
$ useradd -m -k /tmp/demo/skel demo_web; ls -a /home/demo_web
.
..
www
-k로 지정한 디렉터리의 내용이 새 홈 디렉터리에 복사됩니다. -k는 /etc/skel을 대체하므로 예시처럼 www만 있는 디렉터리를 지정하면 .bashrc 같은 기본 설정 파일은 복사되지 않습니다. 기본 파일도 함께 두려면 /etc/skel을 복사한 뒤 수정해 사용하세요.
주의할 점
- useradd는 비밀번호를 만들지 않아 생성 직후에는 비밀번호 로그인이 불가능합니다. 로그인하려면 passwd로 비밀번호를 지정해야 합니다.
- -g(기본 그룹)와 -G(추가 그룹)를 혼동하기 쉽습니다. 지정할 그룹은 groupadd로 미리 만들어 두어야 하며, 없으면 명령이 실패합니다.
- /etc/skel 내용은 계정 생성 시점에만 복사됩니다. 이미 만들어진 사용자에게는 자동 반영되지 않습니다.
- -d로 기본값과 다른 경로를 지정할 때 상위 디렉터리는 미리 있어야 하며, 홈 디렉터리 권한은 기본값(750 또는 700)을 유지하세요. 다른 사용자의 접근을 허용하려고 777로 바꾸면 홈 내용이 모두 노출됩니다.
- 기본 홈 경로·셸 등을 바꿀 때는 /etc/passwd 같은 파일을 직접 편집하지 말고 useradd -D를 사용하세요. /etc/default/useradd를 편집해야 한다면 먼저 사본을 만들어 두는 것이 안전합니다.
- 예제의 UID·GID 값은 실행 환경의 기존 계정 상황에 따라 달라집니다. 숫자 자체보다 필드의 의미를 확인하세요.
이 명령어로 풀 수 있는 실습 문제
브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.
관련 명령어
마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.
