강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

SAMBA 입문

작성자 정보

  • 웹관리자 작성
  • 작성일

컨텐츠 정보

본문

icon01.giftitle20.gif


원문: 리눅스 가제트 36호

 

네트워킹의 중점은 컴퓨터가 정보를 쉽게 공유하도록 하는 것이다. 다른 유닉스나 리눅스와 정보를 공유하는 것은 쉽다. FTP나 NFS 같은 도구를 쉽게 이용할 수 있고 즉석에서 쉽게 사용 가능하다. 불행히도 가장 열렬한 리눅스 애호가도 피시에서 가장 널리 사용되고 있는 운영체제가 윈도우 계열이라는 것을 인정한다.

당신이 혼자서 고립되어 리눅스를 사용하지 않는 한 당신은 윈도우 머신과의 정보 교환을 필요로 한다. 당신이 모든 파일을 플로피로 옮길 생각이 아니라면 당신이 필요로 하는 도구는 삼바이다.

삼바는 리눅스가 SMB(server Message Block)를 말할 능력을 주는 일련의 프로그램이다. SMB는 OS/2, NT, Win95, WFW 를 사용하는 컴퓨터끼리 파일 공유와 프린터 서비스를 구현하는데 사용되는 프로토콜이다. 이 프로토콜은 NFS(Network File System), lpd(UNIX 프린터 서버), NIS나 Kerberos 같은 분산인증구조를 결합한 것과 유사하다.

만약 당신이 Netatalk와 친숙하다면 삼바는 Netatalk가 맥킨토시에 적용되는 것 처럼 윈도우에 적용된다. 삼바 서버 프로그램을 수행하는 동안은 당신의 리눅스 머신은 마치 다른 윈도우 머신인것처럼 Network Neighborhood에 나타난다. 윈도우머신 사용자는 리눅스 서버에 login해서 그들에게 주어진 권한에 따라 UNIX 파일 시스템과 파일을 주고 받으며 프린트 작업을 건네주고 심지어는 WinPopup 메시지를 보내기까지 한다.

만약 당신이 리눅스를 거의 NT나 윈95머신으로 구성된 환경에서만 사용한다면 삼바는 매우 귀중한 도구이다.

 <그림 1>  삼바 서버를 나타내주는 Network Neighborhood

삼바는 또한 윈95머신으로부터의 네트워크 login을 처리하기 위해 WINS서버로서의 NT서버가 하는 역할을 대신 할 수 있다. 삼바코드로부터 유래한 PAM모듈은 NT서버로서 UNIX login 인증을 처리할 수 있다. 현재의 삼바 프로젝트는 윈NT의 도메인 콘트롤러 프로토콜을 역 추적하여 삼바의 구성품으로 새로 구현하고 있다. 아직은 실험적이지만 이코드는 이미 NT 워크스테이션으로부터의 logon을 성공적으로 처리하고 있다.

머지않아 삼바가 완전한 primary domain controller (PDC)로 작동하여 사용자 정보를 저장하고 다른 NT 도메인과 신뢰관계를 형성하게 될 것이다.

무엇보다도 삼바는 GNU에 의거 무료이다. 많은 경우에 NT서버는 파일공유와 프린트 스플 그리고 윈95머신들에대한 연결 제어들에만 사용된다. 리눅스와 삼바의 결합은 이러한 전형적인 마이크로소프트 솔루션에 대한 강력하고 저렴한 대안을 제공하고 있다.

 

윈도우 네트워킹

삼바를 이해하려면 윈도우 네트워킹에 관한 약간의 지식을 아는게 필요하다. 윈도우 클라이언트는 서버에서 파일과 프린트 서비스를 받기 위해 NetBIOS 세션을 통해 Server Message Block을 전송한다. NETBIOS는 최초에 IBM에의해 MS-DOS나 PC-DOS에서 구동하는 소프트웨어에대한 네트위크 인터페이스로 개발되었다. 이는 일련의 네트워킹 서비스와 그 서비스를 접근하기위한 소프트웨어 인터페이스를 정의한다. 그러나 네트워크에서 비트를 운반하는 실제적인 프로토콜은 규정하지 않는다.

