7.4. 삼바를 이용한 윈도 스타일의 파일과 인쇄 서비스

리눅스는 SMB 서비스 (예를 들어, WfW, 윈95, NT 스타일의 네트웍 파일 & 프린터 공유) 를 삼바 패키지를 이용하여 제공한다. 이 섹션은 어떻게 공유를 설정하며 클라이언트 기계에서 어떻게 접근하여 활용할 수 있는지를 설명할 것이다.

삼바 패키지는 레드햇 배포판에 포함되어있는데 현재 설치가 되어 있는지 그리고 어떤 버전이 설치되어 있는지 알아보려면 다음과 같이 타이핑하면 된다:

rpm -q samba

만약 설치되어 있지 않다면 RPM 유틸리티를 이용하여 설치하여야 한다. 이에 대한 상세한 내용은 10.1절 을 참조하면 된다.

신경을 써주어야 할 가장 중요한 삼바 파일은:

/etc/smb.conf

공유에 대한 사항과 그 외의 설정 파라메터가 셋업되어 있는 삼바 설정 파일 (자세한 내용은 아래를 보시요)

/var/log/samba/

삼바 로그 파일이 있는 곳

/home/samba/

파일 공유가 셋업될 것으로 예상되는 디렉토리. 물론 저장하려는 파일의 양에 적합한 충분한 공간이 있는 다른 장소를 선택할 수도 있다. 개인적으로 나는 보통 /archive/ 에 큰 파티션을 마운트하고 여기를 공유 공간으로 사용한다.

``/etc/smb.conf'' 파일은 파일 & 인쇄 공유에 대한 설정 정보를 갖고 있다. 파일의 처음 몇줄은 전체 설정에 대한 명령어로서 (각 섹션별로 별도로 지정하여 무시하지 않는 한) 모든 공유에 공통적으로 적용되는 것이고 그 다음에는 공유 섹션이 나온다.

삼바 설치 프로그램에는 디폴트 smb.conf 파일이 들어 있는데 상당수의 경우에 사용자의 요구에 적절하도록 되어 있기 때문에 아주 몇 줄만 수정해주면 된다.

다음에 파일의 예를 제시하였다 (이 파일은 중요하고 재미있는 옵션을 보여주기 위하여 심하게 손을 본 것이다):

# 모든 공유에 공통인 항목 (공유별로 덮어쓰지 않는 한)
[global]
   # 자원을 소모하는 것을 막기 위하여 활동이 없으면 몇 분 후에 클라인트를
   # 끊을 것인지 지정. 대부분의 클라이언트는 자동으로 재접속을 하기 때문에
   # 이 기능을 사용하는 것이 좋다.
   dead time = 10
   # 사용자가 "루트" 로 접속하는 것을 허용하지 않음, 만약을 위해서.  :-)
   invalid users = root
   # 손님 공유 (연결하는데 패스워드가 필요없는 공유) 에 사용할 계정을
   # 지정한다. 이 사용자 이름은 /etc/passwd 파일에 있는 정상적인 사용자
   # 이름이어야 한다.
   guest account = guest
   # 로그 파일을 기록할 장소를 지정한다.  "%m" 는 
   # 로그 파일의 이름이 log.기계이름 형식을 (예. "log.twixel")
   # 사용함을 나타낸다
   log file = /usr/local/samba/logs/log.%m
   # 킬로 바이트 단위로 나타낸 로그 파일의 최대 크기
   max log size = 1000
   # 패스워드 레벨 3이란 패스워드를 입력할 때 대소문자를 구분하지 않음을
   # 나타낸다. 레벨 1이나 2보다는 덜 안전하지만 사용자 편의를 위해서는
   # 이 정도의 양보가 적당한 수준이다.
   password level = 3
   # 모든 공유가 브라우즈 리스트에 나타남을 지정.
   # (공유중에서 리스트에 나타나지 않아야 할 것은 공유별로 지정하여준다)
   browseable = yes
   # 이 기능을 사용하면 "smbstatus" 명령을 이용하여 현재
   # 사용중인 연결을 볼 수 있다.
   status = yes
   # 로그 파일에 기록되는 디버깅 정보의 레벨을 지정한다. 숫자가 클 수록
   # 더 자세한 정보를 생성한다. (대부분의 경우에 많은 정보가 유용하지는
   # 않다)
   debug level = 2
   # 이 기능은 서버가 받은 모든 윈도 스타일의 "POPUP" 메시지
   # 를 전자메일을 이용하여 포스트마스터에게 전송한다. 그리 유용하지는
   # 않지만, 어떤 것까지 할 수 있는지를 보여주는 좋은 예시이다.
   message command = /bin/mail -s 'Message from %f on %m' postmaster < %s; rm %s &
   # 이는 캐싱의 일종으로서 사용할 경우 파일 읽기의 성능을 향상시킬 수 
   # 있다.
   read prediction = true
   # 자동으로 브라우즈 리스트에 추가되어야 할 서비스의 목록을
   # 지정한다.
   auto services = cdrom
   # 프린터에 대한 정의를 담고 있는 텍스트 파일인
   # "printcap" 파일의 위치를 지정.
   printcap name = /etc/printcap
   # 만약 사용하는 경우에는 /etc/printcap 파일에 들어있는 모든 프린터가
   # 브라우즈 리스트에 들어간다.
   load printers = yes
   # 리눅스에서 프린터에 인쇄작업을 스풀시키는 인쇄 명령을 지정한다.
   print command = lpr -r -P%p %s
   # 인쇄작업 큐 정보 (프린터 상태) 를 가져오는데 사용하는 인쇄 명령을
   # 지정한다.
   lpq command = lpq -P%p
   # 원하지 않는 인쇄 작업을 큐로부터 제거하는데 사용되는 프린트 명령을
   # 지정한다.
   lprm command = lprm -P%p %j
   # 삼바가 자기 자신을 알리는 레벨을 지정한다. 네트웍에 떼거리로 붙어
   # 있는 NT 서버와 공평한 수준에서 "공간" 을 확보하도록
   # 하기 위하여 상당히 높게 하였다.  :-)
   os level = 34
