1

글타래: Samba에 관해서 - Mac에서 Windows 자원 공유하기

Inside Samba: Windows Sharing for the Mac

by Jason Deraleau

03/18/2003

원문: http://www.macdevcenter.com/pub/a/m...mba.html?page=1

10.1을 시작으로 애플은 Mac OS X 안에 SMB 프로토콜을 지원하기 시작했습니다. SMB는 내부 네트워크 안에서 Windows 피씨들 간의 파일과 프린터 공유에 사용되는 규약입니다. Mac OS X 10.1에서는 제한적인 클라이언트 기능 만을 지니고 있었으나, 10.2에 와서는 OS에 더욱 개선된 클라이언트와 서버 기능들이 추가되었습니다. 서버 기능은 Samba라고 불리우는 Unix 데몬(daemon)에 의해 구현됩니다. Samba는 오픈 소스 프로젝트들 중에서 가장 성공적인 것들 중의 하나로 이미 Linux, 여러 BSD, 그리고 Darwin/Mac OS X 용으로 이식되어 사용되고 있습니다. Andrew Tridgell의 지휘 아래 시작된 Samba 개발팀은 Windows 서버 제품에서 사용되는 기능들을 가능한 한 많이 제공하기 위한 연구를 진행중이며 현재 Samba는 디스크 공유, 프린터 공유, WINS 서버 기능, 그리고 NT4의 기본 도메인 콘트롤러(primary domain controller)의 작업을 수행할 수 있습니다.

기본적 Windows 공유 기능 사용하기

Mac OS X 10.2에서 Windows 파일 공유 기능을 사용하는 것은 무척 쉽습니다. 기본적으로, 여러분의 컴퓨터는 "WORKGROUP" 이름의 SMB 워크그룹 안에 소속되어 있고 SMB hostname은 여러분의 컴퓨터 이름으로 이미 설정되어 있을 겁니다. Windows의 '네트워크 환경'(Network Neighborhood)에 여러분의 컴퓨터가 잘 보이게 하시려면 위의 설정을 올바로 해주어야 합니다.

Workgroup 설정

http://www.macdevcenter.com/mac/2003/03/18/graphics/fig1.jpg

맥이 사용할 워크그룹(workgroup)을 변경하려면 /Applications/Utilities/ 폴더에 있는 디렉토리 접근(Directory Access)을 여십시오. 그리고 왼쪽 밑의 구석에 있는 좌물쇠를 누르시고 암호를 입력한 후에 서비스 항목에 있는 SMB를 선택하고 '설정...' 단추를 누릅니다. 그러면 workgroup을 지정하는 창이 뜨는 데, 여기에 Windows 컴퓨터에서 사용하고 있는 workgroup의 이름을 넣고 '승인' 단추를 누르면 디렉토리 접근에서의 모든 설정은 끝나게 되고 다음 단계로 넘어갑니다.

Hostname 설정

http://www.macdevcenter.com/mac/2003/03/18/graphics/fig2.jpg

SMB hostname을 바꾸려면 시스템 환경설정의 '공유' 항목을 선택하십시오. 여기서 컴퓨터의 이름과 Rendezvous 이름을 설정하실 수 있습니다. 이곳에서 쓰일 이름은 사용하는 네트웍 안에서 중복되지 않는 것이어야 합니다. 또한, hostname은 한 단어로 된 것(단어 사이에 빈 공간이 없는)을 사용하시고 Rendezvous 이름도 같은 이름의 것으로 사용하실 것을 권합니다. '공유' 항목에 있는 몇 가지 사용가능한 서비스들 중에 '윈도우즈 파일 공유 (Windows File Sharing)' 항목 단추를 눌러주면 선택한 workgroup과 hostname을 사용해서 Samba가 시동됩니다.

개별 사용자의 접근 설정

http://www.macdevcenter.com/mac/2003/03/18/graphics/fig3.jpg

이제 Samba가 실행되었으면, Windows에서 Mac으로 개별적인 사용자 계정을 사용하여 접속을 가능하게 할 수 있습니다. 접속 계정을 설정하려면 시스템 환경설정의 '계정' 항목을 열고 접속을 허용할 사용자를 선택하거나 새로 생성하실 수 있습니다. 아래 부분에 '윈도우즈로부터 사용자 로그인 허용(Allow user to log in from Windows)' 이라는 항목이 보이실 겁니다.(Mac OS X 10.3 Panther에서는 이 항목이 제거되었으며 기본적으로 모든 사용자가 인증을 통해 Windows에서 접근할 수 있게 되었습니다.) 이것의 버튼을 누르면 기본적으로 사용자의 홈 디렉토리가 자동적으로 공유되게 설정이 되며 Windows로부터 접근 시 해당 사용자의 홈 디렉토리로 접근할 수 있게 됩니다. Windows 탐색기 안에서 주소란에 \\호스트이름(HOSTNAME)\사용자이름(USERNAME)을 입력하면 "네트워크 환경(Network Neighborhood)"에서 홈 디렉토리를 보실 수 있습니다.