세개의 주요한 NetBIOS 군이 그동안 나타났는데 운반 프로토콜에서 달랐다. 최초의 구현은 NetBEUI(NetBIOS Extended User Interface)로서 불렸는데 단일 세그먼트 네트워크를 위해 디자인된 간편한 트랜스포트 프로토콜이었다. 노벨에 의해 사용된 NetBIOS over IPX도 인기가 있다. 삼바는 TCP/IP 하에서 NetBIOS를 구현하므로, 많은 이점이 있다.

TCP/IP는 이미 많은 운영체제에 구현되어 있어서 삼바를 모든 UNIX 계열 뿐 아니라 OS/2, VMS, AmigaOS, 애플의 Rhapsody( 실데로 NextSTEP) 과 중형 전산기 운영체제인 CMS에 까지 쉽게 이식되었다. 삼바는 또한 전용 프린터서버와 Whistle’s InterJet Internet 같은 내장된 시스템에도 사용된다.

TCP/IP를 사용하므로 삼바는 대규모 TCP/IP 네트워크 즉 인터넷 같은 곳에도 쉽게 적용한다. 이러한 이점을 감지하고서 마이크로소프트사는 SMB와 NetBIOS over TCP/IP를 묶어서 Common Internet Filesystem(CIFS)라 이름 지었다.  마이크로소프트사는 현재 CIFS를 파일 전송에대한 인터넷표준으로 삼도록 노력하고 있다

<그림2> OSI 네트워크 레퍼런스에 대비한 SMB 네트워크 구조

 

삼바의 구성

삼바 서버는 실제로 두개의 서버 프로그램으로 구성되어있다. smbd와 nmbd이다. smbd가 삼바의 핵심이다. 이는 세션 연결을 설정하고 클라이언트를 인증하며 파일시스템과 프린터에대한 접근을 제공한다.

nmbd는 네트워크 탐색을 구현한다. 그의 역할은 삼바서버가 제공하는 서비스를 광고하는 것이다. nmbd는 삼바서버가 NT와 윈95의 네트워크 이웃으로 나타나게 하고 사용자가 가능한 자원의 목록을 확인하게 해준다.  삼바서버를 nmbd없이도 가동할 수는 있으나 그 경우는 사용자는 미리 서버와 사용하려는 자원의 NetBIOS 이름을 알아야 한다.  nmbd는 마이크로소프트의 네트워크 탐색 프로토콜을 구현한다. 따라서 이는 그가 탐색 경쟁(때로는 탐색 전쟁이라고도 불린다) 에 참여하고 마스터 또는 백업 열람자로 행동할 수 있다는 걸 의미한다. nmbd는 또한 WINS(Windows Internet Name Service) 서버로도 기능하는데 만약 당신의 네트워크가 한 개 이상의 TCP/IP 서브네트에 걸쳐있다면 필요하다.

삼바는 또한 다른 도구들을 갖고 있다. smbclient는 ftp와 유사한 쉘 환경하의 사용자 인터페이스를 갖는 SMB 클라이언트로서 당신이 다른 삼바 서버로 또는 서버로부터 파일을 복사하는걸 가능하게 할 뿐 아니라 SMB 프린터 자원을 접근하고,  WinPopup 메시지를 보내는걸 가능하게 한다.  리눅스 사용자에게는 SMB 파일 시스템이 있어 윈95의 공유 디렉토리를 리눅스에 어태치 할 수 있다.

smbtar은 smbclient가 다른 윈95의 공유파일을 표준 유닉스 tar 파일에 저정하거나 원상복구하는걸 가능하게 하는 쉘스크립트이다.

testparm은 smb.conf 파일 내용을 분석해주므로 셋업 오류를 찾는데 유용한 도구이다. 다른 프로그램들은 삼바의 암호화된 패스워드 파일 관리나 국제적 사용을 위한 여러 문자 세트 설정 및 문제점 진단등에 사용된다.

 

삼바 설정

항상 그렇지만 어느 프로그램이 무엇을 할 수 있는지 보여주는 좋은 방법은 몇 가지 예를 보여주는 것이다.
두 가지 이유 때문에 이 예는 이미 당신이 삼바를 설치했다고 가정한다.
첫째로 삼바를 만들고 설치하는 것은 또 하나의 기사감이기 때문이다.
둘째로 삼바는 레드햇과 데비안 패키지에  새 안정 버전이 나올 때마다 포함되므로 리눅스에서 설치는 식은 죽 먹기다.  더구나 모든 배포판의 기본 설치에서 삼바는 자동으로 설치된다.

