[IT 알아보기]/IT 소식

[그린IDC] 삼바(SAMBA)란?

이호스트ICT 2011. 5. 17. 12:11

1. 삼바(SAMBA)란?

(1) 개요: 마이크로소프트와 인텔은 윈도우시스템이 다른 시스템의 디스크나 프린터같은 자원을
         공유할 수 있도록 Server Message Block(SMB)이라는 프로토콜을 개발하였는데, 삼바란
         이 SMB를 이용하여 리눅스와 윈도우와의 자료 공유 및 하드웨어를 공유할 수 있도록
         해준다. 현재 마이크로소프트에서는 SMB라는 이름보다는 좀 더 범위가 큰 CIFS(Common
         Internet File System)라는 프로토콜로 부른다. 이 프로토콜은 SMB 프로토콜에 LanMana
         ger와 NetBIOS 프로토콜까지 포함한다.

(2) 삼바의 기능
  1) 리눅스파티션과 윈도우와의 공유
  2) 윈도우파티션과 리눅스와의 공유
  3) 리눅스의 프린터와 윈도우와의 공유
  4) 윈도우의 프린터와 리눅스와의 공유

2. 삼바(SAMBA)의 설치

(1) rpm패키지로 설치하기
  1) 설치의 확인
    rpm -qi samba 나 rpm -qa |grep samba 명령등을 내려 삼바가 설치되어 있는지 확인한다.
  2) 설치하기
  ㄱ. 레드햇 리눅스계열을 설치했을 경우에는 CD-ROM드라이브를 마운트한다.
  ㄴ. /RedHat/RPMS디렉토리로 이동한다.
  ㄷ. rpm -Uvh samba* 명령을 내려 설치한다.

(2) 소스로 설치하기
  1) 만약 기존에 삼바가 설치되어 있으면 제거한다.
  2) cd /usr/local/src 명령을 내려 이동한다.
  3) 삼바의 공식사이트인 http://www.samba.org에서 소스파일(samba-2.2.5.tar.gz)를 다운받는다.
  4) tar zxvf samba-2.2.5.tar.gz 명령을 내린다.
  5) cd samba-2.2.5
  6) cd source
  7) ./configure --prefix=/usr/local/samba
  8) make
  9) make install
  10) 삼바소스디렉토리에서 examples라는 디렉토리의 smb.conf.default파일을 /usr/local/samba/
     lib/smb.conf파일로 복사한다.
  11) 삼바를 실행하는 스크립트파일을 /etc/rc.d/init.d/디렉토리에 복사한다. 삼바소스 디렉토리
     에서 packging/RedHat 디렉토리에 보면 삼바구동스크립트파일인 smb.init이 있는데 이 파일을
     samba라는 이름으로 복사한다.
      예) cp smb.init /etc/rc.d/init.d/samba
  12) 데몬실행파일 PATH가 설정된 경로로 복사한다. 보통 소스로 설치하면 데몬을 실행하는 파일인
     smbd와 nmbd가 /usr/local/samba/sbin디렉토리에 있다. 이 경로는 현재 PATH설정이 안 되어있
     으므로 PATH를 설정하거나 /usr/sbin디렉토리에 복사한다.
      예) cp smbd nmbd /usr/sbin

2. 삼바의 구성

(1) 데몬: 삼바를 이용하기 위해서는 두 개의 데몬이 필요하다.
  1) 기본데몬
  ㄱ. smbd: SMB데몬 - 파일과 프린터공유, 사용자의 권한부여 및 확인
  ㄴ. nmbd: 클라이언트를 위해 NetBIOS nameserver를 지원하고 browsing(서비스통지)한다.
  2) 스크립트 데몬파일: 실제 데몬을 구동하고 정지시키는 데몬으로 스타트시키면 smbd와 nmbd
                       데몬을 띄운다.
  /etc/rc.d/init.d/smb start|stop

