본문으로 건너뛰기
  1. Memo/

리눅스의 사용자 비밀번호와 /etc/passwd, /etc/shadow 파일

·
Linux
작성자
hw5e
page.hw5e.cc
목차

리눅스를 설치하는 경우에 따라 사용자와 비밀번호가 미리 설정되어 있는 경우가 있다. 특히 루트 사용자의 비밀번호가 미리 설정된 경우 잘못하다간 심각한 보안 문제를 일으킬 수도 있다.

만약 어떻게 되어 있는지 잘 모른다면 /etc/passwd, /etc/shadow 이 두 파일을 확인해서 사용자와 비밀번호의 정보를 확인할 수 있다.

이름이 같은 명령어가 있기 때문에 각 파일의 man page를 보려면 man 5 passwd man 5 shadow를 입력해야 한다.

/etc/passwd
#

이름이 passwd이지만 정작 이제는 주로 사용자의 정보를 확인할 때 쓴다.
/etc 디렉토리도 이름과는 달리 설정파일들을 모아놓은 곳이라는 점을 생각하면 처음부터 끝까지 이름과 의미가 따로놀고있다.

파일을 열어보면 콜론으로 구분된 7개의 필드가 있는데 의미는 대략 이렇다.

번호 1 2 3 4 5 6 7
의미 사용자 이름 비밀번호 사용자 ID 그룹 ID 사용자 정보 홈 디렉토리 사용자의 셸

세번째 필드에 비밀번호가 있는데 요즘 대부분 세번째 필드에는 x라고 적혀있고 실제 비밀번호 인증은 /etc/shadow가 하게 된다.

/etc/shadow
#

번호 1 2 3 ~ 8 9
의미 사용자 이름 암호화된 비밀번호 역할 없음

첫번째 필드에는 사용자 이름, 두번째 필드에는 암호화된 비밀번호가 있다.

여기서 두번째 필드가 !나 *인 경우가 있는데 이것은 비밀번호를 사용한 인증을 하지 않는다는 의미이다.

자세히 알아보자면 두번째 필드의 값을 비밀번호를 암호화하는 crypt함수에서 나올 수 없는 값으로 설정하면 어떠한 비밀번호를 입력하든 인증에 실패할 것인데 crypt로 암호화된 문자열은 :, ;, *, !, \를 포함하지 않는다.
결과적으로 두번째 필드에 !와 *를 넣게 되면 동일하게 비밀번호를 사용한 인증을 할 수 없게된다. 다만 프로그램에 따라 다르게 처리될 여지가 있다고 한다. 참고

두번째 필드를 비워두면 비밀번호 없이 로그인된다고 하는데 이것도 일부 프로그램에서 제대로 작동하지 않을 수 있다고 한다.

3-8번째 필드는 설명하기 귀찮아서 비워놨는데 비밀번호 변경후 경과한 시간같은 내용들이 있다.

9번째 필드는 나중에 필요할지도 모르니 남겨놓은 것이라고 한다.

Reply by Email