상세 컨텐츠

본문 제목

SAMBA 설치

프로그래밍/시스템, 서버구축

by 라제폰 2008. 12. 30. 13:09

본문

1. 삼바???

삼바하면 여러분은 무엇을 생각하나요? 춤이름이 먼저 생각나시면 아직 리눅스 광이 되기에 조금 먼 모양입니다. 아님 네트웍이랑 인연이 먼곳에 살고 계신 사람이 든지요.

우리 대부분의 경우를 보면 컴퓨터가 여러 대 있습니다. 윈도가 깔린 컴퓨터, NT가 깔린 컴퓨터, UNIX가 깔린 컴퓨터, 그리고 리눅스가 깔린 컴퓨터가 있습니다. 저한테 지금 야한 동영상이 하나 있습니다. 물론 리눅스 박스에 있습니다. 그럼 내 앞에 앉아 있는 후배가 보여 달라고 조르고 있습니다. 어떻게 해야 할 까요? 600M가 넘는 파일을 후배 녀석이 볼수 있게 하려면... ftp로 받아 볼까요. 시간은 그렇다 치고, 후배의 컴퓨터에는 그만한 용량이 있으리라는 보장이 없죠. 어떻게 해야 될까요. 이럴때 생각나는게 리눅스와 윈도도 윈도의 공유기능 같은게 있으면 좋겠다는 생각이죠.

이게 감이 팍 오죠. 그 기능을 구현해 주는게 바로 삼바입니다. 삼바는 윈도우와 리눅스간의 파일 공유 뿐만 아니라 프린터도 공유할 수 있게 해 줍니다. 삼바를 한마디로 정의 하자면 리눅스 서버의 자원을 윈도우 클라이언트에서 사용할 수 있게 해주는 것입니다. 물론 반대의 경우도 가능합니다.

 

2. SAMBA 설치

삼바는 기본적으로 리눅스를 설치 할때 설치 할 수 있습니다. 당연히 나중에 소스나 RPM 파일로도 설치 할 수 있습니다.

2.1 기본적인 사항

몇가지 설치와 설치될 파일들에 대해 설명합니다.

  • 삼바 사이트
    • http://www.samba.org
  • SAMBA 소스
    • Source : ftp://ftp.samba.org/pub/samba
    • RedHat Packages : ftp://ftp.samba.org/pub/samba/Binary_Packages/redhat/RPMS/
    • Debian Packages : ftp://ftp.freshmeat.net/pub/debs/samba/
  • 필요한 데몬
    • smbd : SMB데몬
    • nmbd : 클라이언트를 위해 NetBios name server를 지원
  • 실행 파일
    • smbclient : 유닉스를 위한 삼바 클라이언트
    • smbprint : 삽바 호스트의 프린터에 프린트를 하기위한 스크립트
    • smbstatus : 현재의 삼바 연결 상태를 보여 준다.
    • smbrun : 삼바호스트의 응용 프로그램 실행을 쉽게 하는 스크립트

2.2 설치

RPM 설치

      rpm -Uvh samba-2.0.5a-12kr.i386.rpm 
      rpm -Uvh samba-client-2.0.5a-12kr.i386.rpm 
      rpm -Uvh samba-common-2.0.5a-12kr.i386.rpm

소스 컴파일 설치

우선 앞에서 설명한 사이트에 가서 필요한 파일을 다운 받습니다. 그리고 다음과 같은 과정을 통해 설치 합니다. 소스에 README 파일등에 설치 방업과 주의 사항이 있으므로 읽고 참고를 합니다. 물론 영어이므로 상당한 영어 실력이 아니면 읽다 지치기 쉽다. 그러나 그렇게 어려운 내용이 아니므로 참고 읽으면 거의 모든 문제를 해결 할 수 있습니다.

     $ tar xvzf samba-2.0.5a.tar.gz -c src/ 
     $ cd src/samba-2.0.5a/source 
     $ ./configure --prefix=/usr --libdir=/etc --localstatedir=/var --with-smbmount --with-automount 
     $ make 
     $ make install 

3. 삼바 서버의 실행

삼바서버를 실행하려면 데몬이 실행되고 있어야 합니다. 만약 RPM으로 설치를 했다면 setup

명령을 내린후 시스템 서비스 메뉴에서 samba를 선택하고 재부팅하면 됩니다. 아니면

/etc/rc.d/init.d/smb start하면 됩니다.

문제는 소스로 설치 했을때 인데요... 우선 아래 줄 들을 /etc/rc.d/inetd.conf에 추가를

합니다.

    # SAMBA NetBIOS services (for PC file and print sharing) 
    netbios-ssn stream tcp nowait root /usr/sbin/smbd smbd 
    netbios-ns dgram udp wait root /usr/sbin/nmbd nmbd

역시 재부팅하기 싫으면 inetd를 재실행합니다.

#kill -HUP inetd

시스템이 시작될때 자동으로 시작되게 하려면 다음 스크립트를 /etc/rc.d/init.d/smb 로

저장을 하고 실행 파일로 만들어 줍니다. 이건 SAMBA-HOWTO에 있는 내용입니다.

#!/bin/sh 
# 
# /etc/rc.d/init.d/smb - 삼바 서비스를 시작, 중지한다. 
# 
# 아래와 같이 이 화일을 심볼릭 링크를 시킨다. 
# symlinks: /etc/rc.d/rc1.d/K35smb (셧다운할 때 SMB 서비스를 죽인다.) 
# /etc/rc.d/rc3.d/S91smb (택스트 모드로 로그인할 때 
# SMB서비스를 시작한다.) 
# /etc/rc.d/rc6.d/K35smb (리부트할 때 SMB 서비스를 죽인다.) 
# 

# 함수 라이브러리 소스 
. /etc/rc.d/init.d/functions 

# 네트워크 설정 소스 
. /etc/sysconfig/network 

# 네트워크 가능상태를 점검한다 
[ ${NETWORKING} = "no" ] && exit 0 

# 서비스를 시작 또는 중지시킨다. 
case "$1" in 
  start) 
      echo -n "Starting SMB services: " 
      daemon smbd -D 
      daemon nmbd -D 
      echo 
      touch /var/lock/subsys/smb 
      ;; 

  stop) 
      echo -n "Shutting down SMB services: " 
      killproc smbd 
      killproc nmbd 
      rm -f /var/lock/subsys/smb 
      echo "" 
      ;; 
  *) 

  echo "Usage: smb {start|stop}" 

  exit 1 

esac 
 
 

4. 삼바 설정 - 기본적인 설정

다른 대부분의 프로그램이 그렇듯이 삼바 역시 /etc/smb.conf 파일에 의해 제어됩니다. 
이 설정 파일은 외부와 공유시킬 시스템 자원과 언떤 제약을 둘 것인가를 결정하고 프린터 
설정을 다룹니다. 각 영역은 global, homes, printers등으로 시작을 합니다. 
 

4.1 global

삼바가 자원들의 공유를 정의 하는데 필요한 몇몇 변수를 정의합니다. 
 

4.2 homes

사용자가 원격으로 리눅스의 홈디렉토리로 접근 하는 걸 설정합니다. 단 사용자는 자신의 
홈디렉토리만을 접금할 수 있습니다. 그리고 당연한 말이지만 리눅스에 계정이 있을대 해당하는
말입니다. 
 

4.3 printers, ljet

프린터 설정 영역입니다. 리눅스의 프린터를 윈도에 공유할 수 있습니다. 이때 리눅스의 프린트
경로를 /etc/printcap에 정의 된 스풀디렉토리와 일치 해야 합니다. 
그리고 약간의 편법인데 윈도우즈95/98에서는 되는데 NT에서 안되는 프린터가 있습니다. 
물론 리눅스에서는 되야 됩니다. 이걸 우니도 98에 연결하고, 리눅스에서 삼바로 연결합니다. 
그리고 NT에서는 리눅스 프린터를 공유합니다. 이렇게 프린트를 할 수도 있습니다. 
 

