dinist

/etc/passwd에 대하여 알아보기 본문

리눅스

/etc/passwd에 대하여 알아보기

dinist 2021. 1. 30. 23:22

Linux, UNIX 에서는 사용자 계정을 추가할때 사용자와 관련한 정보를 /etc/passwd 파일에 저장합니다.

아마 보안 업계에 종사하시거나 관련 자격을 준비하시는 분들은 익히 보셨을 내용일 것 입니다.

 

이 파일은 : (콜론)을 구분자로 하여 각각의 필드를 구분합니다. 필드는 총 7가지로 구성되어있습니다.

 

구성

①번 항목 : 사용자 계정명을 의미합니다.

 

②번 항목 : 사용자 패스워드를 의미합니다. 아마 X로 표시될 것입니다. (X는 shadow 패스워드를 사용한다는 뜻입니다.)

 

③번 항목 : 사용자ID (UID)를 의미합니다.

 

④번 항목 : 그룹ID (GID)를 의미합니다.

 

⑤번 항목 : 사용자 관련 정보를 기술합니다. (코멘트 정도로 생각하시면 됩니다.)

 

⑥번 항목 : 해당 사용자 계정으로 로그인 시 처음 위치할 홈 디렉터리의 경로입니다.

 

⑦번 항목 : 해당 사용자로 로그인시 사용할 쉘(SHELL)을 의미합니다.

 

이 사진은 Ubuntu 20.04에서 view /etc/passwd 명령을 입력했을때 표시되는 내용입니다.

 

root의 UID와 GID가 모두 0입니다. root 이외의 계정에 UID GID 가 0으로 설정되어있다면 root의 권한을 가지게 되므로 잘 확인해야 하며, 로그인 쉘의 경우에도 기본 쉘이 아닌 악의적인 쉘로 설정되어 있는지 확인해야 합니다.

 

그리고 마지막 필드부분을 보면 /usr/sbin/nologin 또는 /bin/false 라고 작성되어있는 계정들이 있습니다.

공통점은 모두 시스템에 로그인 할 수 없습니다.

하지만 각각의 차이점이 있습니다.

 

/usr/sbin/nologin (Redhat 계열은 /sbin/nologin일 겁니다.) : 시스템에 로그인 할 수 없습니다. 하지만 로그인 시도시 로그인이 불가능하다는 메시지는 반환합니다. ssh에서는 바로 종료가 되버립니다.

 

인터넷에서 검색을 해보면 /sbin/nologin의 경우 ftp사용이 가능하다고 나오지만 제가 테스트해본 결과로는 530 에러가 나오면서 ftp 접속이 불가능 했습니다. (레드헷이 아닌 데비안 계열의 운영체제에서 테스트 한것이라 /sbin/nologin이 아닌 /usr/sbin/nologin 이라서 접속이 불가능 한것일 수도 있습니다.)

 

/bin/false : 이 경우는 로그인도 불가능하고 아무 기능도 이용할 수 없습니다.

 

즉 /usr/sbin/nologin /bin/false가 기본 쉘인 계정으로는 시스템에 로그인할 수 없습니다.