 |
|
난이도 : 초급 Daniel Robbins, President/CEO, Gentoo Technologies, Inc
2000 년 8 월 01 일 Samba는 파일과 프린터 공유에 있어 뛰어난 제품이기도 하지만 그 이상의 것을 할 수 있다. 이 글은 Samba의 도메인 컨트롤러 기능 설치에 대해 설명하고 있다. Windows NT 도메인을 제어하고 로그인 요청을 처리하며 사용자 프로필을 저장할 수 있는 기술을 설명한다. 완전한 도메인 컨트롤러 지원을 제공하는 "the next generation" Samba 버전인 Samba_TNG 알파 버전에 대해서도 간략하게 살펴본다.
Samba의 필요성
Samba를 정말 좋아한다. Samba로 Windows NT와 UNIX로 구성된 내부 LAN을 만든다. 일반적으로 Samba는
우수한 프로그램이다. 그러나 2-3주 전에 Samba에 대해 후회할 만한 사건이 발생했다.
Samba를 통해 중요한 UNIX 파일을 공유하기 때문에 freebox(Free BSD UNIX 머신)를 중앙 파일 저장소로
이용할 수 있었다. NEC SuperScript 870 프린터도 freebox에 연결하여 Windows NT 클라이언트와 공유하여
사용하고 있었다. 모든 작동이 매우 순조로웠다. 그런데 무엇이 문제였을까?
더 깊게 생각해보니 Samba의 작업이 과중한데도 Samba에게 작업 부담을 계속 부가하고 있다는 것을 깨달았다. 먼저 보안
데이터베이스의 분산이 만족스럽지 않다. 두 개의 계정이 필요했는데 하나는 Samba 머신에 필요하였고 또 하나는 로컬 사용자로
시스템에 로그인 할 때 사용할 NT에서 필요했다. 이 두 계정에서 사용자 명 및 패스워드를 정확하게 일치시켜야 한다. 그러므로
직접 LAN의 단독 사용으로 불편함을 느끼지 못해도 Samba가 불편한 프로그램처럼 생각된다. Windows NT 서버가 중앙
집중 보안 모드인 점을 감안하면 더욱 그렇다(이점에서 Samba가 경쟁력을 가지고 있다). Samba가 여전히 원활하게 작동하지만
더욱 능률적인 작동을 모색해야 할 것이다?
불만 사항 중 또 한 가지는 NT사용자 프로필이 NT 머신에 저장된다는 사실이다. NT 서버가 사용 중이라면 프로필이 "roaming"
모드가 된다는 것은 잘 알고 있다. 그렇다면 이것은 섹션이 종료될 때 안전성을 위해 프로필이 NT 서버에 업로드되는 것을 의미한다.
이는 곧 네트워크에서 다른 머신에 로그인한 경우에 프로필이 다운로드 된다는 것이다. 이 경우 어떤 머신에 로그인 하든지 간에
일관성 있는(consistent) 데스크탑을 보장하는 것이다. 이런 식으로 Samba를 작동하면 새로운 Ecrix VXA-1
테이프 드라이브를 제공하는 머신에도 동일 프로필을 저장할 수 있기 때문에 프로필 백업이 훨씬 쉽다. IE bookmarks와
데스크탑 설정은 사용자 상시 파일과 함께 올바르게 백업될 수 있다. 이 경험적 특징을 Samba에 추가하여 freebox가 통제권을
갖고 되는 중앙 집중 시스템을 갖추게 되었다!
Samba는 필수!
이번 작업을 시작할 때는 Samba에서 이미 수 년 동안 도메인 컨트롤러 지원을 의존하므로 그리 낙관적이라 할 수 없다. 매
6개월 마다 Samba 통제 하에 도메인 컨트롤러 지원을 작동하고 싶었지만 매번 실패하였다. 버전 2.0.6의 도메인 컨트롤러
지원이 그리 효과가 없다는 것을 깨닫게 되었다. 또한 CVS에서 Samba의 "next generation" 알파 버전인 SAMBA_TNG도
초기의 미성숙 단계에 있다는 것을 알고 있었다. 다행스럽게 버그가 많이 수정된Samba 2,07버전이 적재적소에 출시되었다.
CVS에서 Samba 2.0.7보다 성능이 떨어지는 Samba pre-2.0.8을 선택하였다.
smb.conf 옵션
이제 pre-2.0.8을 실행할 준비가 되었다. 최신 Samba를 다운로드하고 컴파일 해서 설치하고 smb.conf를 xemacs에
로드하였다. 이 경우를 대비하여 xemacs에 저장해 두었던 몇 개의 잘 조율 된 도메인 컨트롤러 관련 옵션에 대해 언급하지
않았다. 사용자의 변경사항을 저장한 후 새 Samba데몬(daemon)을 시작했다. 결과는?
10분쯤 지나자 roaming 프로필과 도메인 로그온이 순서대로 작동하였다. 일이 너무 순조롭게 진행되어 사실이 아닌 것
같았다. 그래서 며칠 동안 네트워크 작동을 관찰하였는데 Samba는 이상 없이 계속 작동하였다. 어떻게 이 작업을 완료했는지
설명하겠다.
설치 과정
Windows 도메인 컨트롤러 용어에 익숙하지 않은 사용자를 위해 적당한 Microsoft 용어로 대체하겠다. Samba를 사용하여
freebox를 관할 도메인 제어하는 "프라이머리 도메인 컨트롤러(PDC)"로 설정하였다. 필자의 도메인명은 "GENTOO"이다.
freebox는 어느 머신이 도메인의 일부이고 유효한 사용자 계정 추적에 사용되는 중앙 집중식 보안 데이터베이스를 PDC로 저장한다.
더구나 freebox는 각 사용자의 프로필 중 가장 최신 버전을 중앙 저장 위치에 보관하면서 NT 사용자 프로필을 저장하도록
구성되어 있다.
도메인에서 다중 도메인 컨트롤러가 필요하다면 Samba를 작동하여 태스크를 처리하도록 하지 않았을 것이다. Samba를 BDC(백업
도메인 컨트롤러)로 사용하였다면 또한 Samba는 실패하였을 것이다. Samba의 이런 기능은 아직 개발 단계이다. 다행히 내가
필요한 것은 UNIX 머신이 내 LAN용으로 그것도 한번만 프라이머리 도메인 컨트롤러가 되는 것이었다. Samba pre-2.0.8에서
이런 기능은 작동한다. 다음은 PDC 기능을 작동하고 실행한 정확한 방법에 대해 설명한 것이다.
SAMBA_2_0 다운로드
첫째 CVS에서 Samba의 가장 최신 버전을 다운로드 하였다. SAMBA_2_0 branch를 사용했는데 이는 버그를 수정한
Samba의 가장 최신 버전 2.0.x이다. 다음은 CVS에서 SAMBA_2_0을 가져오는 방법이다.
적당한 곳에 "Samba-cvs-2.0"이라 하는 디렉토리를 생성하고 그 디렉토리 안으로 디렉토리 변경을 수행한다. 그리고
나서 다음과 같이 입력한다:
$ cvs -d :pserver:cvs@cvs.samba.org:/cvsroot login |
암호를 요청 받았을 때 "CVS"를 입력한 다음, 명령어를 입력하여 소스를 확인한다:
$ cvs -d :pserver:cvs@cvs.samba.org:/cvsroot co -r SAMBA_2_0 samba |
소스를 CVS의 가장 최신 버전으로 갱신하려면 "samba-cvs-2.0" 디렉토리를 입력하고 나서 다음을 입력한다:
$ cvs -d :pserver:cvs@cvs.samba.org:/cvsroot update -r SAMBA_2_0 |
소스가 다운로드된 다음 "samba"라는 새 디렉토리가 생길 것이다. Samba를 컴파일 하기 위해 "samba/source"
디렉토리에 들어가서 통상의 단계(Introduction
to Samba, Part 2 참조)를 수행한다. Samba를 컴파일 한 후에 설치한다. 이제 smb.conf와 smbpasswd
파일을 용도에 적절하게 사용할 준비가 되었다.
 |