삼바버전 1.9.18 이전에는 암호화된 패스워드 인증을 원하면 삼바를 스스로 컴파일해야 했다. 이유는 삼바가 암호화를 위해 DES 라이브러리를 사용하는데 미 정부는 이를 무기로 분류 기밀로 관리하였기 때문이다. 암호화된 패스워드가 지원되는 삼바 바이너리 버전은 미국으로부터 합법적으로 수출될 수 없었다. 그 결과 암호화가 지원된 컴파일된 삼바파일을 배포하기 위해 미러 사이트가 등장했다.

버전 1.9.18부터는 삼바는 변형된 DES 알고리즘을 사용하므로 수출 제한에 해당되지 않는다. 이제 당신이 직접 삼바를 만들어야 할 경우는 최근의 알파버전을 테스트할 경우나 비 표준 기능을 삼바에 넣고자 할 경우뿐이다.

삼바는 매우 크고 복잡한 프로토콜이므로 삼바를 구성하는 건 쉽지 않다. 170가지 이상의 다른 구성 옵션이 삼바의 구성 파일인 smb.conf 파일에 나타날 수 있다.  그렇다고 해서 걱정은 할 필요없다.  UNIX의 모든 다른 면처럼 간단한 구성으로 운영이 가능하다. 그 다음 당신은 다른 파라메터를 배울때마다 구성을 세련되게 고치면 된다. 끝으로 삼바의 최신버전은 이기사가 쓰여진 1월 말 현재 1.9.18p1이었다. 여기에 나온 일부 옵션이 그동안에 변했을 수도 있다. 항상 삼바 패키지에든 도큐먼트(특히 README 파일)가 가장 확실한 정보원이다.

smb.conf는 레드햇과 데비안에서 /etc에 저장된다. 만약 당신이 삼바를 직접 컴파일했다면 그리고 다른 설치경로를 바꾸지 않았다면 이 파일은 /usr/local/samba/lib/smb.conf이다. 모든 삼바 관련 프로그램은 구성 정보로서 이 한 개의 파일만을 읽는데 이 파일은 윈도우의 *.INI 파일과 비슷하다.

이 파일의 각각의 섹션은 대 괄호로 둘러싸인 이름으로 시작하는데 이는 서비스 이름이거나 특별 섹션 중 하나이다.

[global], [homes] or [printers].

각 구성 파라메터는 서버 전체에 영향을 미치는 어느 것을 통제한다는 의미인 글로벌 파라메터이거나 각 서비스에만 해당하는 어떤 것을 통제한다는 의미인 서비스 파라메터 중 하나이다.

[global] 섹션은 모든 글로벌 구성 옵션과 디폴트 서비스 셋팅을 설정하는데 사용된다.
[home] 섹션은 각 사용자의 홈 디렉토리에 동적으로 연결되는 특별 서비스 섹션이다.
[printers] 섹션은 시스템의 printcap 파일에 정의된 매 프린터를 공유하는 쉬운 방법을 제공한다.

 

간단한 구성

다음 smb.conf 파일은 내 리눅스 머신의 모든 사용자의 홈 디렉토리를 네트워크에서 이용하게 해주는 단순하고 유용한 삼바 구성을 나타내준다.

[global]
        netbios name = FRODO
        workgroup = UAB-TUCC
        server string = John Blair’s Linux Box
        security = user
        printing = lprng

[homes]
        comment = Home Directory
        browseable = no
        read only = no

[global] 섹션에서 호스트 이름과 그 호스트의 작업 그룹 그리고 탐색 목록에서 호스트 이름 다음에 나오는 설명을 정의하고 있다.
Security 파라메터는 삼바가 user level 보안을 사용하도록 정하고 있다.

SMB는 두가지 security 모드를 가지고 있다.

공유(share) :
특정한 자원에 대한 패스워드 설정

사용자(user):
특정 사용자의 접근 권한을 설정

두 모드의 미묘한 차이를 여기서 설명하기는 어렵지만 대부분의 경우에 사용자 레벨 security를 사용하고자 할 것이다.