4.4 example

아래의 예에서는 사용자가 로컬 컴퓨터의 개인 홈 디렉토리 접속과 임시 디렉토리의 생성을 
허락합니다. 리눅스가 로컬 네트웍상에 있으면 사용자는 윈도 탐색기의 네트웍드라이브로 
연결해서 사용할 수 있습니다. 
 
; /etc/smb.conf 
; 
; 이 화일을 수정한 뒤에 서비스를 꼭 재실행한다. 예: 
; /etc/rc.d/init.d/smb stop 
; /etc/rc.d/init.d/smb start 

[global] 
; guest 계정을 허용하려면 아래 주석 기호를 삭제한다. 
; guest account = nobody 
log file = /var/log/samba-log.%m 
lock directory = /var/lock/samba 
; 이하는 프린트 설정 
share modes = yes 
printing = bsd 
printcap name = /etc/printcap 
load printers = yes 

[homes] 
comment = Home Directories 
browseable = no # 윈도우즈 네트워크 브라우저에서 디랙토리를 보일 것인지를 결정 
read only = no # 읽기만을 허용할 것인지 결정 
create mode = 0750 # 파일을 만들었을 때의 기본 퍼미션 

[tmp] 
comment = Temporary file space 
path = /tmp 
read only = no 
public = yes 

;이하는 프린터 설정 
[printers] 
comment = All Printers 
security = server 
path = /var/spool/lpd/lp 
browseable = no 
printable = yes 
public = yes 
writable = no 
create mode = 0700 

[ljet] 
security = server 
path = /var/spool/lpd/lp 
printer name = lp 
writable = yes 
public = yes 
printable = yes 
print command = lpr -r -h -P %p %s 

5. 리눅스 드라이브를 윈도우에 공유하기

윈도 네트웍에서 많이 하는 일 중에 하나가 하나의 공유 디렉토리를 설정하여 서로 공유하는

것입니다. 리눅스에서도 삼바를 통해 똑같은 작업을 할 수 있습니다.

[public]
comment = Public Stuff
path = /home/public
public = yes
writable = yes

# 네트워크 관리자에서 브라우징이 가능하려면 다음과 같이 넣어 준다.
# browseable = yes
# 다음은 모두에게 프린트를 허용한 것이다.
# 디렉토리를 syberlaw 그룹에 속한 사용자에게만 쓰기 권한을 주고,
# 그 외 일반 사용자에게는 읽기 권한만을 주기 위해서는 아래와 같이 한다.
# printable = no
# write list = @cyberlaw

printable = yes
 

6. 세부적인 설정

다음은 smb.conf 파일을 전체적으로 설명한 것입니다.

<참고>다음 예는 4회 리눅스 공동체 세미나 자료(B-6) 중 일부 입니다.

① [global] 부분

    [global]
    workgroup = ICM

삼바 호스트가 참여할 워크 그룹에 대한 설정이다. 기존의 사용하는 워크 그룹이 있다면 그 
그룹으로 묶어 두면 될 것이다.

    server string = cyberlaw 파일 서버

삼바 서버의 설명을 표시하는 부분이다.

    veto files = /.?*/

.로 시작하는 히든 파일을 보이지 않도록 설정한다. 자기 홈 계정에 접속하면 클라이언트에서는
별 필요 없는 히든 파일들이 보이기 때문에 상당히 사용하기가 불편하다. 이럴 때 사용하면 
좋다.

    client code page = 949

한국어를 보기 위해서는 코드 페이지를 949로 설정해 주어야 한다.

    hosts allow = 127. 210.122.59.

이 부분은 보안에 관련된 부분이다. 삼바를 아무곳에서나 접속할 수 있다면 좋지 않을 것이다. 
위의 설정은 자기 자신과 210.122.59. 대역의 C Class를 허가한 것이다. IP대신 도메인명도 
가능하다.

    load printers = yes

시스템에 부착된 프린터가 있을 경우 printcap에 정의한 프린터 목록이 자동으로 서비스 되게 
된다. 이것을 no로 했다면 일일이 설정을 다시 해주어야 한다.

    ; printcap name = /etc/printcap

기본값으로 주석처리가 되어 있는데 현재 위치가 기본값이다. 이 파일의 위치나 다른 파일로 
변경하고 싶다면 주석을 풀고 정확한 파일경로를 입력해 주면 된다.

    ; printcap name = lpstat

리눅스에서는 별 상관이 없는 옵션이다. SystemV 시스템에서는 printcap name 을 lpstat 
으로 해주면 SystemV 스풀 스템으로 부터 프린터 목록을 자동으로 얻는다.

    ; printing = bsd

시스템에 부착되어 있는 프린터가 프린팅 시스템 표준에서 벗어난 것이라면 다음 옵션의 주석을 
풀어 주어야 한다. 현재 지원하고 있는 프린트 시스템은 bsd, sysv, plp, lprng, aix, 
hpux, qnx 등이다.

    guest account = nobody

손님 사용자를 허가하는 설정이다. 주석처리를 하면 손님은 삼바를 사용할 수가 없게된다. 
nobody가 아닌 다른 유저로 설정할 경우에는 /etc/passwd 항목에 설정한 손님 사용자 계정을 
추가해야 한다. 이 계정은 일반 쉘로 로긴을 못하게 해놓는 것이 좋다.

    log file = /var/log/samba/log.%m

삼바에 접속하는 호스트 별로 개별적인 기록 파일을 만들도록 한다. "/var/log/samba/log.
접근호스트이름"과 같은 파일명을 가지게 된다.
%m 은 삼바 설정에서 사용되는 변수로 호스트명을 의미한다.

    max log size = 50

로그 파일 크기를 제한한다. 단위는 Kb이다. 너무 작아도 로긴한 흔적을 찾기 힘들지만 너무 
크게 잡아두었을 때도 괜한 공간의 낭비를 초래할 가능성이 있으므로 적절하게 유지하자.

    security = share

여기서 사용할 수 있는 옵션은 user, share, server 이 세가지이다. user 는 유닉스 
계정이름/패스워드 방식의 보안 등급이며 share는 워크그룹 포 윈도우즈(WfW)와 윈도95의 
기본 모드이다. 클라이언트들이 95,98,nt 일 경우 share로 해두도록 하자. 클라이언트를 
윈도우 95나 98을 사용한다면 필히 share로 해두어야 한다. 이 설정을 때문에 클라이언트에서 
접근을 못하는 사례를 많이 보았다. server의 경우에는 인증을 위해 NT 서버를 필요로 한다.

    ; password server = <NT 서버 이름>

security = server로 설정했을 경우에 해당 NT 서버의 이름을 적어준다.

   ; password level = 8
   ; username level = 8

패스워드와 유저이름을 대소문자 모든 조합에 대하여 8개의 문자로 이뤄진 패스워드를 
사용하도록 한다.

   null passwords = yes
   encrypt passwords = yes
   smb passwd file = /etc/smbpasswd

패스워드를 암호화 할 때 사용된다. 윈도우 98은 패스워드를 암호화해서 보내기 때문에 위와 
같이 설정해 주어야 한다.(윈도우 98의 레지스트리를 변환하여 플레인 텍스트로 암호를 변하게 
할 수도 있다. 그러나, 레지스트리 변환은 항상 위험하다.) 또 윈도우즈 NT 4.0 서비스 팩 3 
번 이상인 시스템에서도 마찬가지로 설정을 해주어야 한다. 이렇게 설정을 하고 
/etc/smbpasswd파일을 생성을 해주어야 한다.

