728x90
/etc/passwd
/etc/passwd 파일은 리눅스 및 유닉스 계열 운영체제에서 사용자 계정정보를 저장하는 텍스트파일입니다. 각 사용자의 로그인 정보를 포함하고 있으며 시스템이 로그인 요청을 처리할 때 참고합니다.
파일 형식
이 파일은 콜론으로 구분된 여러 필드로 구성되어 있다. 각 줄을 하나의 사용자 계정을 나타냅니다.
username:password:UID:GID:comment:home_directory:shell
각 필드에 대한 설명
필드 | 설명 |
username | 로그인 이름(root, user1) |
password | 암호정보(보통 x로 표시되고, 진짜 해시값은 /etc/shadow에 저장됨) |
UID | 사용자 ID(숫자, root는 보통 0) |
GID | 기본 그룹 ID (숫자, /etc/group 파일 참조) |
comment | 사요자 정보(이름, 설명 등 - GECOS 필드라고도 함) |
home_directory | 사용자의 홈 디렉토리 경로(ex: /home/user1) |
shell | 로그인 시 실행되는 shell( /bin/bash, /sbin/nologin) |
예시
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
user1:x:1000:1000:홍길동:/home/user1:/bin/bash
주요 사항
- 이 파일은 모든 사용자가 읽을 수 있다(644 권한)
- password 필드는 보안을 위해 x로 대체되며, 실제 암호 해시값은 /etc/shadow에 저장됩니다.
- UID가 0이면 슈퍼 유저(root) 권한을 가집니다.
- UID가 1000 이상이면 일반 사용자 계정입니다.
- 시스템 계정(ex. daemon, bin, nobody)은 로그인하지 못하게 보통 /usr/sbin/nologin 셸을 사용합니다.
- /etc/passwd 파일 자체는 암호를 포함하지 않지만 여전히 조작될 경우 심각한 보안 위협이 됩니다.
- 실수로 수정하지 않도록 vipw 명령어를 사용하여 안전하게 편집하여야 한다.
/etc/shadow
/etc/shadow 파일은 리눅스 및 유닉스 시스템에서 사용자 계정의 암호(비밀번호) 정보를 저장하는 보안파일입니다. 이 파일은 /etc/passwd 보다 더 민감한 정ㅂ모를 포함하므로 접근이 제한됩니다.
/etc/shadow 파일 개요
- 목적 : 각 사용자 계정의 암호 해시값 및 만료 정보를 저장
- 권한 : 보통 -rw-r-----, 소유자 root, 그룹 shadow
ls -l /etc/shadow
-rw-r----- 1 root shadow 1234 Jun 3 10:00 /etc/shadow
파일 형식
콜론으로 구분된 필드로 구성
username:password:last_change:min:max:warn:inactive:expire:reserved
필드 번호 | 필드명 | 설명 |
1 | username | 사용자 이름(ex. user1) |
2 | password | 암호 해시값, 또는 계정 상태 |
3 | last_change | 마지막으로 비밀번호가 변경된 날짜(1970-01-01부터 경과한 일수) |
4 | min | 비밀번호 변경 최소 일수(이전 후 최소 며칠 뒤에 변경 가능) |
5 | max | 비밀번호 변경 최대 일수(이후 비밀번호 만료됨) |
6 | warn | 만료 전 경고 시작일수 |
7 | inactive | 만료 후 비활성화되기까지의 유예기간 |
8 | expire | 계정 만료일(1970-01-01부터의 일수) |
9 | reserved | 예약 필드(보통 비어 있음 |
예시
user1:$6$sdf9SdFj2K$1dUeJz...:19123:0:99999:7:::
daemon:*:19000:0:99999:7:::
password 필드의 포맷
$id$salt$hashed_password
구성 요소 | 설명 |
$id | 사용된 해시 알고리즘을 나타내는 식별자 |
salt | 해시 강화용 랜덤 문자열(해시값을 고유하게 만듦) |
hashed_password | 실제 비밀번호가 salt와 함께 해시된 값 |
알고리즘 식별자($id)
ID | 알고리즘 | 설명 |
$1$ | MD5 | 오래된 방식, 보안 취약 |
$2a$, $2b$, $2y$ | Blowfish(bcrypt) | 일부 시스템에서 사용 |
$5$ | SHA-256 | 보안성 중간 |
$6$ | SHA-512 | 리눅스에서 기본으로 권장. 보안성 높음 |
대부분의 현대 리눅스 배포판은 SHA-512($6$)를 기본으로 사용합니다.
$6$G7WvEtgL$XSnX0MZKmWR5fb7wgy...JELN9EPsqxv1h3ujA19nHDnI3A1
- $6$ -> SHA-512 알고리즘
- G7WvEtgL -> salt (8자리 이상, 시스템에 따라 다름)
- XSnX0MZK... -> SHA-512 해시 결과
pwconv, pwunconv 명령어
pwconv, pwunconv는 리눅스에서 비밀번호 정보를 /etc/passwd와 /etc/shadow 사이에서 동기화하거나 변환하는데 사용되는 명령어입니다.
pwconv
- /etc/passwd -> /etc/shadow로 비밀번호 정보를 이동
- /etc/passwd에 저장된 암호필드를 x로 변경
- /etc/shadow 파일을 생성하거나 갱신
pwunconv
- /etc/shadow에 있던 암호 해시값을 /etc/passwd로 다시 이동
- /etc/shadow 시스템 비활성화
- Shadow password system을 비활성화
728x90
'정보보호' 카테고리의 다른 글
리눅스 작업스케줄러 cron (0) | 2025.06.07 |
---|---|
포트스캐닝 도구 nmap 사용 방법 및 스텔스 스캔 (0) | 2025.06.06 |
PKI OSCP(Online Certificate Status Protocol) 개념 (0) | 2025.05.31 |
PKI(Public Key Infrastructure)에 대한 개념과 구성요소 (0) | 2025.05.31 |
파일시스템 FAT, NTFS, EXT 개념 (0) | 2025.05.28 |