(2) 환경파일: smb.conf
  1) 개요: smb.conf는 삼바의 환경설정파일로 파일안의 구성은 win.ini와 비슷하다. 크게 Global
          Setting과 Share Denition으로 나누고 다시 각 내용은 [] 기호를 이용하여 섹션(Section)
          으로 구분한다.
  2) 역할: 삼바를 제어하는 환경파일이다. 이 파일에서 외부와 공유시킬 시스템 자원과 어떠한
          제약을 할 것인지를 지정한다.
  3) 위치: 보통 /etc디렉토리에 위치하나 배포판에 따라 /etc/samba디렉토리에 위치할 수도 있다.
  4) 파일내부의 유형
  ㄱ. #으로 시작하는 행: 이 행은 주석처리되어 무시된다.
  ㄴ. ;으로 시작하는 행: 이 행들도 주석행으로 간주되어 무시된다. 보통 이런 행은 설정행이
                         작동하지 않도록 하는데 사용된다. ;대신에 #을 사용해도 된다. 이 두
                         가지 유형의 주석이 사용되는 이유는 #은 유닉스에서 사용하는 주석이고.
                         ;는 윈도우에서 사용하는 주석이라 두 가지 모두 사용한다.
  ㄷ. [ ]을 사용하는 행: 섹션을 정의한다. 하나의 섹션이 정의된 후 그 다음 섹션이 정의될 때
                         까지의 행들은 해당 섹션에 속한다.
  ㄹ. name = value 행: 사용하는 옵션과 해당값을 설정하는 행들이다.
  5) 기본적인 섹션
  ㄱ. [global]: 삼바서버의 전체적인 환경설정을 담당하는 섹션
  ㄴ. [homes]: 사용자들이 자신의 홈디렉토리로 접근할 때의 권한을 설정하는 섹션
  ㄷ. [printers]: 프린터관련 권한을 설정하는 섹션
(3) 실행파일
  1) smbclient
  ㄱ. 설명: 유닉스를 위한 삼바클라이언트 명령어로 윈도우의 서버로 접근하기 위해 사용한다.
  ㄴ. 사용법
      smbclient [option] [접속하고자할 호스트명]
  ㄷ. option
      -L: 접속하고자할 호스트명을 입력한다.
      -U: 접속할 때의 사용자명을 입력한다.
  ㄹ. 사용예
     a. [root@www root]# smbclient -L system2 -U administrator
         => system2라는 호스트에 administrator라는 권한으로 접속한다.
     b. [root@www root]# smbclient -L system2 -U administrator%1234
         => system2라는 호스트에 administrator라는 권한으로 접속하는데 패스워드는 1234이다.
     c. [root@www root]# smbcleint \\system2work -U administrator
         => system2라는 호스트의 work라는 디렉토리를 administrator권한으로 접속한다.
  2) smbmount
  ㄱ. 설명: 공유된 윈도우폴더를 유닉스에서 마운트할 때 사용하는 명령이다.
  ㄴ. 사용법
      smbmount 윈도우호스트의_공유폴더 마운트할_디렉토리명 [-o option]
  ㄷ. option: -o를 기본적으로 적어야 하고 key=value형태로 적는다.
      username: 사용자의 권한을 적는다.
  ㄹ. 사용예
      [root@www root]# smbmount //system2/work /mnt/win -o username=administrator
       => system2의 work라는 공유폴더를 /mnt/win이라는 디렉토리로 마운트한다. 권한자는
         administrator이다.
  3) smbprint: 삼바 호스트의 프린터에 프린트를 하기 위한 스크립트
  4) smbprint.sysv: smbprint와 같지만 System V계열 유닉스에서 사용한다.
  5) smbstatus: 현재의 삼바 연결상태를 보여준다.
  6) smbrun: 삼바 호스트의 응용프로그램 실행을 용이하게 하는 스크립트이다.
  7) testparm
  ㄱ. 설명: 삼바의 환경설정파일인 smb.conf파일의 설정이 제대로 되었는지 확인하는 명령이다.
  ㄴ. 사용법
      testparm [환경설정파일경로] [IP주소]
  ㄷ. 사용예
     a. [root@www root]# testparm
         => 현재 서버에서 /etc/smb/smb.conf파일의 설정을 확인한다.
     b. [root@www root]# testparm /etc/smb/smb.conf 192.168.1.3
         => 192.168.1.3의 IP주소를 갖는 삼바서버의 /etc/smb/smb.conf파일의 설정을 확인한다.
  8) nmblookup
  ㄱ. 설명: WINS 서버에 질의할 때 사용하는 명령이다. DNS서버에 질의하는 nslookup명령과 유사
            하다.
  ㄴ. 사용법
      nmblookup option
  ㄷ. option
      -U: 서버이름을 지정한다. 보통 -R옵션과 같이 사용한다.
      -R: 조회할 이름을 지정한다.
  ㄹ. 사용예
     a. [root@www root]# nmblookup samba.org -R "IRIX#1B"
         => samba.org 라는 서버에 IRIX#1B라는 이름을 조회한다.
     b. [root@www root]# nmblookup *
         => 브로드캐스트 영역에 있는 모든 이름을 조회한다.

