[리눅스 유저 & 그룹 관리] useradd, usermod, passwd, groupadd

2025. 5. 26. 16:04·linux
728x90
반응형

리눅스 시스템을 운영하다 보면 가장 자주 마주치는 작업이 유저와 그룹 관리다.
처음에는 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 권한 설정, 접근 제한 등과 맞물려 시스템 보안과 운영의 기본이 되는 영역이다.

조금만 익숙해지면 시스템 사용자 추가부터 보안 계정 관리까지 막힘없이 처리할 수 있으니, 자주 사용하는 명령어만이라도 반복적으로 써보며 익히는 것이 좋다.

728x90
반응형

'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
'linux' 카테고리의 다른 글
  • [리눅스 명령어] linux tar 명령어 – 압축 및 해제
  • [리눅스 권한 명령어 정리] chmod, chown, umask
  • [리눅스 기본기] redirect, pipe, grep – 셋만 알아도 터미널이 쉬워진다
  • [리눅스 기본기] vi 에디터 단축키 정리 - 이동, 복사, 삭제, 검색, 대치
highgarden
highgarden
커밋 하나하나가 쌓여 커다란 정원이 되는 중입니다. 하루하루 정성껏 심어가는 중 https://github.com/highgarden7
  • highgarden
    커밋심는 정원
    highgarden
  • 전체
    오늘
    어제
    • 분류 전체보기 (37)
      • ai (1)
      • devops (2)
      • Nest.js (14)
      • linux (14)
      • 네트워크 (6)
      • git (0)
      • aws (0)
      • docker (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • github
  • 공지사항

  • 인기 글

  • 태그

    Chat GPT
    IP
    Java
    springboot
    githib action
    Linux
    네트워크
    nestjs
    E2E
    vercel
  • 최근 댓글

  • 최근 글

  • 250x250
  • hELLO· Designed By정상우.v4.10.3
highgarden
[리눅스 유저 & 그룹 관리] useradd, usermod, passwd, groupadd
상단으로

티스토리툴바