삼바 세팅 및 사용법

2010.05.12 07:40

조인상 조회 수:25115

원문 : http://www.ischo.net -- 조인상 // 시스템 엔지니어

Writer : http://www.ischo.net -- ischo // System Engineer in Replubic Of Korea

+++++++++++++++++++++++++++++++++++++++++++++++++++++++

 

본문 : http://www.ischo.net -- 조인상 //시스템 엔지니어

+++++++++++++++++++++++++++++++++++++++++++++++++++++++


삼바(SAMBA) 서버란?

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

2] 삼바의 기능
  ① 리눅스 파티션과 윈도우와의 공유
  ② 윈도우 파티션과 리눅스와의 공유
  ③ 리눅스의 프린터와 윈도우와의 공유
  ④ 윈도우의 프린터와 리눅스와의 공유

3]. 삼바(SAMBA)의 설치
공식 홈페이지
http://www.samba.org
한국 미러 사이트 주소 :http://kr.samba.org/samba/samba.html
ftp 사이트 : ftp://ftp.samba.org

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

(2) 소스로 설치하기
가) 만약 기존에 삼바가 설치되어 있으면 제거한다.
나) cd /usr/local/src 명령을 내려 이동한다.
다) 삼바의 공식사이트인 http://www.samba.org/에서 소스파일(samba-3.0.11.tar.gz)를 다운받는다.
라) # tar zxvf samba-3.0.11.tar.gz -C /src_tmp/
마) #cd /src_tmp/samba-3.0.11/
바) #cd source
사) #./configure --prefix=/usr/local/samba
아) #make && make install
자) #cp /src_tmp/samba-3.0.11/examples/smb.conf.default /etc/samba/smb.conf
차) #cp /src_tmp/samba-3.0.11/packaging/RedHat/smb.init /usr/sbin/samba
    #cp /src_tmp/samba-3.0.11/packaging/RedHat/smb.init /etc/init.d/smb
    #chmod 755 /usr/sbin/samba
    #chmod 755 /etc/init.d/smb
타) 데몬실행파일 PATH가 설정된 경로로 복사한다. 보통 소스로 설치하면 데몬을 실행하는 파일인smbd와 nmbd가 /usr/local/samba/sbin디렉토리에 있다. 이 경로는 현재
PATH설정이 안 되어있으므로 PATH를 설정하거나 /usr/sbin디렉토리에 복사한다. 또는 심볼릭 링크를 처리해 주면 된다.
예)
# cp smbd nmbd /usr/sbin
또는
#ln -s /usr/local/samba/sbin/smbd /usr/sbin/smbd
#ln -s /usr/local/samba/sbin/nmbd /usr/sbin/nmbd


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

(2) 환경파일: smb.conf

가) 개요: smb.conf는 삼바의 환경설정파일로 파일안의 구성은 win.ini와 비슷하다. 크게 Global Setting과 Share Denition으로 나누고 다시 각 내용은 [] 기호를 이용하여 섹션
(Section)으로 구분한다.

나) 역할 : 삼바를 제어하는 환경파일이다. 이 파일에서 외부와 공유시킬 시스템 자원과 어떠한 제약을 할 것인지를 지정한다.

다) 위치: 보통 /etc디렉토리에 위치하나 배포판에 따라 /etc/samba디렉토리에 위치할 수도 있다.
라) 파일내부의 유형
ㄱ. #으로 시작하는 행: 이 행은 주석처리되어 무시된다.
ㄴ. ;으로 시작하는 행: 이 행들도 주석행으로 간주되어 무시된다. 보통 이런 행은 설정행
이 작동하지 않도록 하는데 사용된다. ;대신에 #을 사용해도 된다. 이 두               
가지 유형의 주석이 사용되는 이유는 #은 유닉스에서 사용하는 주석이고.  ;는 윈도우에서 사용하는 주석이라 두 가지 모두 사용한다.
ㄷ. [ ]을 사용하는 행: 섹션을 정의한다. 하나의 섹션이 정의된 후 그 다음 섹션이 정의될 때  까지의 행들은 해당 섹션에 속한다.
ㄹ. name = value 행: 사용하는 옵션과 해당값을 설정하는 행들이다.