3. smb.conf를 이용한 세팅
(1) 전체설정(Global Setting)
  1) workgroup = MYGROUP
    => 윈도우의 작업그룹처럼 공유그룹을 지정한다.
  2) server string = Samba Server
    => 서버에 대한 설명을 부여해 준다.
  3) hosts allow = 192.168.1. 192.168.2. 127.
    => 삼바 서버에 접속을 허용할 호스트를 지정하는데 사용한다. 접속할 허용할 호스트는 아이피
      주소, 호스트명 등을 지정할 수 있으며, 네트워크/넷마스크형태로도 지정할 수 있다. 또한
      EXCEPT라는 키워드와 와일드문자도 사용가능하다. 참고로 삼바서버에 접속이 불가능하게 하
      려면 hosts deny로 설정한다.
       예) 1. hosts allow = 192.168.1. 192.168.2. 127.
             => 192.168.1.0 네트워크대역에 속한 모든 호스트들과 로컬시스템(127.0.0.0네트워크)
               에서 접속이 가능하다.
           2. hosts allow = 192.168.1. EXCEPT 192.168.1.220 192.168.1.244
             => 192.168.1.220 과 192.168.1.244를 제외한 192.168.1.0 네트워크에 속한 모든 호스
               트들이 삼바 서버에 접속할 수 있다.
           3. hosts allow = 192.168.1.0/255.255.255.0
             => 192.168.1.0 네트워크에 속한 모든 호스트들의 접속을 허용한다.
           4. hosts allow = posein, xitem
             => posein과 xitem이라는 호스트들만 삼바 서버 접속을 허용한다.
  4) printcap name = /etc/printcap
    => 서버에 의해 사용되는 printcap name을 겹쳐쓰기 하고자 할 때 그 위치를 지정한다.
  5) load printers = yes
    => 삼바 서버의 printcap에 정의된 모든 프린터 목록이 자동적으로 로딩되게 할 것인가를 지정
      하는 옵션이다. 네트워크 프린터를 삼바서버에 연결하여 사용하고자 한다면 선택해야 한다.
  6) printing = lprng
    => 프린터 시스템 종류를 지정하는 옵션으로 비표준 프린터시스템이 아니면 지정할 필요가
      없다.
  7) ;  guest account = pcguest
    => 공유 설정 섹션에서도 사용하는 항목으로, guest ok로 명시되어 있는 서비스에 접근할 유저
      를 지정해 준다. 보통 클라이언트가 손님서비스(guest service)에 접속할 수 있게 된다. 이러
      한 유저는 /etc/passwd파일안에 존재하는 계정이어야 하며, 보통 "nobody"로 설정하면 된다.
  8) log file = /var/log/samba/%m.log
    => 삼바 서버에 접속하는 호스트의 접속 로그에 대한 기록을 저장하는 파일을 지정한다.
  9) max log size = 0
    => 로그 파일의 최대 크기를 KB단위로 제한두려고 할 때 사용되는 옵션이다. 제한을 두었을
      경우에 이를 초과하게 되면 .old확장자를 가진 파일로 저장되고 새로운 파일이 생성된다.
      현재처럼 0으로 설정하면 파일의 크기에 제한을 두지 않는다.
  10) security = user
     => 보안관련 옵션으로 클라이언트가 삼바서버에 접속할 때 인증 레벨을 부여하는 옵션이다.
       보안모드에는 4가지모드가 있는데 user, share, server, domain등이다.
  * 4가지 모드
    user: 삼바 서버에 접속하는 클라이언트는 먼저 반드시 윈도우 시작시 사용자명과 패스워드로
         로그인을 한 후에 삼바 서버에 접속할 때 같은 사용자명으로 패스워드를 확인한 후에
         접속이 이루어진다.
    share: 유효한 사용자명과 패스워드로 삼바 서버에 로그인을 하지 않아도 서버에 접속할 수
          있게 하므로, 삼바 서버 인증과정을 필요로 하지 않을 때 이 레벨로 지정하면 된다. 공
          유 디렉토리 접근에 제한을 두는 경우에 사용할 수 있다.
    server: 윈도우 NT와 같은 다른 삼바 서버가 존재해야 하며, 다른 삼바 서버에 사용자명과 패스
           워드를 전달하여 올바른지를 확인한다.
    domain: 윈도우 NT서버가 있어야 가능하며, 삼바서버가 사용자명과 패스워드를 윈도우NT의 도메
           인 컨트롤러(Domain Controller)에 전달하여 유효한지 확인하는 방법이다.
  11) ;   password server = <NT-Server-Name>
     => 보안옵션에서 server나 domain값을 설정했을 경우에 윈도우 NT같은 다른 삼바서버의
       NetBIOS이름으로 지정한다.
  12) ;  password level = 8
      ;  username level = 8
      => 패스워드 레벨과 유저 레벨을 설정하는 것으로 8개 문자를 사용하도록 설정한다.
  13) encrypt passwords = yes
     => 삼바서버에 클라이언트의 접속이 이뤄지는 과정에서 인증을 위하여 암호화 패스워드 옵션을
       사용할 수 있다. 암호화된 패스워드를 지정하는 옵션이다.
  14) smb passwd file = /etc/samba/smbpasswd
     => 이 옵션은 encrypt passwords항목과 같이 사용되는 것으로 암호화된 삼바 사용자의 아이디
       와 패스워드가 기록되는 파일이다. 이 파일에 패스워드를 추가하는 명령은 smbpasswd이다.
  15) ;  unix password sync = Yes
      ;  passwd program = /usr/bin/passwd %u
      ;  passwd chat = *New*UNIX*password* %n *ReType*new*UNIX*password(생략)
     => 클라이언트 호스트에서 사용자의 패스워드를 변경할 수 있도록 해주는 옵션이다. 단, 이
       경우에는 encrypt password, smb passwd file 두 옵션을 반드시 사용해야 한다.
  16) ;  username map = /etc/samba/smbusers
      => 리눅스 사용자 이름과 삼바 사용자 이름이 서로 다를 경우 서로 매핑시키기 위한 사용한
        다.
  17) ;   include = /etc/samba/smb.conf.%m
     => 접속하는 각 클라이언트마다 서로 다른 설정을 사용할 수 있게 해주는 것으로 %m은 접속하
       는 NetBIOS이름으로 대치된다.
  18) socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
     => 사용자의 로컬 네트워크상에서 삼바서버가 최적의 성능을 발휘할 수 있도록 튜닝할 때 사용
       한다. IPTOS_LOWDELAY, IPTOS_THROUGHPUT 등의 옵션이 있다.
  19) ;   interfaces = 192.168.12.2/24 192.168.13.2/24
     => 삼바에 연결된 네트워크 인터페이스를 설정하는 것으로, 인터페이스는 IP/netmask조합으로
       지정할 수 있다. 즉, 위의 설명은 삼바서버가 서로 네트워크 인터페이스를 사용할 때 사용하
       는 것으로 192.168.12.2 호스트와 192.168.2.2 호스트에 연결을 허용한다는 의미이다.
  20) ;   remote browse sync = 192.168.3.25 192.168.5.255
      ;   remote announce = 192.168.1.255 192.168.2.44
     => 동기화시킬 원격 브라우저를 설정하는 부분이다.
  21) ;   local master = no
     => 이 옵션은 삼바서버가 nmbd에 의해 서브넷상에서 로컬마스터브라우저가 될 수 있도록 허용하
       는 것으로 no라고 설정하면 nmbd데몬은 서브넷상에서 로컬 마스터브라우저가 되지 않는다.
  22) ;   os level = 33
     => 삼바서버가 브라우저 선거에 있어서 자신을 알릴 수 있는 레벨을 설정하는 것으로 이 값에
       의해서 nmbd데몬이 로컬브로드캐스트지역에서 WORKGROUP에 대해 로컬마스터 브라우저가 될
       수 있는지 결정된다. 이 값을 0으로 설정하면, nmbd데몬은 윈도우 머신에 대해서 선거권을
       상실하므로 로컬마스터 브라우저가 되질 못한다. (관련문서는 BROWSING.txt)
  23) ;   domain master = yes
     => 이 옵션은 삼바가 도메인 마스터 브라우저가 되도록 해준다. 이것은 삼바와 서브넷간의
       브라우저 리스트를 모집할 수 있게 해준다. 만일 NT도메인 컨트롤러를 가지고 있다면 이
       기능을 사용해서는 안된다.
  24) ;   preferred master = yes
     => 삼바구동시 로컬 마스터 선거를 강요하여 선거에서 이길 수 있게 보다 많은 가능성을 부여
       해주는 옵션이다. 이 옵션은 domain master = yes옵션과 같이 사용하여 nmbd데몬에 의해
       도메인 마스터가 될 수 있도록 해준다.
  25) ;   domain controller = <NT-Domain-Controller-SMBName>

     => 이 옵션은 호환성 문제로 현재는 사용하는 않는다.
  26) ;   domain logons = yes
     => 삼바서버가 WORKGROUP에 윈도우98 도메인 로그온 역할을 할 것인지의 여부를 지정한다.
  27) ;   logon script = %m.bat
      ;   logon script = %U.bat
     => 사용자가 성공적으로 로그인을 하였을 때 다운로드하여 작동할 수 있도록 배치파일(*.bat)
       또는 NT명령파일(.cmd)을 지시해 주는 옵션이다. 배치파일은 마지막 줄에 cr/if가 들어있어
       야 하므로 도스편집기에서 만드는 것을 권장한다. 내용은 사용자가 임의대로 지정할 수 있
       다.
        예) 보통 모든 클라이언트 머신들이 서버와 똑같은 시간에 시간을 맞추도록 할 수 있다.
           NET TIME \SERVER /SET /YES
  28) ;   logon path = \%LProfiles\%U
     => 윈도우98 및 NT에서 user.dat과 같은 로우밍 프로파일(roaming profile)을 어디에 지정할
       것인가를 지정해 주는 옵션이다. %L은 서버의 NetBIOS이름으로 대치되고, %U는 사용자 이름
       으로 대치된다. 이 옵션을 사용할 때 [Profile]공유 항목에서 주석을 풀어 주어야 한다.
  29) ;   wins support = yes
     => 삼바서버에서 nmbd데몬이 wins서버의 역할을 할 수 있는지 여부를 지정한다. 만일 이 옵션
       을 선택하기 위해서는 반드시 다중 서브넷 네트워크를 가지고 있어야 하며, wins서버로 될
       특정 nmbd데몬이 있어야 한다.

  (참고) WINS(Windows Internet Naming Service)
         마이크로소프트 윈도우NT 서버의 일부인 WINS는 각 구성 변경에 수반되는 사용자 또는
        관리자가 없는 IP주소들과 컴퓨터 이름 및 위치들과의 결합을 관리한다. WINS는 컴퓨터
        이름과 IP주소를 서로 매칭시켜 데이터를 테이블내에 자동으로 만드는데, 이 이름들은
        다른 사람의 컴퓨터 이름과 중복되지 않도록 고유한 이름으로 견지한다. 컴퓨터가 다른
        장소로 옮겨지면, IP주소의 서브넷 부분이 변경될 수 있다. WINS를 사용하면 새로운 서
        브넷 정보가 WINS테이블내에서 자동으로 갱신된다. WINS는 어떤 컴퓨터가 네트워크에 처음
        정의될 때 IP주소를 협상하는 NT서버의 DHCP를 보충하여 완전하게 한다.
         예를 들면 같은 네트워크에서 사람이 많아지면 네트워크에 부하도 많이 발생한다. 이 경우
        WINS를 사용하면 컴퓨터이름과 IP목록을 관리해주기 때문에 동보통신에 의한 부담을 줄일
        수 있다.

  30) ;   wins server = w.x.y.z
     => wins 서버가 있을 경우 wins server IP값을 지정하는 옵션이다.
  31) ;   wins proxy = yes
     => nmbd에 의해서 wins기능을 갖추지 못한 호스트들을 대신하여 브로드캐스트 이름 질의를
       대신 응답해 줄 수 있도록 지정해 주는 옵션이다. 이것을 사용하려면 네트워크상에 최소
       하나 이상의 WINS서버가 있어야 한다.
  32) dns proxy = no
     => nmbd데몬이 wins server역할을 하고, 등록되지 않는 NetBIOS이름을 찾아줄 때 DNS server
       를 사용하여 NetBIOS이름을 찾아줄 것인지의 여부를 지정하는 옵션이다.
  33) ;  case sensitive = no
      => 대소문자를 보존할 필요가 있을 때 설정하는 부분이다.

