next up previous
Next: smbpasswd를 사용하여 암호 설정하기 Up: 암호화된 암호 Previous: 암호화된 암호와 평문 암호의

암호화된 암호 파일 smbpasswd 만들기

암호화된 암호를 저장하고 있는 파일인 smbpasswd라는 말이 여러번에 걸쳐 언급되었다. 도대체 smbpasswd란 어떻게 생성시키는가?

smbpasswd 파일은 SMB 서버용 passwd 파일이라고 보면 틀림없다. 그러면 왜 삼바는 UNIX의 passwd 파일을 그대로 사용하지 않고 별도의 암호 파일을 요구하는가? 대답은 간단하다. "해쉬 함수가 다르기 때문"이다. 하지만 설상가상으로 앞서 설명한 봐와 같이 해쉬 함수의 특성상 UNIX의 passwd 파일이나 SMB의 smbpasswd로부터 평문 암호를 역으로 얻어내는 방법은 존재하지 않는다.

결국 삼바 관리자는 /etc/passwd/usr/local/samba/private/smbpasswd의 암호 파일 두벌을 관리해야 하는 상황에 부딪힌다.

smbpasswd는 손으로 직접 생성시킬 수도 있으나 보통의 경우 기존의 passwd 파일로부터 암호를 제외한 나머지 사용자 정보를 그대로 가져와서 자동 생성시키는 방법을 사용한다. 각 사용자의 암호는 자동으로 생성시킨 smbpasswd 파일에는 들어있지 않으므로 별도로 이를 부여하는 방법을 생각해야 한다.

관리자 권한으로 smbpasswd를 생성시키는 방법은 다음과 같다:

# cat /etc/passwd | /usr/local/samba/bin/mksmbpasswd.sh > \
/usr/local/samba/private/smbpasswd

private 디렉토리가 존재하지 않을 경우 이를 먼저 생성시키기 바란다.

만일 NIS를 사용할 경우라면 다음과 같은 방법을 사용한다.

# ypcat /etc/passwd | /usr/local/samba/bin/mksmbpasswd.sh > \
/usr/local/samba/private/smbpasswd

samba 홈 디렉토리의 private 디렉토리는 보안을 위해 r-x--- 접근허가를 가지고 있어야 한다. 다음 명령으로 접근허가를 변경하자:

# chmod 500 /usr/local/samba/private

물론 private 디렉토리 대신 smbpasswd 파일 자체의 접근허가를 rw----로 변경하는 트릭도 존재한다. 역시 다음 명령으로 접근허가를 변경할 수 있다:

# chmod 600 /usr/local/samba/private/smbpasswd

smbpasswd 파일이 생성되었다면 속을 한번 들여다보자:

--- smbpasswd ---------------------------------------------------
username:uid:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:Long name:user home dir:user shell
--- smbpasswd ---------------------------------------------------

":"으로 구분된 32개의 X를 가진 두 섹션이 눈에 들어올 것이다. 첫번째가 Lanman 해쉬 값이고, 두번째가 NT 해쉬 값이다. 해쉬 함수가 다르므로 두 섹션으로 나뉘어 암호가 저장된다. X가 32자로 되어 있으면 사용자는 어떠한 접근도 불가능 하다. 사용자의 암호를 설정하면 X를 대신하여 0-9, A-F로 구성된 문자들이 암호 필드에 자리잡게 된다.

사용자의 암호가 없는 경우 "NO PASSWORD"라는 문자열을 첫 11자 자리에 놓아둔다. 다음과 같이:

--- smbpasswd ---------------------------------------------------
username:uid:NO PASSWORDXXXXXXXXXXXXXXXXXXXXX:
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:Long name:user home dir:user shell
--- smbpasswd ---------------------------------------------------

smbpasswd 명령을 이용하여 손쉽게 "NO PASSWORD"를 설정할 수 있다. 관리자 권한으로 다음 명령을 내려보자.

# /usr/local/samba/bin/smbpasswd -n username

위의 "NO PASSWORD" 방법은 보안상 문제가 있으므로 권장하지 않는다. 하지만 smbpasswd 명령을 사용하여 사용자의 암호를 직접 변경하도록 허용하고 싶을 경우 "NO PASSWORD" 이외에는 다른 방법이 없다.

NO PASSWORD를 가진 사용자가 서비스를 받으려면 SWAT를 사용하여 [GLOBAL] 항목에서 [Advanced View] 버튼을 눌러 표시되는 Security Options의 null password 항목을 Yes로 바꾸어야 한다.



박재호
1999년2월26일 (금), 오후 3시9분25초