[smbpasswd 파일 생성]

다음과 같이 생성할 수 있다.

    $ cat /etc/passwd | mksmbpasswd.sh > /etc/smbpasswd

기존 유닉스의 패스워드 파일을 삼바 패스워드 파일로 만들어준다. 쉐도우 패스워드를 사용해도 
마찬가지이다. 만약 yp(nis) 시스템을 사용한다면 다음과 같이 해주면 된다.

    $ ypcat passwd | mksmbpasswd.sh >/etc/smbpasswd
    $ ypcat passwd | mksmbpasswd.sh >/etc/smbpasswd

/etc/smbpasswd가 생성이 되었는지 확인해 보자. 현재 패스워드는 기존 계정의 패스워드를 
가지고 왔을 것이다. 이것을 변경하기 위해서는 smbpasswd id 로 가능하다.

    $ smbpasswd webadmin

    New SMB password:
    Retype new SMB password:

파일이 제대로 생성되었는지 확인해 보자.

    #
    # SMB password file.
    #
    from104:543:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U ]:LCT-00000000:
    alias:524:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U ]:LCT-00000000:
    artsilly:560:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U ]:LCT-00000000:
    redhands:505:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX:[U ]:LCT-00000000:
    webadmin:501:C13A3A0AD12D570279A61CFBC33276FB:3C65A79BFEF44A4A898C37E790D54FE5:[U ]:LCT-376FE216:홍길동,ICM, 

위와 같은 형태로 생성이 되었다면 정상적으로 된 것이다. 일부 버전의 삼바에서 
mksmbpasswd.sh가 smbpasswd파일을 정상적으로 생성하지 못하는 버그를 가지고 있으니 
설정을 제대로 했음에도 불구하고 로긴을 하지 못한다면 위 패스워드 파일의 형식을 비교해 
봐서 다르다면 수정을 하도록 한다.

    ; unix password sync = Yes
    ; passwd program = /usr/bin/passwd %u
    ; passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n
    *passwd:*all*authentication*tokens*updated*successfully*

계정의 패스워드를 바꿀 때 삼바의 패스워드도 자동으로 갱신되도록 하고 싶을 때 사용한다. 
'encrypt passwords', 'smb passwd file'과 같이 사용해야 한다!

    username map = /etc/smbusers

리눅스 사용자 이름과 SMB 사용자 이름이 달라 둘 간의 이름이 다를 때, 이를 매칭 시켜주는 
역할을 한다. 기본적으로 윈도우 클라이언트에서 지정한 이름과 리눅스 사용자 이름이 같다면 
상관이 없다. 다를 경우 이 파일이 그 사용자임을 알려준다. 형식은 다음과 같다.

    /etc/smbusers
    # Unix_name = SMB_name1 SMB_name2 ...
    root = administrator admin
    nobody = guest pcguest smbguest
    webadmin = webadmin 홍길동 Hong Gildong

webadmin이라는 계정 사용자 아이디를 webadmin, 홍길동, Hong gildong과 같은 것으로 
취급한다. 삼바 서버에 사용하는 계정이 webadmin인데 윈도우에 로긴하는 사용자명은 
홍길동이라면 위와 같은 설정을 해주면 같은 사용자로 인식하게 된다. 윈도우에 로긴하는 
사용자 명이 다를 때 사용하면 된다.

    ; include = /etc/smb.conf.%m

삼바의 설정파일을 접속하는 호스트마다 다르게 설정할 때 사용된다. 완전히 다른 설정을 해야 
한다면 옵션을 사용하면 될 것이다.

    socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

대부분의 경우 다음 옵션을 주면 성능 향상 효과를 볼 수 있습니다. 여러 가지 옵션을 사용할 
수 있으나 이 옵션이 가장 빠른 성능을 보여 주였다.

    ; interfaces = 192.168.12.2/24 192.168.13.2/24

삼바가 여러 개의 이더넷 카드를 가지고 있는 경우 해당 이더넷을 사용하도록 설정한다. 
여러 개의 네트웍 인터페이스를 가지고 있다면, 그 인터페이스들을 모두 기록해주어야 한다. 
위의 예는 삼바 서버가 192.168.12.2, 192.168.13.2 이렇게 두 개의 주소를 가지고 있고 
24 비트 즉 넷마스크 255.255.255.0 를 사용하여 192.168.12.0, 192.168.13.0 네트웍의 
호스트에 대해서 열려 있다는 것이다.

    remote browse sync = 210.122.59.255

원격 브라우즈 목록과의 동기화에 관한 설정이다. 위의 설정은 210.122.59.1-254까지의 
호스트를 동기화 한다는 설정이다.

    remote announce = 210.122.59.255

삼바 서버가 네트웍 상에서 잘 보이지 않는다면 위와 같은 설정을 해주는 것이 좋다. 
210.122.59.1-254까지의 호스트들에게  자기 자신을 알리는 역할을 한다.

    ; domain master = yes

domain master 는 삼바로 하여금 도메인 마스터 브라우저가 되도록 한다. 삼바는 
서브넷으로부터 브라우즈 목록을 모으는 작업을 하게 된다. 이미 이 기능을 담당하고 있는 
윈도우즈 NT 도메인 컨트롤러가 있다면 이것을 사용해서는 안된다.

    ; domain controller = <NT 도메인 컨트롤러 SMB 이름>

주 도메인 컨트롤러로 설정된 NT 서버가 존재할 때 사용한다.

    ; domain logons = yes

삼바가 윈도우즈95 워크스테이션에 대한 도메인 로그온 서버 역할을 하길 원하는 경우에 
사용한다. 마찬가지로 이미 NT 서버에서 그 역할을 하고 있다면 사용할 수 없다.

    ; wins support = yes
    ; wins server = w.x.y.z
    ; wins proxy = yes

윈도우즈 인터넷 네임 서비스 WINS 지원을 설정하는 부분이다. 윈도우 95나 98의 경우 외부 
네트웍에 존재할 경우 서로의 이름을 찾기 위해서는 WINS를 필요로 하는데 이것을 삼바서버에서
처리해준다. 삼바는 WINS 서버 또는 클라이언트 중 하나만 될 수 있다. 그렇기 때문에 이미 
WINS 서버가 구성이 되어 있다면 이것을 사용해서는 안된다. WINS 프록시를 설정하게 되면 
삼바로 하여금 WINS 기능을 갖추지 못한 클라이언트를 대신하여 이름에 해당하는 주소를 찾도록
도와준다. 이것을 사용하기 위해서는 당연한 말이겠지만 적어도 한 개 이상의 WINS 서버가 
있어야 한다. wins support에 Yes를 했다면, /etc/lmhosts파일에 해당 호스트들의 IP와 
도메인을 >적어주어야 한다.
형식은 다음과 같다.

    /etc/lmhosts
    # IP 주소 호스트이름
    127.0.0.1 localhost
    210.122.59.21 yomyom
    210.122.59.28 webdmin
    dns proxy = no

삼바 서버를 외부에 제공하지 않는다면 굳이 dns를 사용할 필요는 없을 것이다. 기본값으로 
사용하는 것이 바람직하다.

    preserve case = yes
    short preserve case = yes

삼바 서버에서 대소문자를 사용하기 위한 설정이다. 한글을 제대로 보기 위해서는 이 구분이 
필요하며, 각 디렉토리 공유별로 따로 설정이 가능하다.

여기 까지는 삼바의 공통된 설정 세션이었다. 다음부터 나오는 것이 공유를 위한 설정이 된다. 
사용자 홈을 공유하고 또는 특정한 작업을 위한 공유를 지정할 수도 있고, 웹 디자이너를 위해서
웹 서비스를 하고 있는 디렉을 공유해서 Ftp나 텔넷을 사용하지 않고 윈도우 클라이언트에서 
바로 작업한 내용을 저장할 수 있을 것이다.