(2) 공유 정의(Share Definitions) : 삼바 서버에 접속할 수 있는 사용자의 홈디렉토리를 설정해
                                  주는 부분이다.
  1) [homes]
      comment = Home Directories
      browseable = no
      writable = yes
       => 사용자의 홈 디렉토리 서비스 사용을 위한 기본적인 설정을 해주는 항목이다. comment는
         간단한 설명문, browseable은 공유이름을 브라우저에 표시할 수 있게 하는 기능, writable
         은 쓰기허용을 설정한다.
  2) [netlogon]
       comment = Network Logon Service
       path = /home/netlogon
       guest ok = yes
       writable = no
       share modes = no
        => 도메인 로그온을 사용하고자 할 때 사용한다. 일반적으로 사용하지 않는다.
  3) [Profiles]
      path = /home/profiles
      browseable = no
      guest ok = yes
       => 특정한 프로파일을 지정할 때 사용한다. 일반적으로 사용하지 않는다.
  4) [printers]
      comment = All Printers
      path = /var/spool/samba
      browseable = no
      guest ok = no
      writable = no
      printable = yes
       => 삼바프린터를 네트워크 공유프린터로 사용하고자 할 경우에 설정한다. BSD계열의 프린터
         시스템을 사용하면 일일이 프린터를 정의하지 않아도 된다.
  5) [tmp]
      comment = Temporary file space
      path = /tmp
      read only = no
      public = yes
       => 여러 사람들이 파일을 공유할 목적으로 유효하게 사용할 수 있다. 현재 기본값인 /tmp
         는 임시작업공간 디렉토리이므로 /var/tmp처럼 다른 디렉토리를 만들어서 사용하도록
         한다.
  6) [public]
      comment = Public Stuff
      path = /home/samba
      public = yes
      read only = yes
      write list = @staff
       => 공개적으로 접근이 가능한 디렉토리이지만 staff그룹에 있는 사용자들을 제외한 사용자
         들은 오직 읽기만 사용가능하다.
  7) 사용자정의 섹션
    예) [posein]
          comment = shared-files in posein directory         // 간단한 설명이다.
          path = /home/posein/pds                      // 공유디렉토리의 경로를 지정한다.
          read only =no    // 공유디렉토리를 읽기만 가능하게 할지를 지정한다.
          writable = yes  // write ok = yes와 같은 옵션으로 쓰기가 가능하다.
          valid user = posein xitem prehee  // 서비스디렉토리에 사용가능한 사용자를 말하며,
                                              만약 이 옵션이 생략되면 모든 사용자가 접근할
                                              수 있다.
          public = no      // guest ok와 같은 옵션으로 no로 설정하면 다른 사용자들은 이용할
                             수 없고 개인사용자만 사용할 수 있게 된다.
          browseable = no  // 이용 가능한 공유리스트를 보여줄 것인가를 지정하는 것으로 no로
                             지정하면 리스트를 보여주지 않는다.
          printable = no   // 서비스로 지정된 디렉토리에 스풀파일을 지정할 것인가를 지정하
                             는 것으로, 프린터 공유 디렉토리가 아니므로 대부분 no로 설정한다.
          create mask =0765 // create mode와 같은 옵션으로 파일을 생성할 때 사용되는 모드를
                              나타낸다.
       (참고) samba 에서 공유디렉토리를 지정할 때 사용하는 옵션 설명
             - read only : 공유 디렉토리를 읽기만 가능하게 할 것인지를 결정
             - writable, write ok : 공유 디렉토리를 쓰기 가능하게 할 것인지를 결정
             - valid users : 공유 디렉토리에 로그인할 수 있는 사용자를 결정
             - public, guest ok : 다른 사용자들이 이용하게 할 지를 결정
             - browseable : 공유 디렉토리의 리스트를 보여줄 지를 결정
             - printable : 공유 디렉토리에 스풀 파일을 지정할 것인지를 결정
             - path : 공유할 디렉토리의 절대경로를 지정
             - comment : 간단한 설명을 적음
             - create mask, create mode : 파일을 생성할 때의 모드를 결정. umask값형태로 지정.
             - write list : 쓰기가 가능한 특정 사용자를 지정