라) 기본적인 섹션
    ㄱ. [global]: 삼바서버의 전체적인 환경설정을 담당하는 섹션
    ㄴ. [homes]: 사용자들이 자신의 홈디렉토리로 접근할 때의 권한을 설정하는 섹션
    ㄷ. [printers]: 프린터관련 권한을 설정하는 섹션

(3) 실행파일
가) /usr/bin/smbclient
ㄱ. 설명: 유닉스를 위한 삼바클라이언트 명령어로 윈도우의 서버로 접근하기 위해 사용한다.
ㄴ. 사용법
    smbclient [option] [접속하고자할 호스트명]
ㄷ. option
      -L: 접속하고자할 호스트명을 입력한다.
      -U: 접속할 때의 사용자명을 입력한다.
ㄹ. 사용예
root]# smbclient -L cjhost -U administrator
  => cjhost라는 호스트에 administrator라는 권한으로 접속한다.
root]# smbclient -L cjhost -U administrator%1234
  => cjhost라는 호스트에 administrator라는 권한으로 접속하는데 패스워드는 1234이다.
root]# smbcleint \\\\cjhost\work -U administrator
          => cjhost라는 호스트의 work라는 디렉토리를 administrator권한으로 접속한다.
나) /usr/bin/smbmount
ㄱ. 설명: 공유된 윈도우폴더를 유닉스에서 마운트할 때 사용하는 명령이다.
ㄴ. 사용법
    smbmount 윈도우호스트의_공유폴더 마운트할_디렉토리명 [-o option]
ㄷ. option: -o를 기본적으로 적어야 하고 key=value형태로 적는다.
      username: 사용자의 권한을 적는다.
ㄹ. 사용예
root]# smbmnt //cjhost/work /mnt/win -o username=administrator
        => cjhost의 work라는 공유폴더를 /mnt/win이라는 디렉토리로 마운트한다. 권한자          administrator이다.
다) /usr/bin/smbprint: 삼바 호스트의 프린터에 프린트를 하기 위한 스크립트
라) /usr/bin/smbprint.sysv: smbprint와 같지만 System V계열 유닉스에서 사용한다.
마) /usr/bin/smbstatus: 현재의 삼바 연결상태를 보여준다.
바) /usr/bin/smbrun: 삼바 호스트의 응용프로그램 실행을 용이하게 하는 스크립트이다.
  사) /usr/bin/testparm
  ㄱ. 설명: 삼바의 환경설정파일인 smb.conf파일의 설정이 제대로 되었는지 확인하는 명령이다.
  ㄴ. 사용법
    testparm [환경설정파일경로] [IP주소]
  ㄷ. 사용예
  a. root]# testparm
    => 현재 서버에서 /etc/samba/smb.conf파일의 설정을 확인한다.
  b. root]# testparm /etc/samba/smb.conf 192.168.1.3
    => 192.168.1.3의 IP주소를 갖는 삼바서버의 /etc/samba/smb.conf파일의 설정을 확
        인한다.
  아) 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 \*
          => 브로드캐스트 영역에 있는 모든 이름을 조회한다.

5] 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네트워크)
      에서 접속이 가능하다.
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 네트워크에 속한 모든 호스
트들이 삼바 서버에 접속할 수 있다.
hosts allow = 192.168.1.0/255.255.255.0
  => 192.168.1.0 네트워크에 속한 모든 호스트들의 접속을 허용한다.
hosts allow = cjchang, cjbangpae
  => cjchang과 cjbangpae라는 호스트들만 삼바 서버 접속을 허용한다.
