/etc/shadow와 패스워드 에이징
쉽게 말하면
비밀번호를 따로 보관하는 금고 파일이에요. 비밀번호를 그대로 적지 않고 되돌릴 수 없게 뒤섞은 값으로 저장하고, '90일마다 바꾸기' 같은 규칙도 함께 적어요. 관리자(root)만 읽을 수 있어요.
시험용 정의
/etc/shadow는 암호화된(해시) 비밀번호와 비밀번호 사용 기간 정보를 담은 파일로, root만 읽을 수 있다. 9개 필드로 되어 있고, 기간 정보는 chage 명령으로 바꾼다.
비유로 이해하기
은행 금고실의 비밀 장부다. 금고 비밀번호(해시)와 "90일마다 바꿔야 함, 만료 7일 전 알림" 같은 규칙이 적혀 있고 관리자만 볼 수 있다.
자세히
그림으로 보기: /etc/shadow 한 줄
왜 비밀번호를 따로 두나
/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 kim | kim의 비밀번호 기간 정보 보기 (일반 사용자는 자기 것) |
| 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.
시험에 이렇게 나와요
- /etc/shadow: 암호 해시와 만료 정보, root만 읽을 수 있음
- 필드: 마지막 변경일, 최소·최대 사용일, 경고일
1차 출제기준 · 공개 기출 없음
확인 문제
Q1. /etc/shadow에서 kim의 비밀번호 칸이 !$6$abc...처럼 !로 시작한다. 무슨 뜻일까?
- 비밀번호가 없음
- 관리자 계정
- 계정(비밀번호)이 잠겨 있음
- 비밀번호가 만료됨
정답 보기
3번 계정(비밀번호)이 잠겨 있음
해시 앞에 !(또는 !!)를 붙이면 그 해시와 일치하는 입력이 없어져 비밀번호 로그인이 막힌다(잠금). passwd -l이나 usermod -L이 이렇게 한다. *는 처음부터 비밀번호 로그인이 없는 시스템 계정 표시.
Q2. /etc/shadow의 필드 개수는?
- 10개
- 8개
- 9개
- 7개
정답 보기
3번 9개
9개다. 이름, 암호화된 비밀번호, 마지막 변경일, 최소·최대 사용 기간, 경고일, 비활성일, 만료일, 예약 필드다.
Q3. 비밀번호 최대 사용 기간을 90일로 지정하는 명령은?
- chage -m 90 kim
- chage -M 90 kim
- passwd -e 90 kim
- chage -W 90 kim
정답 보기
2번 chage -M 90 kim
대문자 M(maximum). 소문자 m은 최소.
Q4. 암호 해시가 $6$으로 시작할 때 사용한 알고리즘은?
- SHA-256
- SHA-512
- DES
- MD5
정답 보기
2번 SHA-512
$1$ MD5, $5$ SHA-256, $6$ SHA-512.
Q5. 사용자의 비밀번호 만료 정보를 확인하는 명령은?
- passwd -l kim
- finger kim
- chage -l kim
- 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 맞는 설명이다.