일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 파이썬
- python
- 보안뉴스 요약
- 자바스크립트 prototype
- 자바스크립트 element api
- 보안뉴스한줄요약
- GIT
- 카카오프로젝트
- 자바스크립트 jQuery
- oracle
- 자바스크립트 기본 문법
- 카카오프로젝트100
- javascript
- 보안뉴스요약
- 카카오프로젝트 100
- 자바스크립트 API
- 보안뉴스
- ES6
- php
- 깃허브
- numpy
- 보안뉴스 한줄요약
- 오라클
- 랜섬웨어
- Oracle SQL
- 자바스크립트 객체
- 다크웹
- oracle db
- 자바스크립트
- 자바스크립트 node
- Today
- Total
FU11M00N
[Linux] 리눅스 계정 파일 /etc/passwd vs /etc/shadow 본문
리눅스 구조를 공부 해봤다면 /etc/passwd 와 /etc/shadow 파일은 많이 들어 봤을겁니다.
1. /etc/passwd
1. 리눅스 시스템에 로그인을 하면 사용자 계정들이 /etc/passwd 파일에 저장됩니다.
2. 이 파일은 다른 유틸리티에서도 참조하기 때문에 모든 계정들에게 읽기 권한이 주어져 있습니다.
ex) 'ls' 명령어를 입력했을떄 사용자 UID와 이름을 매칭하기 위함 입니다.
3. 다만 이 파일 수정은 root만 가능합니다.
/etc/passwd 파일의 내용입니다.
/etc/passwd 필드 내용
ex) root:x:0:0:root:/root:/bin/bash
1:2:3:4: 5 : 6: 7
1. 계정 이름 : 사용자,시스템이 사용하는 이름입니다.
2. 패스워드 : x로 되어 있을 경우 /etc/shadow 파일에 암호화 되어 저장됩니다.
3. 사용자ID (UID) : UID 정보입니다. ex) root는 0
4. 그룹ID (GID) : GID 정보입니다.
5. Description : 계정에 대한 설명이 기록 되어져 있습니다.
6. 홈 디렉터리 : 해당 계정의 홈 디렉토리 정보입니다.
7. 쉘 : 사용자 계정에서 사용되는 쉘을 나타냅니다.
2. /etc/shadow
/etc/shadow 파일은 계정의 패스워드 정보와 계정의 만료기간, 비밀번호 변경 일자 등등 패스워드 관리에
필요한 정보가 담겨져 있습니다.
이 파일은 /etc/passwd와 다르게 다른 사용자들은 이 파일을 읽기(read) 를 할수 있는 권한 조차도 없습니다.
/etc/passwd 파일에 그냥 패스워드를 암호화해서 넣어서 /etc/passwd 파일을 읽기(read) 권한을 없애면 될것같지만. 아까도 말했듯 /etc/passwd 파일은 다른 명령어들이 사용자명의 UID를 참조를 해야할때가 생기기 때문에,
보안상 "shadow" 라는 파일을 새로 만들어서 패스워드의 해쉬값만 보관하는 방법을 사용합니다.
/etc/shadow 파일의 내용입니다.
ex) test5:$1$ctVqNwaW$zVoDKU2Guu/lDG4n7kTmS. : 18511:1: 90:7:::
1 : 2: 3:4: 5: 6: 7: 8: 9
1. 계정 이름 : 사용자,시스템이 사용하는 이름입니다.
2. 패스워드 : 세부적인 필드가 또 존재합니다. (아래에 설명 포함)
3. 패스워드 파일 최종 수정일 : 패스워드 파일의 최종 수정일을 나타냅니다.
4. 패스워드 변경 최소일 : 패스워드 변경의 최소 날짜를 나타냅니다.
5. 패스워드 변경 최대일 : 패스워드 변경일의 최대 날짜를 나타냅니다.
6. 패스워드 만료 경고기간 : 패스워드 만료 경고 기간을 나타냅니다.
7. 패스워드 파기 기간 : 패스워드를 파기 하고 계정 비활성 기간을 나타냅니다.
8. 계정 만료 기간 : 패스워드의 만료 기간을 나타냅니다.
9. 예약 필드 : 예약필드입니다. (공백가능)
/etc/shadow 파일의 두번째 필드에는 패스워드가 저장됩니다.
엄청나게 문자로 길게 되어있는데, 두번째 필드에도 세부적인 필드가 존재합니다.
$id$salt$hashed
$id: 해싱 알고리즘
$salt: 해싱에 사용된 솔트(salt)값
$hashed: 해싱된 비밀번호 값
최근엔 보안이 좋은 SHA 알고리즘을 많이 사용하고 비밀번호 해쉬값은 crypt() 함수가 호출되어 생성됩니다.
$1$: MD5
$2a$: Blowfish
$2y$: Eksblowfish
$5$: SHA-256
$6$: SHA-512
'Linux' 카테고리의 다른 글
[Linux] CentOs 7 방화벽 설정 (0) | 2020.11.06 |
---|---|
[ Linux] Linux command & Multi - command | 리눅스 파이프와 세미콜론 차이 (0) | 2020.11.02 |
[Linux] systemctl vs service (0) | 2020.09.06 |
[Linux] Telnet 설치 및 사용 (슈퍼데몬 사용 /etc/xinetd.d/service) (0) | 2020.09.06 |
[Linux] 슈퍼데몬(xinetd) 이란? , 설치 방법 (0) | 2020.09.05 |