공유 항목 추가 하기

Mac OS X와 함께 설치되는 Samba는 오직 홈(home) 디렉토리 만을 공유하게 설정되어 있습니다. 이것은 smb.conf 설정 파일 안의 특별한 [homes] 공유 기능을 사용하게 됩니다. 만약 여러분의 홈 디렉토리 만을 공유하고 싶을 경우는 괜찮겠지만 공유하고자 하는 파일들이 다른 폴더에 위치하는 경우에는 어떻게 할까요? 가령 Windows에서 Mac의 /Users/Shared 폴더로 접근하게 할 수 있는 방법이 있을까? 하고 궁금해 하실 수도 있을 겁니다. 물론 이것은 smb.conf 파일을 조금만 수정하면 가능하게 됩니다.

Samba의 설정 관련 정보는 /etc 디렉토리 안의 smb.conf라 불리우는 파일 안에 저장되어 있습니다. 이 파일 안에는 Samba가 사용하는 일반 지시자들(directives)이 있는 [global] 항목과, 사용자의 홈 디렉토리를 공유하기 위한 설정 지시자들이 나열되어 있는 [home] 항목이 있습니다. 공유 항목을 추가하는 법의 한 예로, Windows 사용자와 /Users/Shared 폴더를 공유하기 위한 과정을 알려드리겠습니다. 우선 해야할 것은 원본 파일을 백업하는 것입니다. 이것을 위해 Mac OS X의 터미널을 열어서 약간의 기초적인 유닉스 명령어들을 사용하겠습니다.

Samba 설정 파일 백업하기

/Applications/Utilities/ 폴더에 위치한 터미널(Terminal)을 열어서, cd /etc라고 입력해서 /etc 디렉토리로 이동합니다. 그리고 나서, 명령어 ls를 치면 /etc 디렉토리 안에 위치한 모든 파일들과 폴더들이 보이실 겁니다. 이 중에 smb.conf 파일을 sudo cp smb.conf smb.conf.back라고 입력해서 백업을 합니다. 이 곳의 파일들은 root 권한 만 접근이 가능하기 때문에 백업을 위해서는 우선 root 권한을 획득해야 하기 때문에 앞에서 sudo 명렁어를 사용했으며, 시스템은 일시적으로 root 권한을 부여하기 위해 사용자 암호를 물어오게 되고, 암호를 입력하면 백업 파일이 생성됩니다. 이제, 확인을 위해 ls 명령어를 다시 입력해서 smb.conf.back 파일이 보이면 성공적으로 백업 파일이 생성된 것입니다.

새로운 공유 항목 추가하기

이제 smb.conf 파일을 백업하셨다면 pico 편집기를 사용해서 원래의 smb.conf 파일을 열 차례입니다. 변경사항을 저장하려면 root 권한이 필요하기 때문에, 권한 획득을 위해 다시 한 번 sudo 명령어와 함께 sudo pico /etc/smb.conf라고 입력하고 암호를 넣습니다. 이렇게 하면 smb.conf 파일의 내용을 보실 수 있으며 위에서 언급한 [global]과 [homes] 항목을 포함해서 [public]과 [printers] 항목의 예가 보이실 겁니다. 여기서 사용된 pico 편집기는 무척이나 사용이 쉽습니다. 이동을 위해서는 자판의 화살표 키들을 사용하고 파일의 수정은 여타 다른 텍스트 편집기들과 그 사용법이 비슷합니다. 새로운 공유를 설정하기 위한 첫 단계로 우선 제목을 붙여주는 것입니다. 여기서의 제목은 실제 사용되어질 공유의 이름이 됩니다. 아래에 사용될 보기에서는 "shared"라는 이름을 사용하겠습니다. [homes] 항목이 끝나는 부분 바로 밑으로 커서를 이동한 후에 리턴 키를 몇 번 눌러서 약간의 공간을 주고 아래와 같이 입력하십시오.

[shared]
  comment = Shared Directory
  path = /Users/Shared 
  read only = no
  browseable = yes
  create mode = 755

[shared]라고 쓰인 줄은 Samba에게 "shared"라는 이름의 새로운 디스크 공유가 정의되었음을 알려줍니다. comment로 시작되는 줄은 Windows 탐색기에서 "Shared Directory"라는 글자를 표시하게 합니다. 다음 줄은 공유 항목이 위치하는 경로를 설정해주며 보기의 경우에는 /Users/Shared 폴더가 됩니다. 그리고 이곳에서 공유될 파일들은 변경 사항들도 저장할 수 있어야 하기 때문에 read only 값으로 no를 설정해 주었습니다. browseable이란 항목은 공유 항목이 Windows 탐색기에 보여질 지를 결정해 줍니다. 여기에 no의 값이 주어저도 사용자가 폴더가 위치한 절대 경로(이번 보기의 경우는 \\HOSTNAME\SHARED)를 알고 있다면 접근은 가능합니다. 마지막 줄의 create mode는 공유 항목에 생성되는 파일들이 가지게 될 권한을 설정하는 곳 입니다. 여기에는 Unix에서 사용되는 숫자로 표시되는 권한 값을 입력하게 됩니다. 위의 보기의 경우, 소유자(owner)는 읽기/쓰기/실행의 권한이, 그리고 그룹(group)이나 기타 사용자(others)는 읽기/실행의 권한이 주어지게 됩니다.