# 여기는 사용자별 개인 공유영역이다.  클라이언트의 사용자 이름이 서버에
# 있는 이름과 일치한다면 (맞는 패스워드만 입력하면) 자기의 홈 디렉토리를
# 액세스할 수 있다.
[homes]
   # 브라우즈 리스트에 나타날 설명문을 지정한다
   comment = Home Directories
   # 이는 클라이언트의 사용자 이름과 공유의 사용자 이름을 짝을 맞춘다.
   # 만약 짝이 맞지 않으면, 브라우즈 리스트에 아무런 공유도 보이지 
   # 않거나 연결할 수 있도록 나타난다.
   user = %S
   # 공유에 대한 경로를 지정한다. 예를 들어, "smithj" 는
   # "/home/smithj" 로 매핑된다.
   path = /home/%S
   # 이를 사용하면 공유에 대하여 읽기/쓰기를 액세스를 허용한다.
   writeable = yes
   # "writeable" 를 그대로 뒤집은 것이다. 물론 둘다를
   # *실제로* 사용할 필요는 없다.  :-)
   read only = no
   # 이 공유를 액세스하기 위해서는 패스워드가 필요하게 하려면 이 기능을
   # no 로 두면 된다.
   public = no
   # 이 공유가 다른 사용자의 브라우즈 리스트에 나타나게 하고 싶지
   # 않음 (즉, 개인용) 을 나타낸다.
   browseable = no
# 이는 모두 사용할 수 있는 공유 프린터 "hp_laser" 에 대한 
# 내용이다. 이 프린터는 브라우즈 리스트에 나타나면 패스워드 없이 모든
# 클라이언트가 사용할 수 있다.
[hp_laser]
   # 브라우즈 리스트에 나타날 설명을 지정한다.
   comment = Main office printer (HP Laserjet 400)
   # 이 공유를 액세스할 수 있는 사용자 이름 (guest는 모든 사용자라는 뜻).
   user = guest
   # 생성되는 모든 인쇄 파일은 처음에는 /tmp 디렉토리에 만들어 진다는 
   # 것을 지정.
   path = /tmp
   # 프린트 스풀링을 제외하고는 파일을 만드는 것을 허용하지 않는다.
   writeable = no
    # 필요에 따라 퍼미션을 지정한다 -- 인쇄 작업은 루트만이 액세스 가능함.
   create mode = 0700
 
   # 이 기능을 사용하면 공유를 액세스할 때 패스워드가 필요없다.
   public = yes
   # 이 공유가 프린터 공유임을 나타내기 위하여 이를 yes 로 하여야 한다.
   printable = yes
# 씨디롬 장치에 대한 액세스를 제공하는 서비스를 정의한다.
[cdrom]
   comment = Shared CD-ROM drive on Linux
   user = guest
   path = /cdrom
   writeable = no
   read only = true
   browseable = yes
   public = yes
   guest ok = yes

작은 정보: 팁: 최근 버전의 삼바, 2.0 이상, 에서는 삼바 설정 과정을 훨씬 편리하게 할 수 있는 ``swat'' 라는 이름의 매우 쓸만한 웹 기반의 설정 유틸리티가 제공된다. 이 유틸리티는 서버의 TCP 901 번 포트에서 접속을 기다린다. 따라서 이 유틸리티를 사용하려면 웹 브라우저에서 다음과 같이 연결하면 된다:

나의도메인.이름:901

(물론, SWAT 유틸리티를 사용하려면 아파치와 같은 웹 서버가 실행중이어야 한다. 자세한 내용은 7.1절 을 참조하시요.)

최근 버전의 삼바에는 2.0 이전과 비교하여 상당히 많은 기능을 추가되었다. 따라서 시간을 투자하여 삼바 패키지를 업그레이드할 만한 가치가 있다.

클라이언트는 공유에 연결하기 위하여 TCP/IP 네트웍 스택이 실행중이어야만 한다. 게다가, 브라우징 기능이 동작하려면, TCP/IP 프로토콜은 NETBEUI 와 엮여있어야 한다. 윈도 95 에서는 제어판에 있는 "네트워크" 아이콘을 이용하여 설정할 수 있다.

클라이언트가 제대로 설정되었다면, "네트워크 환경" 에 (윈도 95 나 NT 를 사용하고 있지않다면 그에 해당하는 브라우징 기능에) 서버의 공유가 나타나야 한다. 그러고 나면 네트워크 환경에서 네트웍 드라이브를 매핑하거나 공유의 절대 경로 (예."\\mail\cdrom") 를 타이핑하여 이용할 수 있다. 만약 공유 서비스가 패스워드의 입력을 필요로 하도록 되어 있다면, 입력하라는 프롬프트가 나타날 것이다.

삼바에 대한 더 자세한 정보는 http://samba.anu.edu.au/samba/ 에 있는 삼바 홈 페이지에서 얻을 수 있다.