R's Hacking Daily Log

/etc/shadow & /etc/passwd 본문

Daily-Note

/etc/shadow & /etc/passwd

hanhxx 2023. 2. 24. 19:09

언젠가부터 인지는 모르겠지만 왠지 모르게 알게 된 두 파일 /etc/shadow와 /etc/passwd.

 

kali linux를 뒤적거리다 보면(?) 한 번쯤은 마주하게 되는 파일인 듯하다.

하지만 잘 모르고 보면 비슷하게 생긴 게...

뭐가 다른 지 사실 잘 모르다 보니 오늘은 두 파일에 대한 내용을 공부해보고자 한다. 

 

 

1. /etc/passwd

/etc/passwd는 plain text file로,  시스템에 접근가능한 user에 대한 정보를 유지하는 데에 사용된다.

 

 

그 말은 즉슨, 시스템의 계정 리스트를 포함하고 있다는 의미로

각 계정에 대해서는 user id, group id, username, login shell 등의 정보를 저장한다.

 

 

또한, 정보를 표기할 때 콜론으로 구분하여 나열하기 때문에 colon-separated file이라고도 한다. 

root:x:0:0:root:/root:/usr/bin/zsh
aemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
...
kali:x:1000:1000:,,,:/home/kali:/usr/bin/zsh

 

위의 예시를 보자면, 계정에 대한 정보가 " : "으로 이어지면서 나열되는 것을 볼 수 있다.

 

 

맨 앞의 field에는 user의 계정명이 제시되고, 

그 뒤에 따라나오는 "x"는 해당 계정의 암호화된 password가 /etc/shadow 파일에 저장되어 있다는 것을 의미한다. 

 

 

3, 4번째 field는 UID, GID 값을 나타낸다.

보통 저 값이 1000 이상인 계정이 시스템을 사용하는 사람이 만든 계정을 의미하고 

root의 경우처럼 0, 1,2,... 33의 경우에는 시스템이 사용하는 계정 정보이다.

 

 

5번 째 field에는 각 계정의 사용자명이 기재되고, 

6번 째 field에는 사용자의 home directory가 기재된다. 

 

 

마지막 field는 login 시 사용되는 shell을 적어둔 것.

login이 불필요한 계정의 경우에는 /usr/bin/nologin 과 같은 내용이 적혀져 있다. 

 

 

2. /etc/shadow

/etc/passwd는 계정의 정보가 저장된다면 /etc/shadow에는 hash된 password가 저장되어있다.

그렇기 때문에 root 권한의 사용자만 접근할 수 있도록 설정된다. 

 

...
news:*:19331:0:99999:7:::
uucp:*:19331:0:99999:7:::
proxy:*:19331:0:99999:7:::
www-data:*:19331:0:99999:7:::
backup:*:19331:0:99999:7:::
list:*:19331:0:99999:7:::
irc:*:19331:0:99999:7:::
_apt:*:19331:0:99999:7:::
nobody:*:19331:0:99999:7:::
systemd-network:!*:19331::::::
systemd-timesync:!*:19331::::::
messagebus:!:19331::::::
tss:!:19331::::::
strongswan:!:19331::::::
tcpdump:!:19331::::::
usbmux:!:19331::::::
sshd:!:19331::::::
dnsmasq:!:19331::::::
avahi:!:19331::::::
speech-dispatcher:!:19331::::::
pulse:!:19331::::::
...
kali:$y$j9T$lR7REZ4XgU56yXNl9PFiN/$oI3B/OeQGXOoTb7opQ.azBMOgG2IM0neRj4MN3HCqQ.:19331:0:99999:7:::

위에서 볼 수 있듯, /etc/shadow file도 콜론으로 계정에 대한 정보가 이어진다. 

 

 

첫 번째 field에는 /etc/passwd와 동일하게 계정명이 기재된다. 

그 다음 field에는 해쉬된 비밀번호가 들어있는 걸 볼 수 있다. 

 

 

그 밖의 field는 다음과 같다.

passwd 마지막 변경일  /  최소 사용기간  /  최대 사용기간  /  경고기간  /  비활성화  /  만료일  

 

 

[최소 사용 기간]

: passwd 변경 후 최소한 그 passwd를 사용해야하는 기간 

: 이 기간동안에는 passwd를 바꿀 수 없다는 뜻이다. 

 

[최대 사용 기간]

: passwd가 유효한 최대 기간

: 지정된 passwd를 사용할 수 있는 기간을 의미한다. 

 

[경고]

: passwd가 만료되기 전 경고해주는 일수 

 

[비활성화]

: passwd가 만료되고 난 후, 계정이 잠기기 전 까지의 기간

 

[만료일]

: 계정의 만료일

 

보안상 주기적으로 password를 재설정하기를 권장하는 이유와 같이 

계속해서 동일한 password를 사용하는 것을 어느 정도 지양하기 위해 password의 유효 기간이 설정되나보다.

'Daily-Note' 카테고리의 다른 글

CLI & GUI  (0) 2023.03.08
prefix & postfix  (0) 2023.03.07
file signature  (0) 2023.03.01
/tmp  (0) 2023.02.27
/dev/null  (0) 2023.02.22
Comments