(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 =
  => 보안옵션에서 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\n *ReType*new*UNIX*password(생
                      략)
  => 클라이언트 호스트에서 사용자의 패스워드를 변경할 수 있도록 해주는 옵션이다. 단, 이  경우에는 encrypt password, smb passwd file 두 옵션을 반드시 사용해야 한다.
(16) username map = /etc/samba/smbusers
    => 리눅스 사용자 이름과 삼바 사용자 이름이 서로 다를 경우 서로 매핑시키기 위한
      사용한다.
(17)  include = /etc/local/samba/lib/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데몬은 윈도우 머신에 대해서 선거권을 상실하므로 로컬마스터 브라우저가 되질 못한다.
(23) domain master = yes
  => 이 옵션은 삼바가 도메인 마스터 브라우저가 되도록 해준다. 이것은 삼바와 서브넷간의 브라우저 리스트를 모집할 수 있게 해준다. 만일 NT도메인 컨트롤러를 가지고 있
다면 이 기능을 사용해서는 안된다.
(24) preferred master = yes
  => 삼바구동시 로컬 마스터 선거를 강요하여 선거에서 이길 수 있게 보다 많은 가능성을 부여해주는 옵션이다. 이 옵션은 domain master = yes옵션과 같이 사용하여 nmbd
데몬에 의해 도메인 마스터가 될 수 있도록 해준다.
(25)  domain controller =
  => 이 옵션은 호환성 문제로 현재는 사용하는 않는다.
(26)  domain logons = yes
  => 삼바서버가 WORKGROUP에 윈도우98 도메인 로그온 역할을 할 것인지의 여부를 지
      정한다.
(27) logon script = %m.bat
    logon script = %U.bat
  => 사용자가 성공적으로 로그인을 하였을 때 다운로드하여 작동할 수 있도록 배치파일(*.bat) 또는 NT명령파일(.cmd)을 지시해 주는 옵션이다. 배치파일은 마지막 줄에 cr/if
가 들어있어야 하므로 도스편집기에서 만드는 것을 권장한다. 내용은 사용자가 임의대로 지정할 수 있다.

예) 보통 모든 클라이언트 머신들이 서버와 똑같은 시간에 시간을 맞추도록 할 수 있다.
            NET TIME file://SERVER/ /SET /YES
(28)  logon path = file://%LProfiles%U/
  => 윈도우98 및 NT에서 user.dat과 같은 로우밍 프로파일(roaming profile)을 어디에 지정할 것인가를 지정해 주는 옵션이다. %L은 서버의 NetBIOS이름으로 대치되고, %U는
사용자 이름으로 대치된다. 이 옵션을 사용할 때 [Profile]공유 항목에서 주석을 풀어 주어야 한다.
(29)  wins support = yes
  => 삼바서버에서 nmbd데몬이 wins서버의 역할을 할 수 있는지 여부를 지정한다. 만일 이 옵션을 선택하기 위해서는 반드시 다중 서브넷 네트워크를 가지고 있어야 하며,
wins서버로 될  특정 nmbd데몬이 있어야 한다.
(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) 사용자정의 섹션

예) [pong]
  comment = shared-files in pong directory        // 간단한 설명이다.
  path = /home/pong/pds                      // 공유디렉토리의 경로를 지정한다.
  read only =no    // 공유디렉토리를 읽기만 가능하게 할지를 지정한다.
  writable = yes  // write ok = yes와 같은 옵션으로 쓰기가 가능하다.
  valid user = pong 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 : 쓰기가 가능한 특정 사용자를 지정

6]. 삼바를 이용하여 공유하기
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]# 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로 서버 체크하기
  /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기준)
ㄱ. 전체컴퓨터이름과 작업 그룹명 확인
    바탕화면의 [내컴퓨터]를 오른쪽버튼클릭한뒤 [네트워크식별]항목을 보고 확인한다.
      예) 전체컴퓨터이름: netmgt
          작업그룹: net_운영
ㄴ. 공유할 폴더선택 및 공유설정
ㄷ. 바탕화면의 [네트워크환경]의 등록정보에서 'Microsoft네트워크 파일 및 프린터공유'가 있는지 확인한다.

(2) 리눅스에서 윈도우 접근
가): smbclient명령의 이용
ㄱ. smbclient명령을 이용하여 정보확인하기
etc]# smbclient -L netmgt -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:
        => 패스워드를 입력하면 정보를 보여준다.
ㄴ. 접근하여 읽거나 쓰기작업하기
/etc]# smbclient \\\\netmgt\\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:
        => 패스워드를 입력하면 정보를 보여준다.
ㄴ. 접근하여 읽거나 쓰기작업하기
/etc]# smbclient \\\\netmgt\\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=[net_운영] OS=[Windows 5.0] Server=[Windows 2000 LAN Manager]
smb: \>
  => 패스워드를 정확히 입력하면 위와 같이 프롬프트가 나타난다. ?를 입력하면 기본적으로 용할 수 있는 명령어의 리스트가 나타난다.