② [homes] 부분
    [homes]
    comment = 홈 디렉토리
    browseable = no
    writable = yes

사용자 홈 계정에 대한 공유 설정이다. 리눅스 시스템의 사용자 계정과 윈도우 로그인 사용자 
계정이 일치 할 때 접근이 허용된다.
그렇지 않을 경우 위에서 설정한 smbusers 파일에서 사용자를 매칭 시켜주어야 한다.




③ [netlogon] 부분
    ; [netlogon]
    ; comment = Network Logon Service
    ; path = /home/netlogon
    ; guest ok = yes
    ; writable = no
    ; share modes = no

도메인 로그온을 위한 netlogin 공유 디렉설정이다. 물론 도메인 로그온 기능을 지원할 때만 
사용가능하다.




④ [printers] 부분
    [printers]
    comment = 모든 프린터
    path = /var/spool/samba
    browseable = no
    guest ok = yes
    writable = no
    printable = yes

BSD 스타일의 프린트 시스템(현재 대부분의 리눅스 시스템)이라면 각각의 프린터를 정의해 줄 
필요 없이 위에서 설정한 방식으로 자동으로 이루어 진다. guest ok = yes 라고 하면 
'guest account'로 지정한 사용자 여기서는 nobody 들이 프린팅을 할 수 있다. 
guest ok = yes를 public = yes로 표시할 수 있다.



⑤ [public] 부분
자 이제부터 하나 하나 공유 설정을 해보도록 하자. 먼저 모든 사용자에게 쓸 수 있는 public 
공유를 설정해 보자.

    [public]
    comment = 공용디렉토리
    path = /public
    public = yes
    only guest = yes
    writable = yes
    printable = yes

comment는 공유 디렉에 대한 설명을 줄 수가 있다. path는 공유할 디렉토리를 정의해준다. 
/public는 소유권이 nobody(위에서 설정한 guest 사용자ID)가 되어 있어야 사용자들이 쓸 수 
있다.

    $ chown nobody.nobody /public

public = yes가 되어 있기 때문에 모든 사용자에게 이 공유가 접근이 허용된다. 
writable = yes가 되어 있으므로 모든 사용자가 쓰기 권한이 있다.

다음엔 쓰기 권한은 주지 않고 사용자에게 일방적으로 제공만 하는 공유를 구성해보자. 
이런 공유는 자료실 같은 곳으로 활용하면 좋다.
자료를 등록할 수 있는 관리자만 쓰기 권한을 주고 나머지 사용자는 읽기만 가능하게 설정하는 
것이다.



⑥ [pds] 부분
    [pds]
    comment = 자료실
    path = /pds
    public = yes

아주 간단하게 설정이 된다.

위와 같은 설정이 있다면 자료실에 쓰기 권한 있는 사용자 공유를 하나 만들어야 한다.




⑦ [pdsw] 부분
    [pdsw]
    comment = 자료실쓰기
    path = /pds
    valid users = webadmin
    public = no
    writable = yes
    printable = no
    create mask = 0765

아까와 다른 것은 valid users = webadmin이 추가되었다는 것이다. 이것이 한 사용자에게만 
쓰기 사용권한을 준 것이다.



⑧ [web] 부분
이번엔 웹 디자이너들을 위해서 웹 서버 디렉을 공유 해 보도록 하자.
    [web]
    comment = Web Server
    path = /home/httpd/html
    valid users = yomyom urstory
    public = no
    writable = yes
    printable = no
    create mask = 0765

위의 설정은 웹 서버를 디자이너의 클라이언트에 열어준 것이다. 해당 디렉터리는 yomyom과 
urstory란 사용자에게 쓰기 권한이 있어야 한다. 이렇게 설정을 해놓으면 디자이너들은 자신의 
클라이언트에서 바로 웹 서버에 접근해서 파일을 수정하거나 등록할 수가 있다.

여기까지 삼바의 설정은 다 했다고 할 수 있다. 이 설정에 문제가 있는지 체크해 보고 문제가 
없다면 삼버서버를 리스타트시켜 보자.
 

7. 설정 테스트

삼바 설정을 테스트 할 수 있는 명령어가 있습니다.

$ testparm

을 입력해 보면 다음과 같은 결과를 볼 수 있습니다. 다음과 제 컴퓨터에서 실행 시킨 결과

입니다.

Load smb config files from /etc/smb.conf
Processing section "[homes]"
Processing section "[printers]"
Processing section "[tmp]"
No path in service tmp - using /tmp
Loaded services file OK.
Press enter to see a dump of your service definitions
# Global parameters
[global]
        workgroup = 지능정보시스템 연구실
        netbios name = 
        netbios aliases = 
        server string = 기열이꺼
        interfaces = 
        bind interfaces only = No
        security = USER
        encrypt passwords = No
        update encrypted = No
        allow trusted domains = Yes
        hosts equiv = 
        min passwd length = 5
        map to guest = Never
        null passwords = Yes
        password server = 
        smb passwd file = /etc/smbpasswd
        root directory = /
        passwd program = /bin/passwd
        passwd chat = *old*password* %o\n *new*password* %n\n *new*password* %n\n *changed*
        passwd chat debug = No
        username map = 
        password level = 0
        username level = 0
        unix password sync = No
        restrict anonymous = No
        use rhosts = No
        log level = 2
        syslog = 1
        syslog only = No
        log file = /var/log/samba/log.%m
        max log size = 50
        timestamp logs = Yes
        protocol = NT1
        read bmpx = No
        read raw = Yes
        write raw = Yes
        nt smb support = Yes
        nt pipe support = Yes
        nt acl support = Yes
        announce version = 4.2
        announce as = NT
        max mux = 50
        max xmit = 65535
        name resolve order = lmhosts host wins bcast
        max packet = 65535
        max ttl = 259200
        max wins ttl = 518400
        min wins ttl = 21600
        time server = No
        change notify timeout = 60
        deadtime = 0
        getwd cache = Yes
        keepalive = 300
        lpq cache time = 10
        max disk size = 0
        max open files = 10000
        read prediction = No
        read size = 16384
        shared mem size = 1048576
        socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
        stat cache size = 50
        load printers = Yes
        printcap name = /etc/printcap
        printer driver file = /etc/printers.def
        strip dot = No
        character set = 
        mangled stack = 50
        coding system = 
        client code page = 949
        stat cache = Yes
        domain groups = 
        domain admin group = 
        domain guest group = 
        domain admin users = 
        domain guest users = 
        machine password timeout = 604800
        add user script = 
        delete user script = 
        logon script = 
        logon path = \\%N\%U\profile
        logon drive = 
        logon home = \\%N\%U
        domain logons = No
        os level = 0
        lm announce = Auto
        lm interval = 60
        preferred master = No
        local master = Yes
        domain master = No
        browse list = Yes
        dns proxy = No
        wins proxy = No
        wins server = 
        wins support = No
        kernel oplocks = Yes
        ole locking compatibility = Yes
        oplock break wait time = 10
        smbrun = /usr/bin/smbrun
        config file = 
        preload = 
        lock dir = /var/lock/samba
        default service = 
        message command = 
        dfree command = 
        valid chars = 
        remote announce = 
        remote browse sync = 
        socket address = 0.0.0.0
        homedir map = 
        time offset = 0
        unix realname = No
        NIS homedir = No
        panic action = 
        comment = 
        path = 
        alternate permissions = No
        revalidate = No
        username = 
        guest account = nobody
        invalid users = 
        valid users = 
        admin users = 
        read list = 
        write list = 
        force user = 
        force group = 
        read only = Yes
        create mask = 0744
        force create mode = 00
        security mask = 037777777777
        force security mode = 037777777777
        directory mask = 0755
        force directory mode = 00
        directory security mask = 037777777777
        force directory security mode = 037777777777
        guest only = No
        guest ok = No
        only user = No
        hosts allow = 165.194.19. 127.
        hosts deny = 
        status = Yes
        max connections = 0
        min print space = 0
        strict sync = No
        sync always = No
        print ok = No
        postscript = No
        printing = bsd
        print command = lpr -r -P%p %s
        lpq command = lpq -P%p
        lprm command = lprm -P%p %j
        lppause command = 
        lpresume command = 
        queuepause command = 
        queueresume command = 
        printer name = 
        printer driver = NULL
        printer driver location = 
        default case = lower
        case sensitive = No
        preserve case = Yes
        short preserve case = Yes
        mangle case = No
        mangling char = ~
        hide dot files = Yes
        delete veto files = No
        veto files = 
        hide files = 
        veto oplock files = 
        map system = No
        map hidden = No
        map archive = Yes
        mangled names = Yes
        mangled map = 
        browseable = Yes
        blocking locks = Yes
        fake oplocks = No
        locking = Yes
        mangle locks = Yes
        oplocks = Yes
        level2 oplocks = No
        oplock contention limit = 2
        strict locking = No
        share modes = Yes
        copy = 
        include = 
        exec = 
        postexec = 
        root preexec = 
        root postexec = 
        available = Yes
        volume = 
        fstype = NTFS
        set directory = No
        wide links = Yes
        follow symlinks = Yes
        dont descend = /proc,/dev
        magic script = 
        magic output = 
        delete readonly = No
        dos filetimes = No
        dos filetime resolution = No
        fake directory create times = No