먼저 Samba를
정상적으로 작동시켜야 한다!
여기에서 고급 Samba 기능을 구현하려 한다. 시작하기 전에 Samba CVS 버전을 작동하고 표준 구성을 사용하여
실행하는 것이 좋다. 그런 다음 PDC 지원을 구현해야 한다.
|
|
Smbpasswd 용도에 맞게 사용하기
smbpasswd를 시작 전에 smb.conf의 workgroup=setting([global] 섹션에서)을 작성하려는 NT
도메인명에 설정하려는 것이다. Samba 구성이 암호화된 모드에서 "encrypt passwords=yes"옵션을 사용하여 실행하고자
한다. 이러한 변경을 한 후 Samba를 재시작 한다. 작동이 잘되는지 검증하고 작업을 계속 진행한다.
첫째 Samba 보안 데이터베이스를 도메인 운영용으로 준비해야 한다. 사용자의 도메인 회원인 Windows의 모든 NetBIOS
머신 이름에 대한 리스트를 만든다. 리스트는 다음과 같다:
ntbox Windows NT Workstation
kompressor Windows NT Workstation |
사용자의 Samba PDC명을 리스트에 추가한다.
ntbox Windows NT Workstation
kompressor Windows NT Workstation
freebox Samba PDC |
이 리스트에 나열된 각 머신 이름에 대해서 다음 단계를 수행해야 한다. 첫째 머신 이름으로 "$"가 첨부된 UNIX 표준
계정을 작성한다. 다음은 이런 단계를 수행한 후에 나의 /etc/passwd 파일에서 발췌한 것이다:
ntbox$:*:1005:65534:Trust Account:/nonexistent:/sbin/nologin
freebox$:*:1006:65534:Trust Account(necessary in Samba 2.0):/nonexistent:/sbin/nologin
kompressor$:*:2009:65534:Trust Account:/nonexistent:/sbin/nologin |
계정명에 "$"가 있다는 점에 유의한다. 또한 이 계정들은 홈 디렉토리가 없고 로그인 계정이 아니라는 점을 주의한다. 여러분
시스템도 그렇게 되어야 할 것이다. 이런 계정은 머신을 도메인의 부분으로 간주한다. Samba 2.0과 함께 PDC는 도메인
멤버(member)이어야 한다. 이런 요구사항은 SAMBA_TNG에서는 제거되었다. 그러나 이 경우에서는 사용자 Samba 박스는
/etc/passwd에 계정을 두고 있어야 한다. Linux를 사용 시에는 다음과 같이 useradd명령을 사용할 수 있다:
# useradd -s /bin/false -d /nonexistent -c "Trust Account" ntbox\$
# useradd -s /bin/false -d /nonexistent -c "Trust Account" kompressor\$
# useradd -s /bin/false -d /nonexistent -c "Trust Account" freebox\$ |
Bash가 "$"를 잘못 해석하는 것을 방지하기 위해 "$" 앞에 "\"를 사용한다는 것에 유의한다.
이제 smbpasswd를 올바르게 설정 할 차례이다. 다음을 입력하여 각 워크스테이션용 및 PDC용 Samba 머신 계정을
작성해야 한다:
# smbpasswd -a -m freebox
# smbpasswd -a -m kompressor
# smbpasswd -a -m ntbox |
그리고 나서 PDC가 자신의 도메인에 참여하도록(join) 한다. 다음과 같이 입력한다:
# smbpasswd -j GENTOO (replace this with your NT domain name) |
사용자의 도메인명은 smb.conf의 workgroup=parameter에 의해 설정된다. 이제 보안 설정이 준비되었다.
smb.conf를 올바르게 설정해보자.
smb.conf 설정하기
우선 일반적 규칙에 대해 설명하겠다. 이미 언급했듯이 Samba를 암호화된 패스워드 모드에서 실행하여야 한다. 이제 공유 레벨의
보안은 사용할 수 없으나 사용자, 서버 또는 도메인 보안 설정은 잘 작동할 것이다. 또한 도메인 컨트롤러는 로컬 마스터 브라우저로
사용되도록 구성되어 있다.(Samba를 로컬 마스터 브라우저로 설정하는 것에 대한 자세한 정보는
Introduction to Samba, Part 2 참조)
다음 옵션을 [global] 섹션에 추가한다:
domain logons=yes
logon path = \\%L\profiles\%U.pds
logon home = \\%L\%U
logon drive = m: |
예상했겠지만, 첫번째 옵션은 도메인 로그온을 사용 가능하게 만든다. 두 번째 logon path=option은 조금 복잡하다.
이 옵션은 Samba가 NT 사용자 프로필을 어디서 찾아야 할지를 말해준다. 이 경우에 Samba는 \\PDC\profiles\username.pds에서
찾을 것이다. 즉 프로필 공유를 작성하는 것을 의미한다. 이것이 바로 수행하고자 하는 것이다. 마지막 두 개의 옵션이 "logon
drive"로 무슨 공유를 부착해야 하는지 또 어떤 드라이브 문자를 부착할 것인지를 지정한다. 자동 홈 드라이브 매핑이 발생하는
것을 원하지 않을 경우 이 마지막 두 개의 설정을 빼놓을 수 있다.
이제 두 개의 새로운 공유 "profiles"과 "netlogon"을 추가해보자. Smb.conf에 다음 행을 추가한다:
[profiles]
comment = User profiles
path = /usr/local/profiles
create mode = 0600
directory mode = 0700
writeable = yes
browseable = yes
# next line is a great way to secure the profiles
force user = %U
# next line allows administrator to access all profiles
valid users = %U administrator
[netlogon]
comment = The domain logon service
# there is nothing in /usr/local/netlogon right now,
# just an empty directory.
path = /usr/local/netlogon
writeable = no
locking = no |
PDC 작동
Samba를 재가동 해보자. 재가동한 후 사용자의 모든 Windows머신을 새로운 도메인에 참여할 수 있도록 구성해야 한다.
모든 것을 순조롭게 진행해야 한다. 기존 정적 프로필을 roaming 프로필로 변경하려면 NT 시스템 제어판의 사용자 프로필을
방문해서 여러분의 프로필을 Samba 서버로 복사해야 한다. 로그아웃 및 로그인 할 때 로컬 또는 roaming 프로필을 사용
여부에 관해 질문을 받을 것이다. 그러면 roaming 프로필을 선택한다. 루트 같은 에러 메시지를 받는다면, 프로필 디렉토리에
가서 username.pds 디렉토리와 내용이 유효한 사용자가 소유하고 있는지 확인한다. 승인을 확정한 후 사용자 프로필은 완전히
가동될 수 있어야 한다. NT에 로그인할 때 Windows NT 로그인 대화창에서 방금 참여한 도메인을 선택해야 하는 것을
기억하라! 그렇게 하지 않으면 로컬 머신에서 로그인 하게 될 것이다. 모든 것이 잘 작동 될 것이다. 새 PDC를 감상해보라.
다음은 사용자 프로필에 대한 주의사항이다. 불행하게도 인터넷 익스플로러는 사용자 프로필 내에 캐시 파일을 저장하지 않는다.
이 때문에 일반적으로 IE가 프로필을 64MB로 부풀리게 하는 결과를 야기한다. 다음 절차를 따라 이런 문제를 수정한다:
- 특정 사용자로서 Windows에 로그인한다.
- 인터넷 익스플로러를 시작하고 툴 메뉴에 간다.
- 인터넷 옵션 메뉴 항목을 선택한다.
- 일반 탭에서 "파일 삭제" 버튼을 누른다.
- 그 다음 임시 인터넷 파일 설정 버튼을 클릭한다.
- "사용할 디스크 공간"을 4MB 정도의 적당한 값으로 줄인다.
- 브라우징 성능을 향상하기 위하여 여러분 UNIX 머신에 Squid 프록시 캐시를 구성한다. 이제 사용자의 LAN의 캐시는
중앙에 위치 지정되고 용량이 커져 모든 머신들이 공유할 수 있게 될 것이다.
MYDOMAIN/Administrator로 로컬 머신에 로그인할 때 사용자는 어떠한 로컬 태스크도 수행이 불가능하다는 것을
알게 될 것이다. 이러한 문제를 해결하기 위해 특정 NT 머신에 MACHINENAME/Administrator로서 로컬 관리자
계정을 사용하여 로그인한다. 그런 다음 사용자 관리자를 가동하고 "GENTOO/Domain Admins"를 로컬 "Administrator"
그룹에 추가한다. Domain Admins를 추가한 다음 이 계정은 "Account Unknown"으로 나타날 것이다. 그래도
작동한다. 여러분은 이제 MYDOMAIN/Administrator로서 로그온하여 로컬 관리 태스크를 수행할 수 있다.
Samba_TNG 미리보기
SAMBA_TNG branch는 도메인 컨트롤러 코드에 대해서 중요한 진전이 이루어 지고 있는 부분이다. 아직 성숙한 수준에
이르지 않았으나 테스트 목적으로 확인하거나 코드 디버깅에 도움이 될 수 있다. 그런 경우 다음과 같이 정상적으로 CVS에 로그인하여
SAMBA_TNG 코드를 확인할 수 있다:
프로필 경로에 퍼미션을 주어 어떤 사용자도 디렉토리에서 파일을 생성할 수 있게 한다(0777).
$ cvs -d :pserver:cvs@cvs.samba.org:/cvsroot login |
암호를 문의하면 "cvs"라고 입력한다. 그리고 나서 다음과 같이 명령을 입력하여 소스를 확인한다:
$ cvs -d :pserver:cvs@cvs.samba.org:/cvsroot co -r SAMBA_TNG samba |
CVS는 정상적인 방법으로 갱신을 수행한다.
$ cvs -d :pserver:cvs@cvs.samba.org:/cvsroot update -r SAMBA_TNG |
SAMBA_TNG는 궁극적으로 완벽한 도메인 컨트롤러 지원을 갖도록 설계되어 있다. 즉 BDC(백업 도메인 컨트롤러), 신뢰
관계, 디렉토리 활성화 모두가 작동되어야 한다는 것을 의미한다. 또한 모든 NT 관리 툴을 완전히 가동하여 Samba 시스템을
원격으로 관리하는데 사용될 수 있도록 개발자들은 상당한 노력을 기울이고 있다.
Samba_TNG의 변화
SAMBA_TNG의 가장 큰 변화 중 하나는 smbd와 nmbd 뿐이었던 데몬이 약 10개로 증가했다는 것이다. 각 데몬은 하나의
특정한 태스크를 수행하도록 분업화 되어 있다. 즉, 네트워크 브라우징, 로그온 요청, SAM 데이터베이스를 LDAP로 반출 등이다.
이러한 설계 변경 이면에 있는 아이디어는 Samba를 좀 더 모듈답게(modular) 사용한다는 것이다. 이런 변경은 데몬을
Samba의 다양한 버전으로 서로 혼합되고 일치되도록(match) 커스터마이즈 기능을 제공하도록 한다. 특정 기능이 필요하지
않는 경우 상응하는 데몬을 사용할 수 없다.
기타 추가된 툴은 rpcclient, net, samedit, regedit 등이다. 명령 행 프로그램은 Microsoft
프로토콜을 사용하여 Windows NT 또는 SAMBA_TNG 시스템과 상호 작용한다. Samba 팀은 이 분야에서 UNIX
관리자가 관리를 위해 Windows NT 머신에 직접 로그인 할 필요가 없게 하는 툴을 생성하기 위해 최대의 노력을 기울이고
있다. 결국에는 적절한 명령 행 툴을 사용하여 모든 필요한 태스크를 원격으로 처리할 수 있을 것이다.
참고자료
필자소개  | |  | Daniel Robbins는 Gentoo Technologies, inc.의 사장/CEO이다. 또 PC용 고급 Linux인 Gentoo Linux의
창설자이자 , 차세대 Linux 포트 시스템인 Portage 시스템의 창시자이다. 또한 Macmillan사에서 출판하는
Caldera OpenLinux Unleashed, SuSE Linux Unleashed, Samba Unleashed에 집필활동을 하고 있다. |
기사에 대한 평가
 |
| 이 문서 북마킹 하기
|
|