4. 삼바를 이용하여 공유하기
(1) 리눅스 드라이브를 윈도우와 공유하기
  1) /etc/samba/smb.conf파일의 편집
  #======================= Global Settings =====================================
  [global]
    workgroup = WORKGROUP   // 윈도우의 워크그룹과 동일한 그룹을 지정한다.
    server string = FILE SERVER  // 리눅스서버에 대한 설명을 적는다.
    hosts allow = 192.168.0. 203.247.51. 127.  // 접근허용할 네트워크 범위를 지정한다.
    security = share
  #============================ Share Definitions ==============================
  [public]
  comment = samba            // 간단한 설명
  path = /home/posein/samba   // 공유디렉토리 지정
  public = yes
  writable = yes
  printable = no
    (참고) public으로 공유하고 writable = yes이면 공유한 해당디렉토리에 다른 사용자계층의
          퍼미션에서 쓰기권한을 부여해야 한다.
  2) 삼바 데몬을 다시 가동한다.
  /etc/rc.d/init.d/smb restart
  3) 삼바 서버에서 테스트하기
  [root@mybestone /root]# testparm
  Load smb config files from /etc/samba/smb.conf
  Processing section "[homes]"
  Processing section "[printers]"
  Processing section "[public]"
  Loaded services file OK.
  Press enter to see a dump of your service definitions
  4) /etc/hostname이라는 파일을 생성하여 윈도우에서 확인할 이름을 지정한다.
    예) linux
  5) 윈도우에서 확인하기
    네트워크환경 => linux 라는 컴퓨터이름이 생성된다. linux를 더블클릭해서 확인해보면 public
  이라는 공유폴더가 보인다.
  6) smbstatus로 서버 체크하기
  [root@mybestone /etc]# smbstatus

  Samba version 2.2.0
  Service      uid      gid      pid     machine
  ----------------------------------------------
  public       nobody   nobody   14568   posein_note (192.168.0.3) Fri Jul 26 01:18:18 2002

  No locked files