3) 리눅스에서 윈도우접근(2)
smbmount명령의 이용- mount명령어와 같은 형식으로 윈도우 공유 폴더와 그 폴더를 리눅스에서 마운트할 디렉토리가 필요하다.
ㄱ. 마운트한다.
/etc]# smbmount //netmgt/work /mnt/win -o username=administrator
      Password:=> 패스워드를 입력하면 해당디렉토리로 마운트된다. /mnt/win이라는 디렉토리는 생성되어 있어야 하면 -o는 사용자이름을 지정하기 위한 옵션이다.
    ㄴ. cd /mnt/win으로 이동하여 읽거나 쓰기를 한다.

7]. 삼바 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/smbadduser : 삼바사용자들의 패스워드를 등록하는 명령이다.
(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 pong // pong이라는 계정을 추가하였
              다. 리눅스서버의 계정으로 한다.

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


[공유 폴더 정보 알아 내기]
# smbclient -L MFP-00H12625
Password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 2.2.1a]

        Sharename      Type      Comment
        ---------      ----      -------
        FILE_SHARE      Disk      For all users loggin in
        print$          Disk
        IPC$            IPC      IPC Service (SMB Server)
        ADMIN$          Disk      IPC Service (SMB Server)
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 2.2.1a]

        Server              Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

# smbclient -L MFP-00H12625 -l 192.168.10.201
                      컴퓨터 이름
Password:

        Sharename      Type      Comment
        ---------      ----      -------
        FILE_SHARE      Disk      For all users loggin in
        print$          Disk
        IPC$            IPC      IPC Service (SMB Server)
        ADMIN$          Disk      IPC Service (SMB Server)

        Server              Comment
        ---------            -------

        Workgroup            Master
        ---------            -------

[공유 폴더 접근하기]
#smbclient //컴퓨터 이름/공유 이름

외부 네트워크에 있는 컴퓨터 일 경우
#smbclient //컴퓨터 이름/공유 이름 -l  ip주소

# smbclient //MFP-00H12625/print$
Password:
Domain=[WORKGROUP] OS=[Unix] Server=[Samba 2.2.1a]
smb: \> exit
#

[공유 폴더를 리눅스 디렉토리 처럼 사용하기]
# smbmount //컴퓨터 이름/공유 이름  마운트할 디렉토리
예)
# smbmount //MFP-00H12625/print$  /mnt
Password:
# cd /mnt
# ls
W32X86  WIN40
#

mount -t smbfs  //컴퓨터 이름/공유 이름  마운트할 디렉토리
예)
#mount -t smbfs //MFP-00H12625/print$  /mnt
예)
# mount -t smbfs //MFP-00H12625/print$  /mnt
Password:
# cd /mnt
# ls
W32X86  WIN40
# df -h
Filesystem            Size  Used Avail Use% Mounted on
/dev/hdb1            6.8G  3.2G  3.3G  50% /
none                  110M    0  110M  0% /dev/shm
/dev/sda1            992M  679M  314M  69% /media/usbdisk
#


참고
삼바실행
#/etc/init.d/smb start[restart]

방화벽 설정
#vi /etc/sysconfig/iptables
#-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137:139 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 137:139 -j ACCEPT

방화벽을 수정한 후에는 반드시 /etc/init.d/iptables restart




실습해 보세요

1) 윈도에서 리눅스 삼바 서버에 접속 시 인증단계 없게 설정하시오.

[Global]
security = share로
guest account = pcguest라 설정되어 있는 부분을 반드시 guest account = nobody로 설정

[home] 항목을 다음과 같이 설정합니다.

[homes]
comment = Home
browseable = no
read only= no
guest ok = no
create mode = 0750


삼바 데몬을 실행한다

2) 윈도에서 리눅스 삼바 서버에 접속 시 인증단계 있게 설정하시오
[CDROM] 항목을 설정합니다.

[CDROM]
comment = Samba CDROM
path = /mnt/cdrom
browseable = yes
public = yes


[pcj] 항목을 설정합니다.
comment = pcj's dir
path = /home/pcj
browseable = yes
read only = no
writable = yes
public = no
create mask = 0750

디렉토리가 보이나 pcj 디렉토리에 접근할려면 인증이 일어난다.

사용자 인증은 리눅스 사용자와 윈도우 사용자와 일치하도록 해 주어야 합니다.
윈도우에서 네트워크 로그인을 할 때 사용자가 pcj라고 한다면 리눅스에서 다음과
같이 삼바 사용자를 추가해 줍니다.

]# smbadduser pcj:pcj
Adding: pcj to /etc/smbpasswd
Adding: {pcj = pcj} to /etc/smbusers
----------------------------------------------------------
ENTER password for pcj
New SMB password:
Retype SMB password:

삼바를 다시 실행하고 윈도우에서 삼바에 접속하면 설정전과 마찬가지로 인증 실패가 나올 것입니다. 왜냐하면 인증에 관련된 부분들을 설정해 주지 않았기 때문입니다.
그러면 인증 설정하는 방법은 [global] 항목을 다음과 수정해 주면 됩니다.

[global]
security = user

여러분들은 share로 설정되어 있는데 이를 user로 바꿔 주어야 합니다.
그리고 다음 부분들을 주석해지 하거나 삽입해 줍니다.

encrypt passwords = yes
smb passwd file = /etc/smbpasswd
username map = /etc/smbusers

[pcj] 항목에는 이 디렉토리에 접근가능한 사용자들을 추가해 줍니다.

valid users= pcj

삼바 서버를 다시 실행한 후에 접속해 보기 바랍니다. 패스워드를 입력하면 pcj 디렉토리에 있는 내용들을 볼 수 있을 것입니다.

여기까지 완료된 분들은 삼바가 정상적으로 작동하는 것입니다.


참고하세요

[global]

workgroup = Linuxpcj
hosts allow = 192.168.10.  127.
load printers = yes
printing = bsd
guest account = nobody
log file = /var/log/samba/log.%m
max log size = 50
security = user
encrypt passwords = yes
smb passwd file = /etc/smbpasswd

username map = /etc/smbusers
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
; remote announce = 192.168.1.255 192.168.2.44
; preserve case = no
; short preserve case = no
; default case = lower
; case sensitive = no

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

[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

[CDROM]
comment = Samba CDROM
path = /mnt/cdrom
browseable = yes
public = yes

[pcj]
comment = pcj's dir
path = /home/pcj
browseable = yes
read only = no
writable = yes
public = no
create mask = 0750
valid users= pcj

출처 : http://blog.naver.com/jinslove81?Redirect=Log&logNo=60025948259


==========================

삼바에서 한글지원 코드



아래 코드를 /etc/samba/smb.conf에 삽입하고 데몬을 다시 띄우면 한글 사용할 수 있음



dos charset=cp949

unix charset=euckr
번호 제목 글쓴이 날짜 조회 수
공지 [공지] 게시자료 열람자유. 불펌금지입니다. 조인상 2010.12.07 30736
44 파이프를 이용한 tar와 gzip 동시에 처리하기 ischo 2011.05.19 12067
43 리눅스에서 2TB 이상의 파티션 만들기 ischo 2011.04.11 12244
42 bonding 네트워크 설정 ischo 2011.03.30 15588
41 텍스트파일의 내용을 순차적으로 읽어들이는 스크립트 ischo 2011.03.29 17590
40 불특정 파일리스트 FTP 전송 스크립트 file ischo 2011.02.18 14160
39 시스템 관리자를 위한 50가지 비법 조인상 2011.01.04 12197
38 Linux Performance and Tuning Guidelines - IBM file ischo 2010.11.17 9780
37 HOW TO SELinux file ischo 2010.11.17 9339
36 CentOS에 zabbix 1.8.2 install secret 조인상 2010.07.27 2
35 case로 만드는 오라클 서비스 관리 ksh 스크립트 예제 ischo 2010.06.18 13478
34 리눅스환경에서 RedOwl 정지시키기 조인상 2010.05.27 14431
33 LVM 사용하여 추가한 디스크로 볼륨 늘리기 ischo 2010.05.19 35789
32 vsftpd 포트변경 방법 조인상 2010.05.12 14854
31 파일로 스왑추가 방법 조인상 2010.05.12 11084
30 ssh 자동로그아웃 설정방법 조인상 2010.05.12 41513
29 xinetd 모드로 proftpd 변경 조인상 2010.05.12 12351
28 [펌] 리눅스에서의 시리얼통신 조인상 2010.05.12 19972
27 tar 를 이용한 테잎 백업스크립트 예 조인상 2010.05.12 10973
26 랜카드 동작속도 확인/수정 방법 조인상 2010.05.12 29466
25 sendmail 25번포트 접속이 localhost에서만 허용될때 조인상 2010.05.12 16909
서버에 요청 중입니다. 잠시만 기다려 주십시오...