chage 명령어 사용법

사용자 계정의 비밀번호 만료 정책을 조회하고 변경하는 명령어입니다.

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

기본 문법

chage [옵션] 사용자명

chage는 /etc/shadow에 기록된 비밀번호 관련 날짜 정보를 다루는 명령어입니다. 비밀번호를 마지막으로 바꾼 날, 최소·최대 사용일, 만료 경고일, 비활성 유예일, 계정 만료일을 읽고 수정할 수 있습니다. 값 변경에는 root 권한이 필요하며, 일반 사용자는 -l 옵션으로 자기 계정의 정책만 확인할 수 있습니다.

보안 기준에 맞춰 비밀번호를 주기적으로 변경하도록 강제하거나, 퇴사·계약 종료가 예정된 계정에 만료일을 미리 지정할 때 사용합니다. 신규 계정에 -d 0을 지정해 첫 로그인 시 비밀번호를 변경하도록 만드는 방식도 자주 쓰입니다.

리눅스마스터·RHCSA·LPIC 등의 시험에서는 특정 사용자의 최소/최대 사용일과 경고일을 지정하거나, 계정 만료일을 YYYY-MM-DD 형식으로 설정하는 문제로 출제됩니다. 관련 실습으로 #201(chage로 비밀번호 정책 적용하기), #176(사용자 비밀번호 최소 사용기간과 만료일 설정)이 있습니다. 설정 후에는 chage -l로 값이 반영됐는지 확인하는 것이 좋습니다.

자주 쓰는 옵션

옵션의미
-l해당 사용자의 비밀번호 정책 정보를 조회chage -l opsuser
-m비밀번호 최소 사용일(이 기간이 지나기 전에는 변경 불가, 0이면 제한 없음)chage -m 7 opsuser
-M비밀번호 최대 사용일(이 기간이 지나면 변경 요구)chage -M 90 opsuser
-W비밀번호 만료 며칠 전부터 경고 메시지를 표시할지 지정chage -W 14 opsuser
-E계정 만료일 지정(YYYY-MM-DD 또는 1970-01-01 이후의 일수, -1이면 만료 없음)chage -E 2026-12-31 rhuser
-I비밀번호 만료 후 계정이 잠기기까지의 비활성 유예일chage -I 30 opsuser
-d마지막 비밀번호 변경일 지정, 0을 주면 다음 로그인 시 변경을 강제chage -d 0 opsuser
-R지정한 디렉터리를 루트로 삼아 적용(chroot 환경용)chage -R /mnt/sysroot -M 90 opsuser

실무 예시

정책 조회하기

준비: useradd demo_ops

$ chage -l demo_ops
Last password change					: Sep 16, 2026
Password expires					: never
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 0
Maximum number of days between password change		: 99999
Number of days of warning before password expires	: 7

계정의 현재 비밀번호 정책과 만료 관련 날짜를 확인합니다. 새 계정의 기본값은 /etc/login.defs 설정을 따릅니다.

최소·최대 사용일 설정

준비: useradd demo_ops2

$ chage -m 7 -M 90 demo_ops2 && chage -l demo_ops2 | head -n 6
Last password change					: Sep 16, 2026
Password expires					: Dec 15, 2026
Password inactive					: never
Account expires						: never
Minimum number of days between password change		: 7
Maximum number of days between password change		: 90

최소 7일, 최대 90일 정책을 적용하고 결과를 바로 확인합니다. 여러 옵션을 한 번에 지정할 수 있습니다. 마지막 변경일이 2026-09-16이므로 만료일은 90일 뒤인 2026-12-15로 계산됩니다.

경고일까지 포함한 정책 적용

준비: useradd demo_policy

$ chage -m 7 -M 90 -W 14 demo_policy && chage -l demo_policy | grep -i warning
Number of days of warning before password expires	: 14

실습 #201과 같은 형태입니다. 비밀번호 만료 14일 전부터 경고가 표시되도록 설정한 뒤 해당 항목만 확인합니다.

계정 만료일 지정

준비: useradd demo_temp

$ chage -E 2026-12-31 demo_temp && chage -l demo_temp | grep -i 'Account expires'
Account expires						: Dec 31, 2026

지정한 날짜가 지나면 해당 계정으로 로그인할 수 없습니다. 계약직·임시 계정에 사용합니다.

다음 로그인 시 비밀번호 변경 강제

준비: useradd demo_first

$ chage -d 0 demo_first && chage -l demo_first | grep -i 'Last password change'
Last password change					: password must be changed

마지막 변경일을 0으로 지정하면 다음 로그인 때 비밀번호를 변경해야 합니다. /etc/shadow의 세 번째 필드가 0이 되며, chage -l에서는 'password must be changed'로 표시됩니다. shadow 파일은 직접 편집하지 말고 chage로 변경하세요.

주의할 점

  • -m(최소)과 -M(최대)은 대소문자로 의미가 갈립니다. 소문자 -m을 최댓값으로 착각하는 실수가 잦습니다.
  • -E의 날짜는 YYYY-MM-DD 형식이어야 합니다. 2026/12/31 같은 형식은 인식되지 않습니다.
  • 최소 사용일이 최대 사용일보다 크면 사용자가 비밀번호를 변경할 수 없게 됩니다.
  • 값 변경에는 root 권한이 필요하며, 일반 사용자는 자기 계정의 -l 조회만 가능합니다.
  • /etc/shadow를 편집기로 직접 수정하면 형식이 깨져 로그인이 불가능해질 수 있습니다. 확인은 chage -l로, 변경은 chage나 passwd로 하십시오.
  • chage -l 출력의 'Password expires'는 마지막 변경일에 최대 사용일을 더해 계산된 값이므로, -M만 바꿔도 만료일이 함께 바뀝니다.

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

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

관련 명령어

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