(2) 리눅스 클라이언트에서 윈도우 공유 폴더 접근하기
  1) 윈도우 PC설정 (윈도우 2000기준)
  ㄱ. 전체컴퓨터이름과 작업 그룹명 확인
      바탕화면의 [내컴퓨터]를 오른쪽버튼클릭한뒤 [네트워크식별]항목을 보고 확인한다.
       예) 전체컴퓨터이름: posein_note
           작업그룹: 신경회로망
  ㄴ. 공유할 폴더선택 및 공유설정
  ㄷ. 바탕화면의 [네트워크환경]의 등록정보에서 "Microsoft네트워크 파일 및 프린터공유"가
      있는지 확인한다.
  2) 리눅스에서 윈도우 접근(1): smbclient명령의 이용
  ㄱ. smbclient명령을 이용하여 정보확인하기
      [root@mybestone /etc]# smbclient -L posein_note -U administrator
      added interface ip=203.247.40.252 bcast=203.247.40.255 nmask=255.255.255.0
      added interface ip=192.168.1.1 bcast=192.168.1.255 nmask=255.255.255.0
      Got a positive name query response from 203.247.40.244 ( 203.247.40.244 )
      Password:
       => 패스워드를 입력하면 정보를 보여준다.
  ㄴ. 접근하여 읽거나 쓰기작업하기
      [root@mybestone /etc]# smbclient \\posein_note\work -U administrator
      added interface ip=203.247.40.252 bcast=203.247.40.255 nmask=255.255.255.0
      added interface ip=192.168.1.1 bcast=192.168.1.255 nmask=255.255.255.0
      Got a positive name query response from 203.247.40.244 ( 203.247.40.244 )
      Password:
      Domain=[신경회로망] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
      smb: >
       => 패스워드를 정확히 입력하면 위와 같이 프롬프트가 나타난다. ?를 입력하면 기본적으로
         사용할 수 있는 명령어의 리스트가 나타난다.
  3) 리눅스에서 윈도우접근(2): smbmount명령의 이용- mount명령어와 같은 형식으로 윈도우 공유
                                                   폴더와 그 폴더를 리눅스에서 마운트할 디렉
                                                   토리가 필요하다.
  ㄱ. 마운트한다.
      [root@mybestone /etc]# smbmount //posein_note/work /mnt/win -o username=administrator
      Password:
       => 패스워드를 입력하면 해당디렉토리로 마운트된다. /mnt/win이라는 디렉토리는 생성되어
         있어야 하면 -o는 사용자이름을 지정하기 위한 옵션이다.
  ㄴ. cd /mnt/win으로 이동하여 읽거나 쓰기를 한다.

