
리눅스 시스템을 운영하다 보면 가장 자주 마주치는 작업이 유저와 그룹 관리다.
처음에는 useradd만 알아도 될 것 같지만, 실제로는 유저 생성부터 삭제, 그룹 권한 관리까지 알아야 할 명령어가 꽤 많다.
이번 글에서는 다음을 기준으로 실전에서 바로 쓸 수 있는 유저/그룹 관리 명령어를 정리한다:
useradd,adduser: 유저 생성usermod: 유저 정보 수정groupadd: 그룹 생성passwd: 비밀번호 설정 및 계정 잠금/해제deluser,groupdel: 삭제gpasswd: 그룹 관리자 및 권한 설정
유저 생성 – useradd vs adduser
useradd – 기본 유저 추가 (옵션 지정 필요)
# 기본 사용자 추가 (홈 디렉토리 생성 안됨)
sudo useradd testuser
# 홈 디렉토리, 셸 지정 포함
sudo useradd -m -s /bin/bash testuser| 옵션 | 설명 |
|---|---|
| -m | 홈 디렉토리 자동 생성 (/home/사용자) |
| -s | 로그인 셸 지정 (기본은 /bin/sh) |
| -d | 홈 디렉토리 경로 수동 지정 |
| -G | 보조 그룹 지정 (쉼표로 구분) |
| -u | UID 지정 |
| -g | 주 그룹 지정 |
| -c | 설명(Comment) 필드 추가 |
adduser – 친절한 대화형 유저 생성
sudo adduser testuser실행하면 다음과 같은 대화형 프롬프트가 나온다:
Adding user `testuser` ...
Enter new UNIX password:
Retype new UNIX password:
...
Is the information correct? [Y/n]입력 프롬프트가 뜨면서 비밀번호, 전체 이름 등을 입력 가능.
Ubuntu 계열에서 많이 사용되며, useradd보다 사용 편의성이 좋다.
usermod – 기존 유저 정보 변경
기존 사용자에게 그룹을 추가하거나 로그인 셸을 바꾸고 싶을 땐 usermod를 사용한다.
# 보조 그룹 추가 (기존 그룹 유지)
sudo usermod -aG docker testuser
# 주 그룹 변경
sudo usermod -g developers testuser
# 로그인 셸 변경
sudo usermod -s /bin/zsh testuser| 옵션 | 설명 |
|---|---|
| -aG | 보조 그룹 추가 (단, -G와 함께 사용해야 함) |
| -g | 주 그룹 변경 |
| -s | 셸 변경 |
| -d | 홈 디렉토리 변경 |
| -l | 사용자명 변경 |
| -L / -U | 계정 잠금/해제 |
유저 생성 기본 설정 – /etc/default/useradd & useradd -D
useradd 명령어로 유저를 생성할 때 적용되는 기본 설정값은 /etc/default/useradd 파일에 저장되어 있다.
이 파일을 확인하면 유저 생성 시 어떤 환경이 자동으로 적용되는지 알 수 있고,
useradd -D 명령어로 해당 값을 확인하거나 수정할 수 있다.
# /etc/default/useradd 항목 설명
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
| 항목 | 설명 |
|---|---|
GROUP=100 |
기본 그룹 ID (보통 users 그룹) |
HOME=/home |
유저 홈 디렉터리 루트 경로 |
INACTIVE=-1 |
계정 비활성 유예기간 (-1이면 비활성 안 함) |
EXPIRE= |
계정 만료일 (비어 있으면 만료일 없음) |
SHELL=/bin/bash |
기본 로그인 셸 |
SKEL=/etc/skel |
홈 디렉터리에 복사할 초기 환경 파일 경로 |
CREATE_MAIL_SPOOL=yes |
/var/mail/username 메일 파일 생성 여부 |
useradd -D 명령어로 기본값 보기 및 수정
# 현재 기본 설정 확인
useradd -D
출력 예시:
GROUP=100
HOME=/home
INACTIVE=-1
EXPIRE=
SHELL=/bin/bash
SKEL=/etc/skel
CREATE_MAIL_SPOOL=yes
기본 설정 변경하기
# 기본 로그인 셸을 /bin/zsh로 변경
sudo useradd -D -s /bin/zsh
# 기본 홈 디렉토리 경로를 /data/users로 변경
sudo useradd -D -b /data/users
| 옵션 | 설명 |
|---|---|
| -D | 기본값 조회 또는 설정 |
| -s | 기본 셸 설정 |
| -b | 기본 홈 디렉토리 설정 |
| -e | 기본 계정 만료일 설정 |
| -f | 기본 비활성 유예일 설정 |
기본 설정을 바꿔두면 매번
useradd옵션 입력 없이도 원하는 설정으로 유저 생성 가능/etc/skel디렉토리 안에는.bashrc,.profile같은 초기 셸 설정 파일이 들어 있음 → 새 유저 생성 시 복사됨
메일 스풀링은 실제 메일 시스템이 없다면CREATE_MAIL_SPOOL=no로 설정해도 무방
groupadd – 그룹 직접 추가
그룹만 따로 관리할 때는 groupadd를 사용한다.
# 개발자 그룹 추가
sudo groupadd developers
# GID를 지정해서 추가
sudo groupadd -g 1500 testgroup| 옵션 | 설명 |
|---|---|
| -g | GID 지정 |
| -f | 이미 존재할 경우 에러 없이 무시 |
| -r | 시스템 그룹으로 등록 (UID/GID 999 이하) |
/etc/group 파일에서 그룹 확인 가능
/etc/gshadow는 보안 정보 저장소
비밀번호 및 계정 관리 – passwd
# 비밀번호 설정
sudo passwd testuser
# 계정 잠금
sudo passwd -l testuser
# 계정 잠금 해제
sudo passwd -u testuser| 명령어 | 설명 |
|---|---|
| passwd 사용자명 | 비밀번호 변경 |
| -l | 계정 잠금 (/etc/shadow에 ! 추가) |
| -u | 계정 잠금 해제 |
잠금 상태에서는 비밀번호 로그인 불가. sudo 권한자도 비활성화할 수 있음.
유저 및 그룹 삭제 – deluser, groupdel
# 유저 삭제 (홈 디렉토리 유지)
sudo deluser testuser
# 유저 삭제 + 홈 디렉토리도 같이 삭제
sudo deluser --remove-home testuser
# 그룹 삭제
sudo groupdel developers| 명령어 | 설명 |
|---|---|
| deluser | 유저 삭제 (adduser의 반대) |
| --remove-home | 홈 디렉토리까지 삭제 |
| groupdel | 그룹 삭제 (단, 소속된 유저가 없어야 삭제됨) |
그룹 권한 관리 – gpasswd
# 그룹 관리자 설정
sudo gpasswd -A adminuser devteam
# 그룹에 유저 추가
sudo gpasswd -a testuser devteam
# 그룹에서 유저 제거
sudo gpasswd -d testuser devteam| 명령어 | 설명 |
|---|---|
| gpasswd -A | 그룹 관리자 지정 |
| gpasswd -a | 그룹에 유저 추가 |
| gpasswd -d | 그룹에서 유저 제거 |
/etc/group, /etc/gshadow에 권한 변경 사항 반영됨
마무리
리눅스의 유저와 그룹은 단순한 계정 정보 그 이상이다.
서비스 계정, sudo 권한 설정, 접근 제한 등과 맞물려 시스템 보안과 운영의 기본이 되는 영역이다.
조금만 익숙해지면 시스템 사용자 추가부터 보안 계정 관리까지 막힘없이 처리할 수 있으니, 자주 사용하는 명령어만이라도 반복적으로 써보며 익히는 것이 좋다.
'linux' 카테고리의 다른 글
| [리눅스 명령어] linux tar 명령어 – 압축 및 해제 (0) | 2025.05.28 |
|---|---|
| [리눅스 권한 명령어 정리] chmod, chown, umask (0) | 2025.05.27 |
| [리눅스 기본기] redirect, pipe, grep – 셋만 알아도 터미널이 쉬워진다 (0) | 2025.05.23 |
| [리눅스 기본기] vi 에디터 단축키 정리 - 이동, 복사, 삭제, 검색, 대치 (0) | 2025.05.22 |
| [리눅스 명령어] find 명령어 완전 정복 (0) | 2025.05.22 |