[homes]
        comment = 홈 디렉토리
        read only = No
        browseable = No

[printers]
        comment = 모든 프린터
        path = /var/spool/samba
        guest ok = Yes
        print ok = Yes
        browseable = No

[tmp]
        path = /tmp

대충 이런식으로 나온다는 것만 알아 두시면 되겠죠.

 

 

8. 삼바 관리 툴 - SWAT

위 과정은 익숙하지 않은 사람에게는 대단히 힘든 작업이 됩니다. 이걸 좀더 쉽게 하기위한

툴이 여러가지가 나와 있습니다. 그중 하나가 swat입니다. 웹 기반의 고나리 툴이죠.

이것은 /etc/inetd.conf에서 관리를 하며 901포트를 이용해 관리 합니다.

/etc/inetd.conf의 거의 마지막 부분에 보면 다음과 같은 줄이 있습니다. 아마 주석 처리가

되어 있을 텐데 주석을 제거 합니다.

swat stream tcp nowait.400 root /usr/sbin/swat swat

그 다음에는 /etc/services 파일엘 swat포트가 등록되어 있는지 확인합니다. 혹시 없다면

다음과 같이 추가 합니다.

swat 901/tcp

위와 같이 수정하고 inetd을 재 시동합니다.

웹 브라우저를 띄우고, http://localhost:901/에 접속을 합니다. 사용자 ID와 패스워드에

root와 루트의 패스워드를 써 줍니다.

그러면 다음과 같은 화면이 나옵니다.

그림 1

여기에서 설정을 하면 됩니다. 항목에 대한 설명은 위에서 설명한 것을 참고 하시면 됩니다.

그림 2 그림 3 그림 4

 

 

10. 참고1 : smb.conf (번역 : 이만용 )

다음은 이만용씨가 번역한 smb.conf 파일입니다. 특별한 설명이 없이도 주석 만으로 설정이

가능하도록 자세히 씌여 있습니다. 참고 하여 보시길 바람니다. 아마 여러분의 컴퓨터에도 이

파일이 들어 있을 가능성이 높습니다. 확인 안해 봐서 장담은 못하겠지만 말이죠...

#
# 이 파일은 삼바의 주요 설정 파일입니다.  앞으로 나오는 옵션들을 이해하기
# 위해서는 smb.conf(5) 맨 페이지를 꼼꼼히 읽어보시기 바랍니다.
# 삼바에는 방대한 양의 설정 옵션이 있지만(어떻게 보면 너무 많다고 생각하실
# 수 있습니다) 다음 예에서는 보여지지 않는 것들이 많습니다.
#
# ; (세미 콜론) 또는 # (해쉬) 로 시작하는 줄은 모두 주석이며 무시합니다.
# 다음 예에서는 주석에 대하여 # 를 사용하며 여러분이 작동시기킬 원할 지
# 모르는 옵션에 대해서는 ; 문자로 구별하여 처리하였습니다.
#
# 주의: 설정 파일을 수정하고 나서는 기본적인 문법 오류 여부를 검사하기
# 위해 "testparm" 명령을 실행해보십시오.
#
# 번역자 : 이 만 용 <geoman@nownuri.net>
#                   <kenobi@alzzalinux.com>
#                   <yong@korealinux.co.kr>
#
#
# 오역을 발견하시거나 추천할 사항이 있으시면 위 메일 주소로 연락을 주십시오.
# 그 이외의 일반적인 질문에 대해서는 답변하지 않습니다.
#
#======================= 전체 설정 ===========================================
[global]

# workgroup = NT 도메인 이름 또는 워크그룹 이름

   workgroup = RICS연구실

# 나의 정의

;  hide dot files = yes
;  veto files = /.?*/

;  netbios aliases = KLB ANNA

   dont descend = /proc,/dev
;  time server = true
;  sync always = yes

# server string 은 란 NT 설명 필드와 같은 것입니다.

   server string = 기열이꺼

# 클라이언트 코드 페이지 (한국어 = 949)

   client code page = 949

# 이 옵션은 보안과 관련하여 중요한 것입니다.  이 옵션을 통해 여러분의 근거리
# 네트웍에 있는 호스트에게만 접근을 허용할 수 있습니다.
# 다음 예는 2 개의 C 클래스 네트웍과 "loopback" 인터페이스에 대해서만
# 접근을 허용하고 있습니다.  문법 예는 smb.conf 맨페이지를 참고하시기 바랍니다.

   hosts allow = 165.194.19. 127.

# 프린터 설정을 개별적으로 하지 않고 자동으로 프린터 목록을 포함시키길
# 원한다면 다음 옵션을 사용합니다.
# printcap 에서 정의한 프린터 목록이 자동으로 등록됩니다.
# load printers = no 이면 하나하나 정해주셔야 합니다.

   load printers = yes

# printcap 파일의 위치를 새롭게 지정하고 싶을 때 사용하십시오.

;   printcap name = /etc/printcap

# SystemV 시스템에서는 printcap name 을 lpstat 으로 해주면 SystemV 스풀
# 시스템으로부터 프린터 목록을 자동으로 얻게 해줍니다.

;   printcap name = lpstat

# 여러분의 프린팅 시스템이 표준에서 벗어난 것이 아니라면 다음 옵션의 주석을
# 풀 필요가 없습니다.  현재 지원하고 있는 프린트 시스템은
# bsd, sysv, plp, lprng, aix, hpux, qnx 등입니다.
;   printing = bsd

# 손님 사용자를 허가하고 싶을 때는 다음 행의 주석을 풀어줍니다.
# nobody 가 아닌 경우에는 /etc/passwd 항목에 설정한 손님 사용자 계정을 추가
# 해야 합니다. useradd 명령으로 사용자를 만드십시오.

   guest account = nobody

# 다음은 삼바로 하여금 자신에 접속하는 호스트 별로 개별적인 기록 파일을
# 만들도록 지시합니다.
# "/var/log/samba/log.접근호스트이름"과 같은 파일명을 가집니다.
# %m 은 삼바 설정에서 사용되는 특수한 변수입니다.

   log file = /var/log/samba/log.%m

