리눅스 passwd 명령어 사용법 - 비밀번호 변경과 계정 잠금
이 명령어를 언제 쓰는가
새로 만든 계정에 비밀번호를 설정하거나, 비밀번호를 잊은 팀원의 계정을 초기화하거나, 퇴사·외주 종료로 계정을 즉시 잠글 때 쓴다.
운영 서버에서는 비밀번호를 바꾸는 용도보다 계정을 잠그고(-l) 만료시키는(-e) 용도가 더 자주 쓰인다. 보안 점검에서 "휴면 계정 처리"를 요구받으면 이 명령이 답이다.
기본 형식
passwd [옵션] [계정명]
- 계정명을 생략하면 현재 로그인한 자기 계정의 비밀번호를 바꾼다. 이때는 기존 비밀번호를 먼저 묻는다.
- 다른 계정을 지정하려면 root 권한이 필요하며, 기존 비밀번호를 묻지 않는다.
- 비밀번호는
/etc/shadow에 해시로 저장된다./etc/passwd에는x만 들어간다.
자주 쓰는 옵션
| 옵션 | 의미 | 예시 |
|---|---|---|
-S | 계정의 비밀번호 상태 확인 | sudo passwd -S jihoon |
-l | 비밀번호 잠금(해시 앞에 !를 붙임) | sudo passwd -l jihoon |
-u | 잠금 해제 | sudo passwd -u jihoon |
-e | 즉시 만료 — 다음 로그인 때 강제로 변경시킴 | sudo passwd -e jihoon |
-d | 비밀번호 제거(빈 비밀번호). 사실상 쓰지 말 것 | sudo passwd -d test |
-n 일 | 변경 후 다시 바꿀 수 있을 때까지의 최소 일수 | sudo passwd -n 1 jihoon |
-x 일 | 비밀번호 최대 유효 일수 | sudo passwd -x 90 jihoon |
-w 일 | 만료 며칠 전부터 경고할지 | sudo passwd -w 7 jihoon |
--stdin | 표준입력으로 비밀번호 받기(RHEL 계열 전용) | echo 'Pw!' | sudo passwd --stdin jihoon |
실전 예제
1. 새로 만든 계정에 비밀번호를 준다. useradd 직후 반드시 따라오는 단계다.
$ sudo passwd jihoon
New password:
Retype new password:
passwd: password updated successfully
2. 임시 비밀번호를 주고 첫 로그인 때 반드시 바꾸게 한다. 신규 입사자 계정 발급의 표준 절차다.
sudo passwd jihoon
sudo passwd -e jihoon
다음 접속 시 You are required to change your password immediately (administrator enforced)가 뜨고 변경 화면으로 넘어간다.
3. 계정 상태를 점검한다. 어떤 계정이 잠겨 있는지 한눈에 본다.
$ sudo passwd -S jihoon
jihoon P 08/25/2026 0 90 7 -1
$ sudo passwd -S -a | grep ' L '
두 번째 필드가 P는 정상, L은 잠김, NP는 비밀번호 없음이다. 뒤 숫자는 최종 변경일, 최소·최대 사용일, 경고일, 비활성일 순이다.
4. 퇴사자 계정을 즉시 차단한다. 비밀번호 잠금만으로는 부족하다. 셸까지 막아야 한다.
sudo passwd -l jihoon
sudo usermod -s /usr/sbin/nologin jihoon
sudo chage -E 0 jihoon # 계정 자체를 만료 처리
sudo mv /home/jihoon/.ssh/authorized_keys /home/jihoon/.ssh/authorized_keys.disabled
sudo pkill -u jihoon # 열려 있는 세션 종료
5. 비밀번호 만료 정책을 적용한다. 90일마다 변경, 만료 7일 전 경고.
sudo passwd -x 90 -w 7 -n 1 jihoon
sudo chage -l jihoon
함정과 주의점
passwd -l은 SSH 키 로그인을 막지 못한다. 잠금은/etc/shadow의 비밀번호 해시를 무효화할 뿐이라,authorized_keys에 키가 남아 있으면 그 계정으로 계속 들어올 수 있다. 퇴사자 차단이라면 키 파일 제거와 셸 변경,chage -E 0까지 함께 해야 한다.- 계정명을 빼먹으면 root 비밀번호를 바꾸게 된다.
sudo passwd는sudo passwd root와 같다. 다른 계정을 바꾸려다 root 비밀번호를 모르는 값으로 덮어쓰면, sudo가 살아 있는 동안에는 티가 안 나다가 콘솔 복구가 필요한 순간에 문제가 된다. --stdin은 배포판을 탄다. RHEL/CentOS/Rocky에는 있고 Ubuntu/Debian에는 없다. 스크립트에서 이식성 있게 쓰려면chpasswd를 쓴다. 다만 어느 쪽이든 셸 히스토리와 프로세스 목록에 평문이 노출될 수 있으므로 자동화에서는 SSH 키 방식이 낫다.echo 'jihoon:임시비밀번호' | sudo chpasswdpasswd -d는 빈 비밀번호를 만든다. "잠그는 것"이 아니라 "아무것도 입력하지 않아도 통과"에 가깝다. PAM 설정에 따라 로그인이 그냥 열릴 수 있으므로 운영 서버에서는 쓰지 않는다.- 비밀번호 정책은 passwd가 아니라 PAM이 검사한다. 길이·복잡도 규칙은
/etc/security/pwquality.conf(또는 pam_cracklib)에 있다. "짧은 비밀번호가 거부된다"면 passwd 옵션이 아니라 이 파일을 봐야 한다.
함께 보면 좋은 명령어
chage— 계정 만료일과 비밀번호 수명을 더 정밀하게 다룬다.usermod -L / -U— 잠금·해제의 다른 경로. 셸 변경도 함께 할 수 있다.chpasswd— 여러 계정의 비밀번호를 스크립트로 일괄 설정한다.lastlog— 마지막 로그인 시각을 보고 휴면 계정을 골라낸다.