위의 설정사항들을 수정한 후에, 콘트롤(Ctrl)+O 키를 누르고 나서 엔터키를 처서 파일을 저장하고, 콘트롤(Ctrl)+X 키를 눌러서 pico를 종료합니다. 모든 것이 성공적으로 잘 저장되었는 지를 확인하시려면 cat /etc/smb.conf 명령을 사용해서 파일의 내용을 다시 확인해 보실 수 있습니다. 여기서의 변경 사항을 Samba에 적용시키기 위해, 터미널에서 sudo killall -HUP smbd라고 입력하면 Samba 데몬(daemon)을 다시 시동해서 설정 정보를 다시 가져게 됩니다.

이제, Windows의 "네트워크 환경"에서 "shared"라는 이름의 공유 항목과 사용자 이름으로 된 공유 항목을 보실 수 있습니다. 사용자 이름으로 된 공유 폴더에는 사용자의 홈 디렉토리를 포함하며 앞에서 설명한 Samba 설정 파일 안의 [homes] 항목을 통해 공유된 것입니다.

[homes] 공유

http://www.macdevcenter.com/mac/2003/03/18/graphics/fig4.jpg

[homes] 공유는 특별한 지시자들이 사용됩니다. 이것은 위에서 사용된 [shared] 공유와 비슷한 어느 특정 공유 폴더를 나타내기는 하지만 Samba에게 사용자의 홈 디렉토리를 공유하라는 내부적인 적용의 지시에 더 가깝습니다. 아래는 [homes] 항목의 기본 선언문입니다:

[homes]
   comment = User Home Directories
   browseable = no
   read only = no
   create mode = 0750

보시면 아시겠지만, 위의 선언문은 [shared] 선언문 처럼 공유 이름을 포함하는 괄호로 시작합니다. 여기서 왜 "homes"라는 제목의 공유 항목이 Windows의 "네트워크 환경"에서는 안보이는 지 궁금해 하실 수도 있을 겁니다. 이유는 바로, browseable 값이 no로 설정되어 있기 때문입니다. 나머지 설정은 기본 생성 모드(create mode)가 틀린 것 말고는 이전의 [shared] 항목과 비슷합니다. 이번 경우에는, 모든 새로 생성되는 파일들은 소유자에게는 읽기/쓰기/실행의 권한이, 그리고 그룹에게는 읽기/실행의 권한이 주어지며 나머지 기타 사용자는 파일에 접근할 수 없게 됩니다. 이것은 사용자의 홈 디렉토리에 대해서는 더 엄격한 권한이 주어지는 것이며 반면에, [shared] 공유의 경우에는 공개적인 사용의 성격으로 인해 한편으로는 덜 엄격한 접근 권한을 주게 된 것 입니다.

일반적 Samba 지시자들

지금까지 여러분은 SMB 설정, Windows 공유 기능 켜기, 그리고 추가로 디스크 공유를 생성하는 법을 보셨습니다. Samba 설정을 위해 사용되는 지시자들로는 많은 종류가 있습니다. 어떤 지시자들은 Samba 전체에 영향을 미치는 것들도 있고, 어떤 것 들은 디스크 공유나 프리터 공유에 한정되어 사용되는 것들도 있습니다. 다음에는 추가로 몇 가지 일반적으로 사용되는 지시자들과 그 사용법을 알려드리겠습니다.

Samba의 보안

SMB는 결코 가장 안전한 규약은 아닙니다. 처음에는 내부 네트워크 안에서 사용되도록 설계되었으며 사용자 인증 절차에 의한 보안이 이루어 집니다. 이것은 만약 컴퓨터가 직접적으로 인터넷에 연결되어 있다면 보안상의 취약점을 보일 수도 있으며 악의적인 의도로 컴퓨터의 공유 항목들로의 접근을 가능하게 할 수도 있습니다. 그래서 몇 가지 보안상 취약점을 보완하기 위해, 단지 특정 호스트들만 Samba에 접속할 수 있게 할 수는 있습니다. 이것을 위해서는 "hosts allow" 지시자를 [global] 항목에 추가해 주면 됩니다:

[global]
   hosts allow = localhost 192.168.1.

위의 예에서는 컴퓨터 자신을 포함해서 단지 192.168.1의 IP 주소를 가지고 있는 내부 네트웍에 존재하는 컴퓨터들 만이 접속이 허용됩니다. 여기서 더 나아가 "interfaces"와 "bind interfaces only" 지시자를 사용해서 Samba 데몬을 LAN interface로만 묶어 줄 수도 있습니다:

[global]
   interfaces = 192.168.1.29/255.255.255.0
   bind interfaces only = yes

위에서 사용된 interface 방법은 만약 DHCP 만을 사용하는 경우라면, interface의 IP 주소가 수시로 변할 것이기 때문에 설정파일을 항상 환경에 맞게 변경해 주어야 하므로 관리하기는 어려울 겁니다. 그러므로 hosts allow/hosts deny 방법이 관리는 훨씬 쉽습니다. 그리고 많은 ISP들은 보안상의 이유로 SMB가 사용하는 포트를 막아놓았을 수도 있으며 만약, 인터넷을 통해 SMB를 사용하려고 할 때 제대로 동작을 안 한다면 이것이 이유가 될 수도 있음을 알아두시기 바랍다.

파일 감추기

Windows 컴퓨터에서 Mac에서 공유된 항목에 접근할 때, 마침표로 시작되는 파일들이 보이실 겁니다. Unix에서는 이름을 마침표로 시작해서 파일이나 폴더들을 일반적인 디렉토리 표시 목록에서 감추려고 할 때 사용됩니다. 하나의 좋은 예로, Mac OS X의 숨겨진 .DS_Store파일에는 Finder의 보기 설정 사항들이 저장되어 있습니다. 이런 파일들을 안보이게 하기 위해서는 smb.conf 파일에 "hide dot files" 지시자를 추가해 주시면 됩니다.

[global]
   hide dot files = yes

이렇게 하면 이름이 마침표로 시작되는 모든 파일들이나 폴더들을 감추어 줍니다. 또한 "hide files" 지시자를 패턴(*)과 함께 사용하면 특정 파일들을 감출 수도 있습니다. 예를 들어 .log 확장자를 포함하는 모든 파일들을 숨기기 위해서는 다음과 같이 추가합니다:

[homes]
   hide files = /*.log/

한 가지 주의해야 할 것은, 이런 파일들은 단지 보이지만 않을 뿐, Windows 컴퓨터에서 접근은 가능합니다. 이런 파일들은 FAT 파일 시스템의 "숨겨짐 속성(hidden attribute)"과 같은 특성을 가지고 있게 되어서 Windows 탐색기의 "숨겨진 파일 보기" 혹은 "숨겨진 시스템 파일 보기" 기능이 켜저 있다면 계속 보일 수는 있습니다. 만약 파일의 접근을 완전히 차단하고 싶다면, "veto files" 지시자를 사용하면 됩니다:

[homes]
   veto files = /*passwd*/

이렇게 등록하면 파일 이름에 "passwd"가 포함된 모든 파일들은 전혀 보여지질 않게 됩니다. 물론 "hide files" 지시자를 사용한 경우와는 달리, Windows 사용자는 이런 파일들이 존재하는 지를 확인할 방법이 없게 됩니다.

디렉토리 접근 막기

Samba는 또한 공유 항목 안의 특정 디렉토리 접근을 제한할 수도 있습니다. 예를 들어, [shared] 공유 항목 안에 위치한 mp3 폴더로의 접근 만을 막고 싶을 경우, "dont descend" 지시자를 사용해서 Windows 사용자가 이 폴더로 접근하는 것을 막을 수도 있습니다:

[shared]
   dont descend = mp3

이 폴더는 계속 보이기는 하겠지만, Windows 사용자가 이 폴더를 열려고 하면 접근이 거부될 것 입니다. 하지만 공유 항목 안의 다른 폴더들은 영향을 받지 않습니다.

파일과 디렉토리 접근

앞에서 "create mode" 지시자에 관해서 말씀드렸었습니다. 이 지시자는 파일을 생성할 때 어떤 권한이 사용될 것인가를 결정하는 데 사용됩니다. 또 다른 비슷한 지시자인, "directory mask"도 디렉토리 생성 시 같은 기능을 합니다. 한 가지 분명히 알아두어야 할 것은 어떻게 mask가 생성되는가 입니다. mask는 4 개의 위치로 구분될 수가 있습니다. 하나의 숫자는 각각의 위치에 표시됩니다. 처음 위치는 종종 완전하게 생략될 수도 있습니다. 다음의 세 위치들은 각각 소유자(owner), 그룹(group), 기타(others)를 나타내며, 소유자는 파일을 생성한 사용자에 해당되고, 그룹은 사용자가 속한 기본 그룹, 그리고 기타는 기타 모든 사용자들을 의미합니다.