# 로그 파일 크기의 상한선을 Kb 단위로 설정합니다.

   max log size = 50

# 보안 모드입니다.  대부분의 사람들에겐 user 레벨의 보안이 맞습니다.
# 자세한 내용은 security_level.txt 문서를 참고하십시오.
# 참고로 user 는 유닉스 계정이름/패스워드 방식의 보안 등급이며
# share는 워크그룹 포 윈도우즈(WfW)와 윈도95의 기본 모드입니다.
# server의 경우에는 인증을 위해 NT 서버가 필요합니다.

   security = user

# security = server 인 경우에만 패스워드 서버를 설정합니다.

;   password server = <NT 서버 이름>

# 패스워드 레벨에서는 대소문자 모든 조합에 대하여 _n_ 개의 문자로 이뤄진
# 패스워드를 사용하도록 합니다.

;  password level = 8
;  username level = 8

# 패스워드 암호화를 사용하고 싶을 때가 있을 겁니다.  삼바 문서 중에서
# ENCRYPTION.txt, Win95.txt, WinNT.txt 를 꼭 읽어보시기 바랍니다.
# 이 문서를 착실히 읽지 않은 상태에서 다음 옵션을 설정하지 마십시오.
# 윈도우즈NT 4.0 서비스 팩 3 번 이상인 시스템에서는 패스워드 암호화가
# 필요합니다.

;  encrypt passwords = yes
;  smb passwd file = /etc/smbpasswd
   null passwords = yes

# 다음 설정은 윈도우즈에서 패스워드를 바꿀 때 리눅스 시스템의 패스워드도
# 자동으로 갱신되도록 하고 싶을 때 사용한다.
# 주의 사항 : 위에 있는 'encrypt passwords', 'smb passwd file'과 같이
#             사용해야 한다!!!
# 주의 사항2: 워크스테이션으로부터 암호화된 SMB 패스워드만 변경할 수
#             있도록 할 때에는 필요없는 사항이다.
#             유닉스 패스워드와 SMB 패스워드가 항상 동일한 상태를
#             유지하도록 할 때에만 필요하다!
;  unix password sync = Yes
;  passwd program = /usr/bin/passwd %u
;  passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*

# 유닉스 사용자 이름과 SMB 사용자 이름이 달라 둘 간의 연관 테이블을
# 필요할 때 사용합니다.

;  username map = /etc/smbusers

# 다음 옵션은 접속하는 각 머신마다 서로 다른 설정을 원할 때 사용합니다.
# 여기서 %m 은 접속하는 호스트의 NetBIOS 이름으로 대체됩니다.

;   include = /etc/smb.conf.%m

# 대부분의 경우 다음 옵션을 주면 성능 향상 효과를 볼 수 있습니다.
# 자세한 사항은 speed.txt 와 맨 페이지를 참고하십시오.

   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

# 삼바가 여러 개의 인터페이스를 사용하도록 설정합니다.
# 여러 개의 네트웍 인터페이스를 가지고 있다면 그 인터페이스들을 모두
# 나열하십시오.  자세한 사항은 맨 페이지를 참고하십시오.

# 다음 예는 삼바 서버가 192.168.12.2, 192.168.13.2 이렇게 두 개의 주소를
# 가지고 있고 24 비트 즉 넷매스크 255.255.255.0 를 사용하여
# 192.168.12.0, 192.168.13.0 네트웍의 호스트에 대해서 받아들입니다.

;   interfaces = 192.168.12.2/24 192.168.13.2/24 

# 원격 브라우즈 목록과의 동기화에 관한 설정입니다.
#  공표 요청을 하거나 또는 브라우즈 목록 동기화해 줄 대상:
#       특정 호스트 또는 전체 서브넷을 지정할 수 있습니다.
#       (아래 참고)

;   remote browse sync = 192.168.3.25 192.168.5.255

# 지역적인 서브넷에 자기 자신을 공표하도록 설정합니다.
# 윈도우즈 네트웍 환경에서 삼바 서버가 잘 보이도록 할 때 유용합니다.

;   remote announce = 192.168.1.255 192.168.2.44

# 브라우져 제어 옵션:
# 삼바가 네트웍에 대한 매스터가 되길 바라지 않으면 local master 설정을
# no 로 하십시오.  그렇지 않은 경우에는 일반적인 선거 규칙을 따릅니다.

;   local master = no

# OS 레벨은 매스터 브라우져 선거 과정에서 서버의 우선권을 결정합니다.
# 기본값이 적절합니다.  따라서 특별히 바꿀 이유가 없습니다.

;   os level = 33

# domain master 는 삼바로 하요금 도메인 매스터 브라우져가 되도록 해줍니다.
# 삼바는 서브넷들로부터 브라우즈 목록을 모으는 작업을 하게 됩니다.
# 이미 이 기능을 담당하고 있는 윈도우즈 NT 도메인 컨트롤러가 있다면 이것을
# 사용해서는 안됩니다.

;   domain master = yes 

# preferred master 옵션을 켜두면 시동할 때 지역 브라우져 선거를 하도록
# 만들고 선거에서 이길 수 있는 좀 더 높은 기회를 부여받습니다.

;   preferred master = yes

# 설치할 때 주 도메인 컨트롤러로 설정된 NT 서버가 존재할 때만 사용합니다.

;   domain controller = <NT 도메인 컨트롤러 SMB 이름>

# 삼바가 윈도우즈95 워크스테이션에 대한 도메인 로그온 서버 역할을 하길
# 원하는 경우 켜둡니다.

;   domain logons = yes

# 도메인 로그온을 선택했고 각 머신 별로 또는 각 사용자 별로 로그온 스크립트를
# 구분하여 특정 배치 파일을 작동시키길 원하는 경우 사용합니다.

;   logon script = %m.bat

# 사용자 이름에 의거하여 서로 다른 로그온 배치 파일을 실행시킬 때

;   logon script = %U.bat

# 로우빙 프로파일(roving profile)을 어디에 저장할 것인가?
#        (Win95와 WinNT에만 해당됩니다.)
#        %L 은 서버의 NetBIOS 이름으로, %U는 사용자 이름으로 대체됩니다.
#        뒤에 나오는 [Profiles] 공유에 있는 주석을 풀어주는 것을 잊지
#        않도록 하십시오.

;   logon path = \\%L\Profiles\%U

# 윈도우즈 인터넷 네임 서비스 WINS 지원 섹션:
# 주의: /etc/lmhosts를 만들어 마치 /etc/hosts와 같이 적습니다.

# 예)
# 192.168.0.1   ANNA

;   wins support = yes

# WINS 서버 - 삼바의 NMBD 로 하여금 WINS 클라이언트가 되도록 합니다.
#       주의 : 삼바는 WINS 서버 또는 클라이언트 중 하나만 될 수 있다.

;   wins server = w.x.y.z

# WINS 프록시 - 삼바로 하여금 WINS 기능을 갖추지 못한 클라이언트를 대신하여
# 이름에 해당하는 주소 찾기 질문을 대신 답하도록 합니다.
# 이를 위해서는 네트웍 상에 적어 한 개 이상의 WINS 서버가 있어야 합니다.
# 기본값은 NO 

;   wins proxy = yes

# DNS 프록시 - 삼바로 하여금 DNS nslookup 을 사용하여 NetBIOS 이름을 찾을
# 것인지 아닌지 지시합니다.
# 1.9.17 버전에서는 내부 기본값이 yes 였으나 1.9.18 버전에서는 no 로
# 변경되었습니다.

   dns proxy = no 

# 대소문자 보존이 필요할 때가 있습니다.  시스템 기본값은 NO 입니다.
# 주의: 각 공유별로 설정할 수 있습니다.
# 한글을 제대로 보기 위해서는 구별해야 합니다.

   preserve case = yes
   short preserve case = yes