프린팅 코멘드는 지역프린팅 시스템 타입을 지정하고 있다. 이는 삼바가 어떻게 프린트 작업을 제출할지 프린트큐의 보여줌, 프린트 작업 삭제나 다른 작업들을 지정한다. 만약 당신의 프린팅 시스템 사용법을 삼바가 알지 못한다면 당신은 각 프린트 작업  수행 명령을 지정할 수 있다.

아무런 암호화 모드가 정해지지 않았으므로 삼바는 모든 연결에 대해 UNIX 패스워드 유틸리티를 사용하는 텍스트 패스워드 인증을 사용한다. 만약 당신의 리눅스 배포본이 PAM을 사용한다면 PAM 구성은 삼바가 패스워드 데이터베이스에게서 인증을 하도록 수정되어야 한다.  레드햇 패키지는 이것을 자동으로 다룬다. 여러 경우에 일반 텍스트 인증을 사용하는 건 어리석다. 삼바가 암호화 패스워드를 사용하도록 구성하는 건 이 기사의 범위를 벗어난다. 그러나 어렵지는 않다. 자세한 건 /docs의 ENCRYPTION.txt를 보라.

[homes] 섹션의 세팅은 각 사용자의 홈 디렉토리 공유를 통제한다. Comment 파라메터는 탐색 목록에서 자원 곁에 나타나는 설명을 지정한다.
Browseable 파리메터는 서비스가 탐색목록에 나타날지를 통제한다.

[homes] 섹션에서 주의해야할 사항은 아래와 같다.
browseable - no 는 인증받은 사용자의 유저네임이 디렉토리 이름으로 표시되어 나타난다. 즉 browesable = no 일때 삼바 서버를 탐색하면 나는 jdblair이라 불리는 공유 디렉토리를 볼 수 있다. browseable = yes 라면 homes와 jdblair 이라 불리는 두개의 공유 디렉토리가 나온다. Read-only=no 로 설정한 경우 사용자들은 적절히 인증을 받으면 홈디렉토리에 쓸 수 있다. 그러나 설혹 인증을 받았더라도 홈디렉토리의 파일허가모드가 다른 사용자의 사용을 제한하면 사용이 안된다. Read-only=yes 로 한 경우는 UNIX에서의 허가와 상관없이 홈디렉토리에 쓰지 못한다.

다음 구성 섹션은 삼바서버에 login한 모든 사용자에게 printcap 파일에 나타나는 모든 프린터의 접근을 허용한다. guest ok = yes 라고 설정해도 사용자 레벨 보안을 채택하면 모든 사용자에게 접근을 허용하지 않는다. 모든 프린트 서비스는 printable = yes 로 지정되야 한다.

 [printers]
        browseable = no
        guest ok = yes
        printable = yes

마지막 구성은 퍼블릭이라 불리는 익명 ftp 디렉토리에 대한 읽기 전용 서버 공유를 제공한다. 당신은 클라이언트 머신에 프린터 드라이버를 설치해야 한다. 당신은 printer name 과 printer driver 명령을 사용해서 윈95나 NT 클라이언트의 프린터 클라이언트 설치를 자동화할 수 있다.

[public]
        comment = Public FTP Directory
        path = /home/ftp/pub
        browseable = yes
        read only = yes
        guest ok = ye

<그림 3> 윈도우 익스플로러에서의 삼바 구성 모습

여기에서는 사용자와 공유 레벨 보안의 차이 같은 미묘한 부분을 설명하지 않는다. 여기에서는 단지 삼바의 일부 단면만 보여주고 있지만 거꾸로 삼바 설정이 얼마나 단순한 지도 보여준다.

 

결론

삼바는 윈도우와 유닉스간의 갭을 연결하는 중요한 도구이다. 여기서는 리눅스만을 언급했지만 SUN 이나 RS/6000 같은 서버에도 같다. 삼바는 삼바 팀에의해 계속적으로 활발히 개선되고 있다.

 

자원

삼바 홈페이지(http://samba.anu.edu.au/samba)가 삼바의 가장 중요한 자료원이다. 삼바와 같이 배포되는 도큐먼트는 잘 정리되지는 않았다. 그러나 구성에관한 모든 사항을 다루고 있다. 삼바에관해 의문이 있으면 FAQ를 참조하고 다음에 Samba Mailing List를 살펴보라. 양쪽 다 삼바 홈페이지에  있다. 

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,041 명
  • 현재 강좌수 :  35,855 개
  • 현재 접속자 :  112 명