리눅스를 설치하는 경우에 따라 사용자와 비밀번호가 미리 설정되어 있는 경우가 있다. 특히 루트 사용자의 비밀번호가 미리 설정된 경우 잘못하다간 심각한 보안 문제를 일으킬 수도 있다.
만약 어떻게 되어 있는지 잘 모른다면 /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