더 많은 정보를 담은 리눅스 교재를 배포했습니다. 아래의 페이지에서 리눅스 교재를 받아가세요.
https://reakwon.tistory.com/233
/etc/passwd(사용자 정보)
보안이나 리눅스를 배우신다면 /etc/passwd에 대한 이해는 필수입니다. 정보보안기사 시험에도 당골손님이기도 하죠.
/etc/passwd에는 시스템에 등록된 사용자의 정보들이 담겨있는 파일입니다. 이 파일을 이용해서 사용자의 계정과 인증을 관리하게 됩니다. 이 파일의 이름이 passwd인데, 여기에 패스워드 정보가 있는건 아니구요. 과거에 사용자의 패스워드를 이곳에 저장을 하였는데, /etc/shadow에 따로 암호화된 패스워드를 저장합니다. 과거에 패스워드를 저장했었던 것이 아직 파일 이름으로 남아 파일명이 passwd입니다.
/etc/passwd를 열어보면 아래와 같이 사용자의 정보들이 있습니다.
각 필드들이 의미하는 바가 있는데, 필드 하나하나 무엇을 의미하는지 확인해봅시다. 각 필드는 콜론(:)으로 구분되어 집니다.
root:x:0:0:root:/root:/bin/bashroot:x:0:0:root:/root:/bin/bash |
필드 | 설명 |
사용자 계정명 | 맨 앞에 필드는 사용자의 계정명을 나타냅니다 |
패스워드 | 그 다음의 필드는 패스워드 필드인데, x가 의미하는 바는 사용자의 패스워드가 /etc/shadow에 암호화되어 저장되어있다는 뜻입니다. |
UID | 사용자의 user id를 나타냅니다. 관리자 계정(Root)은 UID가 0입니다. |
GID | 사용자의 그룹 ID를 나타냅니다. 관리자 그룹(Root)의 GID는 0입니다. |
comment | 사용자와 관련한 기타 정보로 일반적으로 사용자의 이름을 나타냅니다. |
홈 디렉토리 | 사용자의 홈디렉토리를 의미합니다. 관리자 계정의 홈 디렉토리는 /root이며, 다른 사용자의 홈 디렉토리는 기본으로 /home/ 하위에 계정명으로 위치합니다. |
로그인 쉘 | 사용자가 로그인시에 사용할 쉘을 의미합니다. 보통 사용자의 쉘은 성능이 우수한 bash쉘을 사용합니다. 로그인이 불필요한 계정도 있는데요. 이때는 이 필드가 /usr/sbin/nologin, /bin/false, /sbin/nologin 등으로 표기됩니다. 이것은 사용자가 아니라 어플리케이션이기 때문이죠. 아래처럼 말이죠. sshd:x:126:65534::/run/sshd:/usr/sbin/nologin gnome-initial-setup:x:124:65534::/run/gnome-initial-setup/:/bin/false gdm:x:125:130:Gnome Display Manager:/var/lib/gdm3:/bin/false |
/etc/shadow
/etc/shadow에는 암호화된 패스워드와 패스워드 설정 정책이 기재되어 있습니다. 여기서 관리자 계정과 관리자 그룹만이 이 파일을 읽을 수 있습니다. 이 파일이 만약 평문의 비밀번호의 정보를 가지고 있다면 모든 사용자의 비밀번호가 유출될 수 있습니다.
/etc/shadow 파일의 root의 정보를 보게되면 아래와 같이 나오게 되는데요. 각 필드에 대해 설명해보도록 하겠습니다.
필드 | 설명 |
사용자 계정명 | 맨 첫 필드는 사용자의 계정명을 뜻합니다. |
암호화된 패스워드 | 두번째 필드는 암호화된 패스워드를 뜻합니다. 이 패스워드는 또 $로 필드가 구분되어 있는데요. 아래처럼 구분이 됩니다. $algorithm_id$salt$encrypted_password algorithm_id : 암호학적 해시의 id를 의미하는데요. id는 아래와 같습니다. 1 : MD5(가장 취약한 일방향 해쉬로 요즘에는 쓰지 않습니다. 2 : BlowFish 5 : SHA-256 6 : SHA-512 제 시스템은 SHA-512를 사용하는 것을 알 수 있습니다. salt : 각 해쉬에 첨가할 랜덤값입니다. 이 랜덤값에 따라서 해시의 값이 바뀌게 됩니다. encrypted_password : 마지막은 알고리즘과 salt로 패스워드를 암호화한 값입니다. 이 뿐만 아니라 패스워드 필드에 *, !!, 또는 빈값이 설정될 수 있습니다. 이것이 의미하는 바를 알아보겠습니다. * : 패스워드가 잠긴 상태입니다. 로그인은 불가합니다. 별도의 인증방식을 사용하여 로그인을 할 수는 있습니다. ! : 패스워드가 잠긴 상태이고 로그인을 할 수 없습니다. 또는 사용자를 생성하고 패스워드를 설정하지 않은 상태이기도 합니다. empty : 패스워드가 설정되지 않았지만 로그인이 가능합니다. |
마지막 변경 | 마지막으로 패스워드를 변경한 날을 1970년 1월 1일 기준으로 일수도 표시합니다. 여기서 마지막으로 패스워드를 변경한 날은 1970년 1월 1일 이후 18693일이 지났음을 알 수 있습니다. |
패스워드 최소 사용기간 | 패스워드의 최소 사용기간 설정으로 패스워드를 변경한 이후 최소 이 정도의 기간은 써야한다는 것을 의미합니다. 그래서 마지막 변경이 일어난 후 이 일수가 지나기 전에 암호를 변경할 수 없습니다. |
패스워드 최대 사용기간 | 패스워드의 최대 사용기간 설정으로 마지막 패스워드 변경 이후 만료일수를 의미합니다. 패스워드를 변경하지 않으면 공격자가 패스워드를 깰 수도 있으므로 90일을 권장합니다. |
경고 | 패스워드 만료 이전에 경고할 경고 일수를 의미합니다. |
비활성화 | 패스워드가 만료된 이후에 계정이 잠기기 전까지 비활성 일수(date)입니다. 해당 비활성 기간동안에 패스워드를 변경해야 계정이 잠기지 않습니다. |
만료일 | 계정 만료일 필드입니다. 1970년 1월 1일 기준으로 일수로 표시합니다. |
이상으로 /etc/shadow와 /etc/passwd에 대해서 알아보았는데, 이 파일은 매우 중요하므로 보안을 배우는 사람은 잘 알아두어야합니다.
'컴퓨터 > 운영체제(주로 리눅스)' 카테고리의 다른 글
[리눅스] awk 명령어 사용법과 여러가지 실용적인 예제 모음 (2) | 2021.04.09 |
---|---|
[리눅스] Inode와 링크(Hard, Symbolic Link) 개념과 이해 - ln 명령어 구현 소스 (0) | 2021.03.14 |
[리눅스] 쉘 스크립트(Shell script) 기본 문법, 작성방법(변수,반복문,비교문,종료상태 등) (2) | 2021.03.07 |
[리눅스] 커널(kernel)과 쉘(shell)의 개념, 쉘을 이해해보자 (0) | 2021.03.07 |
[운영체제] 스케줄링(Scheduling) 알고리즘(FIFO, SJF, 우선순위, Round-robin) (2) | 2021.03.01 |