Devin.KR
로그인

리눅스 passwd 명령어 사용법 - 비밀번호 변경과 계정 잠금

개발자 조회 2

이 명령어를 언제 쓰는가

새로 만든 계정에 비밀번호를 설정하거나, 비밀번호를 잊은 팀원의 계정을 초기화하거나, 퇴사·외주 종료로 계정을 즉시 잠글 때 쓴다.

운영 서버에서는 비밀번호를 바꾸는 용도보다 계정을 잠그고(-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 passwdsudo passwd root와 같다. 다른 계정을 바꾸려다 root 비밀번호를 모르는 값으로 덮어쓰면, sudo가 살아 있는 동안에는 티가 안 나다가 콘솔 복구가 필요한 순간에 문제가 된다.
  • --stdin은 배포판을 탄다. RHEL/CentOS/Rocky에는 있고 Ubuntu/Debian에는 없다. 스크립트에서 이식성 있게 쓰려면 chpasswd를 쓴다. 다만 어느 쪽이든 셸 히스토리와 프로세스 목록에 평문이 노출될 수 있으므로 자동화에서는 SSH 키 방식이 낫다.
    echo 'jihoon:임시비밀번호' | sudo chpasswd
  • passwd -d는 빈 비밀번호를 만든다. "잠그는 것"이 아니라 "아무것도 입력하지 않아도 통과"에 가깝다. PAM 설정에 따라 로그인이 그냥 열릴 수 있으므로 운영 서버에서는 쓰지 않는다.
  • 비밀번호 정책은 passwd가 아니라 PAM이 검사한다. 길이·복잡도 규칙은 /etc/security/pwquality.conf(또는 pam_cracklib)에 있다. "짧은 비밀번호가 거부된다"면 passwd 옵션이 아니라 이 파일을 봐야 한다.

함께 보면 좋은 명령어

  • chage — 계정 만료일과 비밀번호 수명을 더 정밀하게 다룬다.
  • usermod -L / -U — 잠금·해제의 다른 경로. 셸 변경도 함께 할 수 있다.
  • chpasswd — 여러 계정의 비밀번호를 스크립트로 일괄 설정한다.
  • lastlog — 마지막 로그인 시각을 보고 휴면 계정을 골라낸다.