어떤 숫자를 사용할 것인지는, 여러 환경에서 어떤 접근 권한을 줄 것인지를 생각해서 결정해야 합니다. 세 가지의 접근 권한 형식으로 읽기, 쓰기, 그리고 실행이 있습니다. 대부분의 경우, 소유자에게는 읽기/쓰기 권한이면 충분할 것이고, 그룹과 기타를 위한 권한의 경우에는, 그 밖의 다른 사용자가 파일에 어떤 권한으로 접근해야 할 필요성이 있는지로부터 생각해 보셔야 합니다. 일단 어떤 접근 권한이 필요한지를 결정하게 되면, 다음의 과정을 따라해 보십시오: 0으로부터 시작해서, 읽기 접근 권한은 4를, 쓰기 권한은 2를, 그리고 실행 권한에는 1을 더하십시오. 그래서 만약 소유자는 읽기와 쓰기의 접근 권한을 갖게 하고, 소유자가 속한 그룹은 읽기 권한, 그리고 기타 사용자들의 접근을 막으려면, 640을 사용하시면 됩니다. 또는, 소유자와 그룹은 읽기와 쓰기 권한을, 하지만 기타 사용자들은 단지 읽기 권한 만을 주고 싶으시면 664를 사용하시면 됩니다.

디렉토리의 경우에도 같은 절차가 사용되지만, 디렉토리를 열기 위해서는 언제나 실행의 권한이 필요합니다. 그래서 만약, 소유자 만 읽기와 쓰기의 권한을 가지고 있는 디렉토리를 생성하고 싶다면 0700을 사용하게 됩니다. 만약에 실행의 권한을 승인하게 되면, 또한 사용자는 읽기 권한도 필요하게 될 것 입니다. (당연하겠지만, 읽을 수 없는 것을 실행할 수는 없겠지요.). 파일과 디렉토리의 접근 권한은 최상위의 공유 항목에서만 지정해 줄 수 있으며, 공유 항목 안의 폴더가 다른 접근 권한을 가지게 할 수는 없습니다. 또한, Windows에서 접근 권한을 변경할 수는 없겠지만, Finder에서 "정보 입수"를 사용하거나 터미널에서 chmod 명령어를 사용해서 권한을 변경할 수는 있습니다.

프린터 공유하기

Samba는 또한 Unix 기반의 프린터를 Windows 컴퓨터와 공유하는 기능을 지원합니다. 다행스럽게도, 이제 Mac OS X는 인쇄를 위해 Common Unix Printing System(CUPS)을 사용하며, "프린터 설정 유틸리티(Print Center)"에서 추가한 프린터와 함께 lpr, lpq, 그리고 기타 Unix 인쇄 명령어들을 사용할 수 있습니다. 또한, 웹 브라우저에서 URL 주소 http://localhost:631를 입력해서 CUPS 설정 도구에 접근할 수도 있습니다. 프린터를 공유하는 것은 비교적 쉬우나, 가장 어려운 부분은 적당한 드라이버를 가지고 Windows 컴푸터를 설정하는 일일 겁니다. 기본적으로, Generic/Text 프리터 드라이버는 정상적으로 작동하였지만 Apple Color LaserWriter 드라이버를 사용해서 PostScript 문서를 인쇄할 경우에는 약간의 문제가 있음을 발견했습니다. 이런 문제는 밑에서 설명된 약간의 쉘 스트립트(shell script)와 ESP Ghostscript 패키지를 사용하면서 해결되었지만, 여러분의 경우에는 환경에 따라 상황이 틀려질 수도 있습니다.

[printers] 공유

[printers] 공유는 [homes] 공유와 무척 비슷합니다. 두 공유 모두 Samba에게 다른 항목을 기초로 한 공유를 생성할 것을 지시한다는 점에서 특별한 경우 입니다. [homes] 공유의 경우, 이 다른 항목이란 바로 사용자 이름이 되며 [printers] 공유의 경우에는 바로 프린터가 됩니다. Samba는 프린터들의 목록을 바로 /etc/printcap 파일에서 가져옵니다. 이 파일에는 현재 컴퓨터가 알고 있는 모든 프린터들의 목록을 저장하고 있습니다. 이것은 보통 Mac OS X에서는 모든 내부 네트워크에 연결되어 있거나 혹은 Rendezvous를 통해 발견된 프린터에 해당됩니다. Mac에 직접 연결되어 있지 않은 프린터를 공유할 수도 있겠지만, 가장 좋은 결과를 얻기 위해서는 컴퓨터에 바로 연결되어 있는 프린터를 공유하도록 하실 것을 권합니다.

Samba 지시자들 중에서 디스크 공유와 프린터 공유의 구별을 도와주는 것이 바로 "printable" 지시자 입니다. 만약에 printable 속성이 true(혹은 yes)로 설정되어 있다면, Samba는 이것을 프린터 공유로 취급하게 됩니다. 프린터 공유에서, "path" 지시자는 임시 프린터 파일이 저장될 위치를 결정하는 데 사용되고 기본 위치는 /tmp로 설정되어 있으며 Mac OS X에서는 다시 수정할 필요는 없답니다. Samba는 인쇄할 때 다른 컴퓨터로부터 문서 자료를 받을 경우, path 지시자에 의해 지정된 폴더로 파일을 임시 저장하게 됩니다. 다음에, "print command" 지시자에 설정된 명령을 사용해서 파일을 인쇄 대기 목록에 추가하게 됩니다. 밑에 인용된 보기에서는 모든 인쇄 파일의 임시 저장소로 /temp 디렉토리를 사용하며 /etc/printcap 파일에 있는 모든 프린터들을 위한 각각의 공유 항목을 생성해 줍니다:

