백지부터 시작하는 리눅스 강좌 – 패스워드 관리

사용자를 만들어 보셨죠? 그런데 이 사용자가 처음 로그인 했을 때 자기 홈 디렉토리가 아니라 잘 쓰는 디렉토리로 들어갈 수 있다면 편리하겠지 요?

그런 것은 둘째치고, 한번 /etc/ passwd 파일로 들어가 봅시다. 보통 의 /etc/ passwd 파일은 다음과 같은 내용이 줄줄이 들어 있습니다.

username:passwd:UID:GID:full_name:directory:shell

username은, 사용자의 계정 이름으로서 유일하게 존재하는 문자열이 되겠 지요.

passwd는 입력한 그대로 저장되는 것이 아니라 encode된 상태입니다. 그래 야 그냥 열어봐서는 알 수 없으니까요. 하지만 이나마도 다 패스워드 파 일 읽어서 실제 패스워드를 찾아 주는 것이 많아서…… –+

UID는 숫자로 된 user ID로서, 유일합니다. 같은 UID를 가진 사람은 최소 한 같은 서버 안에는 존재하지 않는 것입니다. 이것은 문자열로 된 계정 을 컴퓨터가 인식하고 구분하는 데 쓰이는 것입니다만, 사람도 쓰려면 쓸 일이 생기는 녀석입니다.

GID는 숫자로 된 기본 group ID입니다. 리눅스를 사용하는 사람은 그룹을 주어 묶을 수 있는데, 바로 이럴 때 쓰이는 것이지요.

full_name이야말로 user의 실제 이름입니다. 실제로 이 필드는 GECOS (General Electric Comprehensive Operating System) field라고 불리우 며, 단지 실제 이름보다는 다른 정보를 가질 수 있습니다. 예컨대, 전혜진 이라는 이름 대신 Brenda 라고 넣어도 상관은 없다는 말이 되기는 합니다 만….. 아마 그 이름, 메일에도 붙어 나갈텐데 제발 욕 들어간 문자열은 넣지 마시길! 섀도 패스워드에서는 이 부분을 주석 정도로 생각합니다.

directory는 사용자의 홈 디렉토리, 로그인해서 처음 들어가는 것입니다. 아까 맨 처음에 뭐 하자고 했죠? 로그인 해서 들어가는 것을 바꾸자고 했 죠? 이 부분을 고쳐 주면 되는 것입니다.

shell은 사용자의 login shell을 의미합니다.

그럼 실제 사용되는 패스워드 파일의 한 줄을 볼까요?

hjjun:Npge08pfz4wuk:503:100:Jun Heyjin:/home/hjjun:/bin/sh

hjjun은 당연히 계정 이름이겠죠? Np는 salt이며, ge08pfz4wuk는 encode 된 password입니다. (잘 모르겠으면 넘어가도 되는 부분입니다.) encode 된 salt/password는 kbeMVnZM0oL7I가 될 수도 있고, 둘은 같은 password 를 가리킵니다. 같은 password에 대해서 4096개의 다른 encoding이 존재 할 수 있다고 합니다만. 여기서 예를 든 password는 ‘password’이며, 실제 로 이런것을 사용하는 사람도 없겠지요? 있을 지도 모르지만. 아, 여기 보 면, /home/hjjun이 홈 디렉토리입니다. 이것을

hjjun:Npge08pfz4wuk:503:100:Jun Heyjin:/usr/local/mysql:/bin/sh

로 바꾸게 되면, 로그인하면 /usr/local/mysql로 들어갈 수 있습니다. 홈 디렉토리도 이 곳을 찾게 되죠. 간단하죠?

보안을 위해 섀도 패스워드라는 것을 사용할 수 있습니다. shadow suite 가 설치되면, /etc/ passwd file은 다음과 같이 바뀌게 됩니다.

hjjun:x:503:100:Full Name:/usr/local/mysql:/bin/sh

두번째 field의 x는 아무 것도 아닙니다. 형식은 그대로인데 암호화된 패 스워드가 안 들어 있는 것 뿐이죠. 이 쪽이 안전합니다. 가급적 설치할 때 새도 패스워드와 MD5를 선택해 주시는 것이 좋겠지요!

답글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.