5. 삼바 User레벨로 사용하기
(1) User레벨관련 주요 파일 분석
  1) /etc/samba/smb.conf
  ㄱ. 설명: 삼바의 환경설정파일로 크게 두 개의 섹션으로 구분되어 있다.
  ㄴ. Section
     a. [global] : 삼바와 관련된 전체적인 환경설정을 하는 부분으로
     b. [share definition] : 공유영역으로 여러 섹션이 존재한다. 주요 섹션은 다음과 같다.
       - [homes] : home디렉토리와 관련된 설정을 할 수 있다.
       - [printers] : 프린터와 관련된 설정을 할 수 있다.
       - [tmp] : /tmp 디렉토리와 관련된 설정을 할 수 있다.
  ㄷ. magic cookies: 삼바의 smb.conf에서도 아래의 magic cookies를 사용할 수 있다.
      %u : 현재 사용중인 유저
      %g : 현재 사용중인 유저 그룹
      %m : 클라이언트의 NetBIOS이름
      %v : 버전
      %h : 호스트이름
      %p : 서버의 홈디렉토리 경로
      %d : 서버의 프로세서ID
      %S : 현재 사용되는 서비스 이름
      %P : 현재 사용되는 서비스의 루트 디렉토리
      %U : 세션의 유저
      %G : 셔션의 유저그룹
      %H : %u로 주어진 유저의 홈디렉토리
      %L : 서버의 NetBIOS이름
      %M : 클라이언트 머신 이름
      %N : NIS 홈디렉토리 서버의 이름
      %I : 클라이언트 머신 IP
      %T : 날짜와 시간
  2) /etc/samba/smbusers : 삼바사용자들을 설정하는 파일이다.
  3) /usr/bin/smaadduser : 삼바사용자들의 패스워드를 등록하는 명령이다.
  4) /var/log/samba : 삼바의 로그가 기록되는 파일이다.
  5) /var/spool/samba : 프린터의 스풀디렉토리이다.