[printers]
   comment = All Printers
   path = /tmp
   browseable = no
   printable = yes
   guest ok = yes

위에 보이는 프린터 공유 설정은 디스크 공유의 것과 많이 비슷한데, printable 지사자는 앞에서도 설명되었 듯이, Samba에게 공유를 어떻게 취급할 것인 지를 결정해 줍니다. 그리고 browseable 속성은 no로 설정되어 있으며, 이것은 [homes] 공유에서처럼 허상의 공유(ghost share)가 보이는 것을 방지하기 위한 설정입니다. 인쇄 작업을 처리하는 데 사용되는 명령을 무엇으로 할 지의 지정은 "print command" 지시자에서 이루어집니다.

print command 지시자는 어떤 프로그램을 사용해서 인쇄 시스템으로 인쇄 작업을 보낼 지를 결정해 줍니다. Mac OS X에서는 /user/bin 디렉토리에 있는 lpr 명령을 사용하게 되는데, lpr을 사용하기 위해서는 어떤 프린터가 작업을 처리할 지, 그리고 어떤 파일이 인쇄될 지를 지정해 주어야 합니다. 올바른 프린터와 파일 이름을 lpr에 전달하기 위해서 Samba는 %p와 %s의 두 가지 변수들을 사용며 각각의 변수는 프린터와 파일을 나타냅니다. 실제 Samba에서는 /usr/bin/lpr -P%p -r %s와 같은 print command 지시자가 사용되며 Samba는 변수를 실제 프린터와 파일 이름으로 대치시켜서 명령을 실행하게 되고, 다음에 lpr는 작업을 받아서 인쇄 시스템에 전달하게 됩니다. 아래는 print command 지시자의 한 사용 예입니다:

[global]
   print command = /usr/bin/lpr -P%p -r %s

Windows에서의 프린터 설정

http://www.macdevcenter.com/mac/2003/03/18/graphics/fig5.jpg

이제 여러분은 프린터를 공유할 수 있게 Samba 설정을 마첬으며 Windows 탐색기에서 다른 공유 항목들과 함께 보실 수 있습니다. Windows 컴퓨터에 프린터를 설치하려면, 탐색기에서 프린터를 더블 클릭하고, 그러면 서버에 프린터를 열 수 있는 드라이버가 없다는 경고 창이 뜨게 됩니다. 일단 창을 닫게 되면, 시스템에서 사용 가능한 프린터 드라이버들의 목록들을 보여줍니다.

기본적인 글자 인쇄기능을 원하신다면, Generic manufacturer(일반 제조업체)의 Generic/Text Only 드라이버를 선택하십시오. 이 드라이버는 거이 대부분의 프린터들이 일반 글자들을 쉽게 처리하기 때문에 실험 목적으로도 아주 적합합니다. 만약 Postscript 인쇄를 원하시면, Apple의 Apple Color LaserWriter 드라이버를 선택하시면 됩니다. 이 드라이버는 가장 문안하면서 기초적인 Postscript 기능을 가지고 있습니다. 이제 드라이버를 선택한 후, '승인' 단추를 누르면 Windows 컴퓨터에서 Macintosh에 연결된 공유 프린터를 사용해서 인쇄를 하실 수 있게 됩니다.

한 가지 말씀드릴 것은, 가끔은 Windows에서 Postscript 형식의 파일을 보낼 때 어떤 이유에서인지 프린터를 통해 인쇄를 못 할 경우도 있습니다. 이것은 운영 시스템들이 인쇄 작업을 서로 다르게 처리하는 데서 생기는 문제라고 생각되는데, 이 문제는 GIMP Print 패키지를 설치하고 짧은 쉘 스크립트(shell script)를 써서 해결할 수가 있었습니다. 우선, Samba가 이 쉘 스크립트를 print command로 사용할 수 있게 설정을 해줘야 합니다. 아래는 스크립트 내용:

#!/bin/sh
#
# /usr/local/bin/printsmb
#
# Print script for Postscript files.
#

/usr/local/bin/ps2pdf13 /tmp/$2
rm /tmp/$2
/usr/bin/lpr -P$1 -r /tmp/$2.pdf

