공든탑앱 열기

/etc/shadow와 패스워드 에이징

리눅스마스터 2급 · 기본 명령어 · 약 11분

쉽게 말하면

비밀번호를 따로 보관하는 금고 파일이에요. 비밀번호를 그대로 적지 않고 되돌릴 수 없게 뒤섞은 값으로 저장하고, '90일마다 바꾸기' 같은 규칙도 함께 적어요. 관리자(root)만 읽을 수 있어요.

시험용 정의

/etc/shadow는 암호화된(해시) 비밀번호와 비밀번호 사용 기간 정보를 담은 파일로, root만 읽을 수 있다. 9개 필드로 되어 있고, 기간 정보는 chage 명령으로 바꾼다.

비유로 이해하기

은행 금고실의 비밀 장부다. 금고 비밀번호(해시)와 "90일마다 바꿔야 함, 만료 7일 전 알림" 같은 규칙이 적혀 있고 관리자만 볼 수 있다.

자세히

그림으로 보기: /etc/shadow 한 줄

kim:$6$…:20000:0:99999:7:::
kim
1 이름
$6$…
2 암호 해시
20000
3 마지막 변경
0
4 최소
99999
5 최대
7
6 경고
(빈칸)
7 비활성
(빈칸)
8 만료
(빈칸)
9 예약
날짜는 1970년 1월 1일부터 센 일수다. 최소·최대·경고·비활성은 날 수다

왜 비밀번호를 따로 두나

/etc/passwd는 ls·ps 같은 프로그램이 UID를 이름으로 바꿔 보여 주려고 누구나 읽을 수 있어야 한다. 예전엔 여기에 비밀번호 해시도 있어서, 누구나 해시를 복사해 가서 대입 공격으로 풀 수 있었다. 그래서 해시와 기간 정보만 root만 읽는 /etc/shadow로 옮겼다(passwd의 두 번째 필드가 x인 이유).

  • 해시: 비밀번호를 거꾸로 되돌릴 수 없는 방식으로 바꾼 값. 로그인할 때 입력값을 같은 방식으로 바꿔 저장된 값과 같은지만 비교한다. 원래 비밀번호는 어디에도 저장되지 않는다
  • 솔트: 해시 앞에 섞는 무작위 문자열($6$솔트$해시의 가운데). 같은 비밀번호라도 사용자마다 해시가 달라진다
  • 패스워드 에이징: 비밀번호 사용 기간을 정해 주기적으로 바꾸게 하는 정책. shadow의 4~8번째 필드

9개 필드

순서필드chage 옵션
1사용자 이름
2암호 해시 (! 잠김, * 로그인 불가, 비면 비밀번호 없음)
3마지막 변경일 (1970.1.1부터 일수)-d
4최소 사용 기간 (MIN)-m
5최대 사용 기간 (MAX)-M
6경고 기간 (WARN)-W
7비활성 기간 (INACTIVE)-I
8계정 만료일 (EXPIRE)-E
9예약

chage

명령뜻
chage -l kimkim의 비밀번호 기간 정보 보기 (일반 사용자는 자기 것)
chage -M 90 kim최대 90일
chage -m 1 kim최소 1일
chage -W 7 kim만료 7일 전부터 경고
chage -E 2026-12-31 kim계정 만료일 지정
chage -d 0 kim다음 로그인 때 비밀번호 강제 변경

기본값과 변환

새 계정의 기본 기간은 /etc/login.defs의 PASS_MAX_DAYS·PASS_MIN_DAYS·PASS_WARN_AGE가 정한다. pwconv는 passwd의 암호를 shadow로 옮기고, pwunconv는 되돌린다. 그룹 암호는 /etc/gshadow.

시험에 이렇게 나와요

1차 출제기준 · 공개 기출 없음

확인 문제

Q1. /etc/shadow에서 kim의 비밀번호 칸이 !$6$abc...처럼 !로 시작한다. 무슨 뜻일까?

  1. 비밀번호가 없음
  2. 관리자 계정
  3. 계정(비밀번호)이 잠겨 있음
  4. 비밀번호가 만료됨
정답 보기

3번 계정(비밀번호)이 잠겨 있음

해시 앞에 !(또는 !!)를 붙이면 그 해시와 일치하는 입력이 없어져 비밀번호 로그인이 막힌다(잠금). passwd -l이나 usermod -L이 이렇게 한다. *는 처음부터 비밀번호 로그인이 없는 시스템 계정 표시.

Q2. /etc/shadow의 필드 개수는?

  1. 10개
  2. 8개
  3. 9개
  4. 7개
정답 보기

3번 9개

9개다. 이름, 암호화된 비밀번호, 마지막 변경일, 최소·최대 사용 기간, 경고일, 비활성일, 만료일, 예약 필드다.

Q3. 비밀번호 최대 사용 기간을 90일로 지정하는 명령은?

  1. chage -m 90 kim
  2. chage -M 90 kim
  3. passwd -e 90 kim
  4. chage -W 90 kim
정답 보기

2번 chage -M 90 kim

대문자 M(maximum). 소문자 m은 최소.

Q4. 암호 해시가 $6$으로 시작할 때 사용한 알고리즘은?

  1. SHA-256
  2. SHA-512
  3. DES
  4. MD5
정답 보기

2번 SHA-512

$1$ MD5, $5$ SHA-256, $6$ SHA-512.

Q5. 사용자의 비밀번호 만료 정보를 확인하는 명령은?

  1. passwd -l kim
  2. finger kim
  3. chage -l kim
  4. id kim
정답 보기

3번 chage -l kim

chage -l(list). passwd -l은 잠금!

헷갈리기 쉬운 O·X

/etc/shadow는 모든 사용자가 읽을 수 있다.

정답 보기

X root만.

chage -l 과 passwd -l 은 같은 기능이다.

정답 보기

X chage -l은 정보 보기, passwd -l은 계정 잠금.

shadow의 날짜 필드는 1970년 1월 1일부터 지난 일수로 저장된다.

정답 보기

O 맞는 설명이다.

함께 보면 좋은 개념