# 도스 파일에 대한 기본 문자는 대문자입니다.

;  default case = lower

# 대소문자 구별은 주의를 요합니다. - 문제를 일으킬 수도 있습니다!

;  case sensitive = no

#============================ 공유 정의 ======================================
[homes]
   comment = 홈 디렉토리
   browseable = no
   writable = yes

;  create mode = 0750
;  invalid users = root

# 도메인 로그온을 위한 netlogin 디렉토리를 만들고 주석 해제합니다.
# 물론 도메인 로그온 기능을 지원할 때만 필요합니다.
; [netlogon]
;   comment = Network Logon Service
;   path = /home/netlogon
;   guest ok = yes
;   writable = no
;   share modes = no


# 특정한 로우빙 프로파일(roving profile) 공유를 제공하고자 한다면 다음의
# 주석을 풀어주십시오.
# the default is to use the user's home directory
# 기본값은 사용자의 홈 디렉토리입니다.
;[Profiles]
;    path = /home/profiles
;    browseable = no
;    guest ok = yes


# 주의: BSD 스타일의 프린트 시스템(현재 대부분의 리눅스 시스템이 그러함)
# 이라면 각각의 프린터를 정의해 줄 필요 없이 자동으로 이뤄집니다.
[printers]
   comment = 모든 프린터
   path = /var/spool/samba
   browseable = no
# guest ok = yes 라고 하면 'guest account'로 지정한 사용자들이 프린팅을
# 할 수 있습니다.  public = yes 도 같은 표현입니다.
   guest ok = yes
   writable = no
   printable = yes

# 다음은 사람들이 파일을 공유할 수 있도록 할 때 유용합니다.
# 주의: /tmp 는 시스템의 임시 작업 공간이므로 /var/tmp 와 같은 곳에
# 커다란 파티션을 마운트하고 그곳을 사용하도록 하는 것이 좋습니다.

# 지금부터는 임의로 정의 가능한 공유 설정의 예입니다.  다음 설정들을 보면서
# 여러분이 원하는 공유를 정의해보시기 바랍니다.

[tmp]
;  comment = 임시 파일 공간
;  path = /tmp
;  read only = no
;  public = yes

# 공개적으로 접근 가능한 디렉토리이지만 읽기만 가능하고 "staff" 그룹에
# 속한 사용자들만이 쓰기를 할 수 있는 설정의 예입니다.

;[public]
;   comment = Public Stuff
;   path = /home/samba
;   public = yes
;   writable = yes
;   printable = no
;   write list = @staff

# 기타 다른 예.
# 조금은 특정 용도에 맞는 상세한 설정 예입니다.

#
# fred 라는 사용자만 이용할 수 있는 개인적인 프린터 설정.
# 스풀 자료는 fred 의 홈 디렉토리에 씌여집니다.
# fred 는 지정한 스풀 디렉토리에 쓰기 권한을 가지고 있는 상태여야 합니다.

;[fredsprn]
;   comment = Fred 전용 프린터
;   valid users = fred
;   path = /homes/fred
;   printer = freds_printer
;   public = no
;   writable = no
;   printable = yes

# fread 만이 이용할 수 있는 개인적인 디렉토리 설정입니다.
# 디렉토리에 대하여 fred 의 쓰기 권한이 있는 상태여야 합니다.

;[fredsdir]
;   comment = Fred 개인 서비스
;   path = /usr/somewhere/private
;   valid users = fred
;   public = no
;   writable = yes
;   printable = no

# 접속하는 머신에 따라 서로 다른 디렉토리를 제공하는 서비스의 좋은 예입니다.
# 이렇게 함으로써 접속 머신에 따라 실제 설정 내용이 달라지는 효과를 얻을 수
# 있습니다.  사용자 이름으로 구별하려면 %u 옵션을 대신 사용하면 됩니다.
# %m 은 접속하는 머신의 이름으로 치환됩니다.

;[pchome]
;  comment = PC 디렉토리
;  path = /usr/pc/%m
;  public = no
;  writable = yes

# 모든 사용자가 읽고 쓸 수 있는 공개 접근 디렉토리의 예입니다.
# 생성되는 모든 파일은 기본 사용자의 소유가 되므로 다른 사용자가 여러분이 만든
# 파일을 지울 수 있습니다.  당연히 주어진 디렉토리에 대하여 기본 사용자가
# 쓰기 권한을 가지고 있어야 합니다.  다른 사용자를 명시하면 기본 사용자가 아닌
# 그 사용자의 소유가 됩니다.

;[public]
;   path = /usr/somewhere/else/public
;   public = yes
;   only guest = yes
;   writable = yes
;   printable = no

# 다음 항목은 두 사용자가 어떻게 한 디렉토리를 공유하여 사용하게 할 수 있는지
# 예시하고 있습니다.  이 설정이 제대로 작동하려면 디렉토리는 두 사용자에 의해
# 쓰기 가능해야 하며 스틱키(sticky) 비트를 설정하여 서로의 파일에 대하여
# 악의적인 행동을 취할 수 없도록 해줘야 합니다.  이런 방법으로 여러 사용자가
# 한 디렉토리를 안전하게 공유하도록 확장할 수 있습니다.

;[myshare]
;   comment = Mary와 Fred의 것
;   path = /usr/somewhere/shared
;   valid users = mary fred
;   public = no
;   writable = yes
;   printable = no
;   create mask = 0765

;[WWW]
;   comment = 웹 페이지 디렉토리
;   path = /www/htdocs
;   read only = no

 

 

11. 참고 2 : smb.conf(영문)

구경하시는 김에 영문도...

# This is the main Samba configuration file. You should read the
# smb.conf(5) manual page in order to understand the options listed
# here. Samba has a huge number of configurable options (perhaps too
# many!) most of which are not shown in this example
#
# Any line which starts with a ; (semi-colon) or a # (hash) 
# is a comment and is ignored. In this example we will use a #
# for commentry and a ; for parts of the config file that you
# may wish to enable
#
# NOTE: Whenever you modify this file you should run the command "testparm"
# to check that you have not many any basic syntactic errors. 
#
#======================= Global Settings =====================================
[global]

# workgroup = NT-Domain-Name or Workgroup-Name
   workgroup = MYGROUP

# server string is the equivalent of the NT Description field
   server string = Samba Server

# This option is important for security. It allows you to restrict
# connections to machines which are on your local network. The
# following example restricts access to two C class networks and
# the "loopback" interface. For more examples of the syntax see
# the smb.conf man page
;   hosts allow = 192.168.1. 192.168.2. 127.

# if you want to automatically load your printer list rather
# than setting them up individually then you'll need this
   printcap name = /etc/printcap
   load printers = yes

# It should not be necessary to spell out the print system type unless
# yours is non-standard. Currently supported print systems include:
# bsd, sysv, plp, lprng, aix, hpux, qnx
;   printing = bsd

# Uncomment this if you want a guest account, you must add this to /etc/passwd
# otherwise the user "nobody" is used
;  guest account = pcguest

# this tells Samba to use a separate log file for each machine
# that connects
   log file = /var/log/samba/log.%m

# Put a capping on the size of the log files (in Kb).
   max log size = 50

# Security mode. Most people will want user level security. See
# security_level.txt for details.
   security = user
# Use password server option only with security = server
;   password server = <NT-Server-Name>

# Password Level allows matching of _n_ characters of the password for
# all combinations of upper and lower case.
;  password level = 8
;  username level = 8

# You may wish to use password encryption. Please read
# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
# Do not enable this option unless you have read those documents
;  encrypt passwords = yes
;  smb passwd file = /etc/smbpasswd

