usermod 명령어 사용법

이미 만들어진 사용자 계정의 속성을 변경하는 명령어입니다.

사용자·그룹/인증연결 실습 문제 5개Rocky Linux 8 기준 · 실행 결과는 실습 컨테이너에서 확인

기본 문법

usermod [옵션] 사용자명

usermod는 /etc/passwd, /etc/shadow, /etc/group에 기록된 기존 계정 정보를 수정하는 명령어입니다. useradd로 만든 계정의 로그인 이름, UID, 홈 디렉터리, 로그인 셸, 주 그룹과 보조 그룹, 계정 만료일, 잠금 상태를 옵션으로 바꿀 수 있습니다.

실무에서는 부서 이동에 따른 그룹 재배치, 휴직·퇴사자 계정 잠금, 임시 계정의 만료일 지정 등에 사용합니다. -a와 -G를 함께 쓰면 기존 보조 그룹을 유지한 채 그룹을 추가하고, -G만 단독으로 쓰면 기존 보조 그룹이 지정한 목록으로 모두 교체됩니다. 이 차이를 구분하는 것이 핵심입니다.

계정 잠금(-L), 주 그룹(-g)과 보조 그룹(-G) 동시 지정, 계정 만료일(-e) 설정은 리눅스 관리 실습에서 자주 다루는 항목입니다. 변경 후에는 id, getent group, chage -l로 반영 결과를 확인하는 습관을 함께 익혀 두는 것이 좋습니다.

계정 정보는 /etc/passwd와 /etc/shadow를 직접 편집하지 말고 usermod, chage 같은 전용 명령으로 수정해야 파일 간 정합성이 유지됩니다.

자주 쓰는 옵션

옵션의미
-a, --append기존 보조 그룹을 유지한 채 그룹을 추가. 반드시 -G와 함께 사용usermod -a -G audit ihduser
-G, --groups보조 그룹 목록을 지정한 값으로 교체(쉼표로 구분). -a와 함께 쓰면 추가usermod -G ihd,linuxmaster ihduser
-g, --gid주(기본) 그룹 변경. 그룹명 또는 GID 지정usermod -g kait ihduser
-L, --lock/etc/shadow의 암호 필드 앞에 !를 붙여 비밀번호 인증을 잠금usermod -L ihduser
-U, --unlock암호 필드 앞의 !를 제거해 잠금 해제usermod -U ihduser
-e, --expiredate계정 만료일을 YYYY-MM-DD 형식으로 지정. 빈 문자열을 주면 만료일 해제usermod -e 2026-12-31 lab_kim
-s, --shell로그인 셸 변경usermod -s /sbin/nologin ihduser
-d, --home홈 디렉터리 경로 변경. 파일 이동 없이 경로 값만 바뀜usermod -d /home/newdir ihduser
-m, --move-home기존 홈 디렉터리의 내용을 새 경로로 이동. -d와 함께만 사용usermod -d /home/newdir -m ihduser
-l, --login로그인 이름 변경. 홈 디렉터리 이름은 그대로 유지됨usermod -l newuser olduser
-u, --uidUID 변경. 홈 디렉터리 안의 파일 소유권은 자동으로 갱신되지만 그 밖의 파일은 갱신되지 않음usermod -u 1500 ihduser

실무 예시

보조 그룹 추가하기

준비: useradd demo_user; groupadd demo_audit

$ usermod -aG demo_audit demo_user && id demo_user
uid=1000(demo_user) gid=1000(demo_user) groups=1000(demo_user),1001(demo_audit)

-a와 -G를 함께 쓰면 기존 그룹 구성을 유지한 채 보조 그룹만 덧붙입니다. id 출력의 groups 항목에서 추가 여부를 확인합니다. UID와 GID 값은 시스템에 이미 존재하는 계정에 따라 달라집니다.

주 그룹과 보조 그룹 동시에 지정

준비: useradd demo_trainee; groupadd demo_devops; groupadd demo_release