이 스크립트는 GIMP Print 패키지의 ps2pdf 도구를 사용해서 Windows 컴퓨터의 Postscript 파일을 PDF 파일로 변환해 줍니다. 그리고 나서 임시 저장되었던 Postscript 파일을 삭제한 후에 lpr을 사용해서 PDF 파일의 결과물을 프린터로 보내주게 됩니다. 스크립트를 /usr/local/bin 폴더에 위치시킨 후에 터미널에서 chmod 명령어를 사용해서 0755 권한을 주십시오. 그리고 이 스크립트를 Samba와 함께 사용하려면, 다음과 같이 [printers] 부분을 변경해 줍니다:

[printers]
   print command = /usr/local/bin/printsmb %p %s

이제 Samba는 스크립트를 불러서 필요한 프린터와 임시 저장 파일의 경로를 변수 값으로 사용할 수 있게 설정되었으며, 스크립트는 파일을 변환해서 인쇄를 합니다. Postscript 인쇄는 바로 여러분의 Mac에서 인쇄하는 것과 같은 기능을 제공하게 될 겁니다. 더욱이 이들의 인쇄 작업들은 '프린터 설정 유틸리티(Print Center)' 혹은 'CUPS' 조절판에서 쉽게 관리할 수도 있답니다.

The Samba Web Administration Tool

이제 여러분은 디스크와 프린터 공유 시 사용되는 일반적인 설정 사항들과 친숙해 지셨을 겁니다. 이번에는 Samba 설정 파일을 가지고 더욱 쉽고 빠르게 작업할 수 있는 방법을 소개해 드리겠습니다. Samba 배포 파일에는 Samba 설정을 쉽게 관리할 수 있게 해 주는 웹 기반의 도구를 포함하고 있습니다. Mac OS X 또한 이런 도구를 포함하고 있으나, 사용하기 위해서는 먼저 그 기능을 켜주어야 합니다.

SWAT 기능 추가하기

Samba 웹 관리 도구(Samba Web Administration Tool)를 사용하기 위해서는, Mac OS X에 포함된 인터넷 수퍼데몬(Internet superdaemon) 중 하나를 설정해 주어야 합니다. Mac OS X에는 inetd와 xinetd를 포함하고 있으나 오직 xinetd만 사용되는 경향이 있습니다. 참고로, 이것은 FTP 공유 기능에 사용되는 수퍼데몬 입니다.