(2)  삼바서버의 인증레벨
  1) 설명: smb.conf파일의 [global]섹션의 security항목에서 설정한다.
  2) security 레벨의 설정
  ㄱ. share : 인증과정을 거치지 않고 접근이 가능하다. smb.conf파일에서 hosts allow항목에 지정
              된 호스트라면 비밀번호없이 삼바를 사용할 수 있다.
  ㄴ. user
     a. 설명: 사용자의 인증을 거치는 레벨이다.
     b. 윈도우 사용자의 접속법 : 삼바서버에 설정한 계정과 패스워드로 접속한다.
     c. smb.conf파일에서의 설정 : [global] 섹션의 encrypt passwords = yes, smb passwd file =
                                 /etc/smbpasswd 설정을 추가로 해야 한다.
     d. 삼바의 사용계정: /etc/passwd에 있는 계정이어야 한다.
     e. 삼바사용자의 지정: smbpasswd 명령을 이용하여 사용자 계정과 비밀번호를 설정한다.
  ㄷ. server
     a. 설명: 사용자 정보를 담고 있는 윈도우서버와 같이 다른 운영체제가 삼바서버에 대한 사용
             자와 패스워드를 인증을 전달하는 방법이다.
     b. smb.conf파일에서의 설정: password server 지시자에 인증할 서버의 IP를 적는다.
  ㄹ. domain : 삼바서버가 윈도우 서버의 도메인 컨트롤러에 사용자명과 패스워드를 전달하여
               인증하는 방법으로 server레벨과 비슷하다.
(3) 삼바관련 명령어
  1) smbpasswd
  ㄱ. 설명: 삼바서버의 사용자 계정을 만들거나 패스워드를 설정하는 명령이다.
  ㄴ. 사용법
      smbpasswd option user_id
  ㄷ. option
      -a : 사용자계정을 추가시에 사용한다.
      -x : 사용자계정을 삭제한다.
  2) smbadduser
  ㄱ. 설명: 삼바서버의 사용자계정을 만드는 명령이다.
  ㄴ. 사용법
      smbadduser 계정명:계정명
       => 콜론(:)을 기준으로 앞의 계정명은 Unix에서 사용할 이름이고 뒤의 계정명은 윈도우에서
         사용하는 계정명이다.
  ㄷ. 사용예
      smbadduser posein:posein
       => posein이라는 사용자를 추가한다.
(4) user레벨로 삼바서버 사용하기
  1) 리눅스서버에서 설정하기
    ㄱ. smb.conf파일 설정
       security = user                // user레벨로 변경

       encrypt passwords = yes       // 활성화시킨다.
       smb passwd file = /etc/samba/smbpasswd   // 활성화시킨다.
    ㄴ. 사용자추가하기
       [root@www samba]# smbpasswd -a posein  // posein이라는 계정을 추가하였다. 리눅스서버의
                                                계정으로 한다.

       New SMB password:                            // 패스워드를 설정한다. 반드시 리눅스서버의
                                                    //패스워드와 같지 않아도 된다.
       Retype new SMB password:
       unable to open passdb database.
       Added user posein.