$ usermod -g demo_devops -G demo_release demo_trainee && id demo_trainee
uid=1001(demo_trainee) gid=1003(demo_devops) groups=1003(demo_devops),1004(demo_release)

-g는 주 그룹을, -G는 보조 그룹 목록 전체를 지정합니다. -a를 쓰지 않았으므로 기존 보조 그룹은 남지 않고 demo_devops와 demo_release 두 개만 표시됩니다.

passwd 없이 계정 잠그기

준비: useradd demo_lock

$ usermod -L demo_lock && grep '^demo_lock:' /etc/shadow | cut -d: -f1,2
demo_lock:!!

-L은 /etc/shadow의 암호 필드 앞에 !를 붙입니다. 비밀번호가 설정되지 않은 계정은 원래 필드 값이 !이므로 잠금 후 !!로 보입니다. 암호 필드가 !로 시작하면 비밀번호 인증이 잠긴 상태입니다.

계정 만료일 설정

준비: useradd demo_lab

$ usermod -e 2026-12-31 demo_lab && chage -l demo_lab | grep -i expires
Password expires					: never
Account expires						: Dec 31, 2026
Number of days of warning before password expires	: 7

-e로 지정한 날짜가 지나면 해당 계정으로 로그인할 수 없습니다. grep -i expires는 만료 관련 행을 모두 출력하므로 Account expires 행에서 반영 결과를 확인합니다.

홈 디렉터리와 셸 변경

준비: mkdir -p /tmp/demo; useradd -d /tmp/demo/old_home -m demo_move

$ usermod -d /tmp/demo/new_home -m -s /sbin/nologin demo_move && grep '^demo_move:' /etc/passwd
demo_move:x:1004:1007::/tmp/demo/new_home:/sbin/nologin

-d와 -m을 함께 쓰면 기존 홈 디렉터리의 파일까지 새 경로로 이동합니다. /etc/passwd의 6번째 필드(홈 경로)와 7번째 필드(셸)가 바뀐 것을 확인합니다. 새 경로에 이미 파일이 있으면 내용이 섞일 수 있으므로 비어 있는 경로를 지정하세요.

주의할 점

  • -a 없이 -G만 쓰면 기존 보조 그룹이 모두 사라지고 지정한 그룹으로 교체됩니다. 변경 전 id 명령으로 현재 그룹을 기록해 두세요.
  • -a는 -G와 함께만 동작합니다. usermod -a -g 형태는 오류가 납니다.
  • -d만 쓰면 경로 값만 바뀌고 파일은 기존 위치에 남습니다. 파일까지 옮기려면 -m을 함께 씁니다.
  • -L은 /etc/shadow의 비밀번호 인증만 막습니다. SSH 공개키나 sudo를 통한 접근은 그대로 가능하므로 완전한 차단이 필요하면 셸을 /sbin/nologin으로 바꾸거나 -e로 만료일을 과거 날짜로 지정하는 방법을 함께 사용합니다.
  • -u로 UID를 바꿔도 홈 디렉터리 밖에 있는 파일의 소유권은 자동으로 바뀌지 않습니다. 변경 후 find로 이전 UID 소유 파일을 확인해야 합니다.
  • 로그인 중인 사용자에게는 -l, -u, -d 변경이 거부되거나 실행 중인 프로세스의 소유권이 어긋날 수 있습니다. 해당 사용자가 로그아웃한 상태에서 수행하세요.
  • /etc/passwd, /etc/shadow, /etc/group을 편집기로 직접 수정하면 파일 간 정합성이 깨질 수 있습니다. 부득이하게 직접 편집해야 한다면 vipw, vigr를 사용하고 사전에 백업하세요.

이 명령어로 풀 수 있는 실습 문제

브라우저 웹 터미널에서 바로 풀고 요구사항별로 자동 채점됩니다. 로그인 없이 5분 체험도 가능합니다.

관련 명령어

마지막 검수 2026-09-16 · 내용에 오류가 있으면 문제 페이지의 질문 기능으로 알려 주세요.