SWAT을 시동하기 위한 xinetd의 설정은 몇 가지 간단한 단계가 필요합니다. 우선 /etc/services 파일이 SWAT 접근 포트를 포함하고 있는 지를 알아봐야 합니다. 확인을 위해서 다음과 같은 명령을 터미널에 입력합니다: cat /etc/services | grep swat. 이 명령은 901/tcp 포트를 사용하는 swat 서비스가 실행 중 임을 보여줄 것 입니다. 만약 이런 결과를 얻을 수 없다면, 루트 권한을 가지고 pico를 사용해서 /etc/services에 추가 등록을 해 주어야 합니다. 위의 정보(swat 901/tcp #swat)를 항목에 추가 등록하고 변경사항을 저장하십시오.

이제 여러분의 컴퓨터는 데몬의 TCP 정보를 얻을 수 있게 설정되었고, /etc/xinetd.d 폴더에 있는 swat이라는 이름의 파일을 열어서 다음과 같이 수정하십시오:

service swat
{
    port        = 901
    socket_type    = stream
    wait        = no
    only_from    = localhost
    user        = root
    server        = /usr/sbin/swat
    log_on_failure    += USERID
    groups        = yes
    disable        = no
}

xinetd 설정과 관련한 정보는 xinetd.conf를 위한 설명문(터미널에서 man xinetd.conf라고 입력)을 참고하시기 바랍니다. 상황에 따라 변경되어야 할 설정으로는 "only_from" 등록 사항일 겁니다. 위의 예에서는, 단지 서버가 실행되는 컴퓨터 만이 접근이 허용됩니다. 이곳에 IP 주소 혹은 네트워크 주소를 입력해서 접근의 범위를 더 넓힐 수도 있습니다. 일단 등록 사항을 저장하셨으면, 컴퓨터를 재시동 하십시오. (터미널을 실행시키고 sudo killall -HUP xinetd라고 입력하셔도 됩니다.)

SWAT 사용하기

http://www.macdevcenter.com/mac/2003/03/18/graphics/fig6.jpg

일단, swat을 사용하기 위한 xinetd 설정을 마치셨으면, 웹 브라우져를 열고 주소 http://127.0.0.1:901/ 을 입력하십시오. 사용자 이름과 암호를 물어오게 되면, root 사용자의 이름과 암호를 입력하시면 됩니다. (참고로, Mac OS X에서는 기본적으로 root 사용자가 비활성화 되어 있습니다. 터미널에서 sudo passwd root라고 입력하면 다시 활성화 됩니다.) 그러면 위의 그림처럼 SWAT 초기 화면을 보실 수 있습니다. 여기에는 몇 가지 종류의 사용 가능한 도구 항목들이 있습니다. Home 항목에는 Samba 관련 문서들을 볼 수가 있으며, Globals 항목에서는 smb.conf 파일의 [global] 항목에 해당하는 여러 지시자들을 보실 수 있습니다. 더욱이, SWAT에서는 smb.conf 파일의 여러 항목들을 쉽게 직접 수정, 저장하실 수 있습니다.

대부분의 항목들은 이름으로 그 기능을 짐작하실 수 있겠습니다만, 맨 윗 부분에 변경사항들을 저장하기 위한 Commit Changes 버튼이 보이고 몇 몇 항목에서는 Advanced 버튼을 눌러서 고급 Samba 지시자들을 추가로 보실 수 있습니다. Satatus 항목에는 smdb 그리고 nmbd 데몬을 시작, 재시동, 그리고 멈추게 하는 버튼들이 있습니다. 한 가지 알아두셔야 할 것은 SWAT을 사용해서 smb.conf 파일을 수정하셨거나, 혹은 직접 편집을 하셨을 경우에는 데몬을 다시 시동한 후에야 효과가 제대로 적용된다는 것 입니다. 데몬의 조정 버튼들 아래에는, 현재 접속 실행중인 네트워크 목록과 각각의 접속을 차단하는 버튼들이 있습니다.

마지막 두 개의 SWAT 항목들은 Mac OS X에서는 많이 사용되지는 않는 것들입니다. View 항목에서는 smb.conf 파일의 내용을 보실 수 있으며 SWAT에 의한 변경 사항들을 직접 확인하실 수도 있습니다. Password 항목은 가장 최근의 Windows 버전에서 요구하는 암호화된 사용자 이름과 암호를 생성할 수 있게 합니다. 이것은 시스템 환경설정에서 Windows 공유기능을 사용하면 필요한 정보를 자동으로 생성하기 때문에 여기서 사용할 필요는 없습니다.

보시다시피, SWAT은 Samba 데몬을 관리하거나 Samba 설정 작업에 아주 유용합니다. 또한 xinetd 설정 파일을 수정하면 웹 브라우저를 통해 원격에서 SWAT에 접근할 수도 있습니다. SWAT의 여러 항목들은 smb.conf 파일을 더욱 쉽게 관리할 수 있게 해주며, 여기서 더 많은 관련 용법들을 함께 배울 수도 있습니다. 일단 smb.conf 항목들과 친숙해지면, 직접 손으로 필요한 설정들을 수정할 수도 있겠지만, 급한대로 SWAT 또한 언제든 용이하게 접근할 수 있는 편한 방법이 될 수도 있답니다.

맺음말

이제, 여러분은 Samba의 설정과 많이 친숙해 지셨을 것이고, Apple에서 제공하는 GUI 도구들 보다도 더욱 향상된 공유 기능들을 사용하실 수 있을 겁니다. SWAT 인터페이스를 사용하면 환경에 적합한 설정 사항들을 오류 없이 관리하는데 도움이 될 것이며, 수정 결과를 바로 확인하기 위해서 쉽게 Samba를 다시 시동시킬 수도 있습니다. 결론적으로, Apple은 Windows 공유에 있어서는 가장 훌륭한 Unix 도구를 Mac OS X에 포함시켰으며 또한, 여러가지 환경에 적합한 설정을 구현하는 데 필요한 모든 도구들을 제공하고 있습니다. Samba는 Mac이 Windows 네트워크 환경에 접근할 시에는 중계자로서 아주 귀중한 도움이 될 수 있을 것이며, 옆의 Windows 사용자는 아무런 차이점을 눈치챌 수도 없을 겁니다.

-- 원문의 글이 씌여진 지 조금 오래 되었고 또한 설명도 10.2 Jaguar 기준이지만 적용은 10.3 Panther 에서도 거이 비슷하게 하실 수가 있습니다. 그리고 참고로, 이 글에서 소개된 Samba의 여러 공유 관련 설정은 무료로 배포되고 있는 SharePoints로도 많은 부분 쉽게 설정/관리하실 수 있을 겁니다.

+ = ²

2

댓글: Samba에 관해서 - Mac에서 Windows 자원 공유하기

Panther로 넘어오면서 SWAT으로의 접근 인증 방식에 알 수 없는 어떤 문제가 있는 지, root로도 로그인 할 수가 없나봅니다.

임시 해결책으로, 인증없이 SWAT에 접근할 수 있게 하는 방법은 다음과 같습니다.

/etc/xinetd.d/swat에 있는 SWAT 설정파일에 다음과 같은 설정을 추가합니다:

server_args = -a

그리고, sudo killall -HUP xinetd 명령으로 xinetd를 다시 켜면, 인증 없이 SWAT에 접근할 수 있게 됩니다. 물론 보안상 문제가 생길 수도 있지만, only_from = localhost 설정이 되어 있기 때문에, localhost에서만 접근이 가능하게 됩니다.

+ = ²

3

댓글: Samba에 관해서 - Mac에서 Windows 자원 공유하기

How to Set Up an SMB Server in OS X and Windows 8

+ = ²