# The following are needed to allow password changing from Windows to
# update the Linux sytsem password also.
# NOTE: Use these with 'encrypt passwords' and 'smb passwd file' above.
# NOTE2: You do NOT need these to allow workstations to change only
#        the encrypted SMB passwords. They allow the Unix password
#        to be kept in sync with the SMB password.
;  unix password sync = Yes
;  passwd program = /usr/bin/passwd %u
;  passwd chat = *New*UNIX*password* %n\n *ReType*new*UNIX*password* %n\n *passwd:*all*authentication*tokens*updated*successfully*

# Unix users can map to different SMB User names
;  username map = /etc/smbusers

# Using the following line enables you to customise your configuration
# on a per machine basis. The %m gets replaced with the netbios name
# of the machine that is connecting
;   include = /etc/smb.conf.%m

# Most people will find that this option gives better performance.
# See speed.txt and the manual pages for details
   socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

# Configure Samba to use multiple interfaces
# If you have multiple network interfaces then you must list them
# here. See the man page for details.
;   interfaces = 192.168.12.2/24 192.168.13.2/24 

# Configure remote browse list synchronisation here
#  request announcement to, or browse list sync from:
#       a specific host or from / to a whole subnet (see below)
;   remote browse sync = 192.168.3.25 192.168.5.255
# Cause this host to announce itself to local subnets here
;   remote announce = 192.168.1.255 192.168.2.44

# Browser Control Options:
# set local master to no if you don't want Samba to become a master
# browser on your network. Otherwise the normal election rules apply
;   local master = no

# OS Level determines the precedence of this server in master browser
# elections. The default value should be reasonable
;   os level = 33

# Domain Master specifies Samba to be the Domain Master Browser. This
# allows Samba to collate browse lists between subnets. Don't use this
# if you already have a Windows NT domain controller doing this job
;   domain master = yes 

# Preferred Master causes Samba to force a local browser election on startup
# and gives it a slightly higher chance of winning the election
;   preferred master = yes

# Use only if you have an NT server on your network that has been
# configured at install time to be a primary domain controller.
;   domain controller = <NT-Domain-Controller-SMBName>

# Enable this if you want Samba to be a domain logon server for 
# Windows95 workstations. 
;   domain logons = yes

# if you enable domain logons then you may want a per-machine or
# per user logon script
# run a specific logon batch file per workstation (machine)
;   logon script = %m.bat
# run a specific logon batch file per username
;   logon script = %U.bat

# Where to store roving profiles (only for Win95 and WinNT)
#        %L substitutes for this servers netbios name, %U is username
#        You must uncomment the [Profiles] share below
;   logon path = \\%L\Profiles\%U

# All NetBIOS names must be resolved to IP Addresses
# 'Name Resolve Order' allows the named resolution mechanism to be specified
# the default order is "host lmhosts wins bcast". "host" means use the unix
# system gethostbyname() function call that will use either /etc/hosts OR
# DNS or NIS depending on the settings of /etc/host.config, /etc/nsswitch.conf
# and the /etc/resolv.conf file. "host" therefore is system configuration
# dependant. This parameter is most often of use to prevent DNS lookups
# in order to resolve NetBIOS names to IP Addresses. Use with care!
# The example below excludes use of name resolution for machines that are NOT
# on the local network segment
# - OR - are not deliberately to be known via lmhosts or via WINS.
; name resolve order = wins lmhosts bcast

# Windows Internet Name Serving Support Section:
# WINS Support - Tells the NMBD component of Samba to enable it's WINS Server
;   wins support = yes

# WINS Server - Tells the NMBD components of Samba to be a WINS Client
#       Note: Samba can be either a WINS Server, or a WINS Client, but NOT both
;   wins server = w.x.y.z

# WINS Proxy - Tells Samba to answer name resolution queries on
# behalf of a non WINS capable client, for this to work there must be
# at least one  WINS Server on the network. The default is NO.
;   wins proxy = yes

# DNS Proxy - tells Samba whether or not to try to resolve NetBIOS names
# via DNS nslookups. The built-in default for versions 1.9.17 is yes,
# this has been changed in version 1.9.18 to no.
   dns proxy = no 

# Case Preservation can be handy - system default is _no_
# NOTE: These can be set on a per share basis
;  preserve case = no
;  short preserve case = no
# Default case is normally upper case for all DOS files
;  default case = lower
# Be very careful with case sensitivity - it can break things!
;  case sensitive = no

#============================ Share Definitions ==============================
[homes]
   comment = Home Directories
   browseable = no
   writable = yes

# Un-comment the following and create the netlogon directory for Domain Logons
; [netlogon]
;   comment = Network Logon Service
;   path = /home/netlogon
;   guest ok = yes
;   writable = no
;   share modes = no


# Un-comment the following to provide a specific roving profile share
# the default is to use the user's home directory
;[Profiles]
;    path = /home/profiles
;    browseable = no
;    guest ok = yes


# NOTE: If you have a BSD-style print system there is no need to 
# specifically define each individual printer
[printers]
   comment = All Printers
   path = /var/spool/samba
   browseable = no
# Set public = yes to allow user 'guest account' to print
   guest ok = no
   writable = no
   printable = yes

# This one is useful for people to share files
;[tmp]
;   comment = Temporary file space
;   path = /tmp
;   read only = no
;   public = yes

# A publicly accessible directory, but read only, except for people in
# the "staff" group
;[public]
;   comment = Public Stuff
;   path = /home/samba
;   public = yes
;   writable = yes
;   printable = no
;   write list = @staff

# Other examples. 
#
# A private printer, usable only by fred. Spool data will be placed in fred's
# home directory. Note that fred must have write access to the spool directory,
# wherever it is.
;[fredsprn]
;   comment = Fred's Printer
;   valid users = fred
;   path = /homes/fred
;   printer = freds_printer
;   public = no
;   writable = no
;   printable = yes

# A private directory, usable only by fred. Note that fred requires write
# access to the directory.
;[fredsdir]
;   comment = Fred's Service
;   path = /usr/somewhere/private
;   valid users = fred
;   public = no
;   writable = yes
;   printable = no

# a service which has a different directory for each machine that connects
# this allows you to tailor configurations to incoming machines. You could
# also use the %u option to tailor it by user name.
# The %m gets replaced with the machine name that is connecting.
;[pchome]
;  comment = PC Directories
;  path = /usr/pc/%m
;  public = no
;  writable = yes

# A publicly accessible directory, read/write to all users. Note that all files
# created in the directory by users will be owned by the default user, so
# any user with access can delete any other user's files. Obviously this
# directory must be writable by the default user. Another user could of course
# be specified, in which case all files would be owned by that user instead.
;[public]
;   path = /usr/somewhere/else/public
;   public = yes
;   only guest = yes
;   writable = yes
;   printable = no

# The following two entries demonstrate how to share a directory so that two
# users can place files there that will be owned by the specific users. In this
# setup, the directory should be writable by both users and should have the
# sticky bit set on it to prevent abuse. Obviously this could be extended to
# as many users as required.
;[myshare]
;   comment = Mary's and Fred's stuff
;   path = /usr/somewhere/shared
;   valid users = mary fred
;   public = no
;   writable = yes
;   printable = no
;   create mask = 0765

 

12. 관련 문서 및 링크

  • 삼바 홈페이지 : http://www.samba.org
  • 삼바 하우투 : http://kldp.org/HOWTO/html/SMB/SMB-HOWTO.html
  • 삼바 프린터 : http://kldp.org/KoreanDoc/SMB_Printer-KLDP
  • NT 도메인에 참여 : http://kldp.org/KoreanDoc/Samba_NT-KLDP
  • 4회 리눅스 공동체 세미나 자료 B-6 : http://seminar.klug.or.kr/pds/source/4th/html/b-6/b-6.html

 


관련글 더보기