노무현 대통령 배너


2006. 4. 6. 15:31

[본문스크랩] [펌-와우리눅스] 삼바서버 사용법 기초

- smbpasswd -a rekcuf

- smbclient 또는 smbmount //LSI/Linux_server

초보자를 위한 삼바 서버 엿보기
출 처 : 와우리눅스(주)
분 류 : 네트워킹 > 삼바
조회수 : 36913
작성자 : 초보자코너작성일 : 2001-06-30 11:30:01

삼바는 리눅스와 윈도우간에 파일과 프린터 공유를 할수 있게 해주는 프로그램입니다. 웹서버나 인터넷 공유 서버로만 사용하던 리눅스를 파일서버로도 사용할 수 있습니다. 이글에서는 삼바를 통하여 서로 다른 운영체제간에 기본 파일공유에 대해서 알아보기로 합니다.

삼바 시작하기

삼바(Samba)란?

삼바란 리눅스에서 동작하면서 윈도우의 랜 매니저 기능을 흉내내는 소프트웨어입니다. 윈도우쪽에서 리눅스 서버의 하드디스크와 네트웍 프린터 자원을 공유하도록 환경을 설정할 수 있고, 삼바를 통해 리눅스 쪽에서 윈도우쪽 파일시스템과 프린터로도 접근할 수 있습니다. 이러한 것은 모두 삼바서버가 SMB(Server Message Block)/CIFS(Common Internet File System) 프로토콜을 흉내냄으로써 가능해집니다.

SMB 란?

SMB(Server Message Block)는 마이크로소프트사와 인텔이 윈도우 시스템이 다른 시스템의 디스크나 프린터와 같은 자원을 공유할 있도록하기 위해 개발되었습니다. SMB는 OS/2, NT, WIN9x를 사용하는 컴퓨터끼리 파일 공유등의 서비스를 구현하는데 사용되는 프로토콜입니다. TCP/IP 기반하의 NetBIOS 프로토콜을 이용하기 때문에 이 프로토콜은 NFS, NIS, lpd 와 같은 유닉스의 분산인증구조와 유사합니다. 따라서, 윈도우 중심의 네트워크 환경에서는 필수적이라고 하겠습니다.

CIFS 란?

CIFS(Common Internet File System) 는 인터넷을 위한 SMB 파일 공유 프로토콜의 확장된 버전입니다. SMB 프로토콜 위에 DNS(Domain Name Service)를 이용한 확장성, 느린 전화 접속 네트워킹을 위한 최적화, 유니코드를 따르는 파일 이름 지원을 덧붙여, 윈도우와 유닉스 환경을 동시에 지원하는 인터넷의 표준 파일 규약입니다. 한 가지 중요한 사실은 이전의 폐쇄적인 SMB 프로토콜과는 달리 CIFS 규약 정의에 여러 유닉스 업체들이 참여했다는 점입니다. 삼바도 버전이 올라감에 따라(삼바 2.2 계열) CIFS 규약을 준수하고 있습니다.

삼바를 쓰는 이유는?

네트워크 환경에 윈도우 NT 서버가 있음에도 불구하고 삼바를 사용하는 이유는 무엇일까요? 단지 공짜라는 이유로 이를 설명하기에는 무리가 따릅니다. 다음과 같은 이유를 생각해 보도록 하겠습니다.

  • 삼바는 기존 네트워크 환경에 물려있는 이종 운영체제를 하나로 통합해서 관리하며 사용할 수 있도록 허용한다. 윈도우 NT, 윈도우 98만이 사무실이나 연구실에서 사용하는 운영체제의 전부가 아니다. 매킨토시, 윈도우 98, 윈도우 ME, 솔라리스, 리눅스, FreeBSD, HP-UX와 같은 운영체제가 혼재할 경우 삼바가 유일한 대안이다.
  • 삼바는 파일서버 뿐 아니라 인쇄 서버로서 중요한 구실을 맡는다. 오라일리에서 나온 "Network Printing"을 살펴보면 유닉스(리눅스) 서버에 프린터를 물려 놓고, 중앙 집중식으로 관리하는 방법을 소개하는데, 여기서 윈도우 기계와 통신을 삼바로 처리한다.
  • 삼바는 주 도메인 관리기로 동작할 수 있다. 삼바를 사용하면 윈도우 98/ME나 윈도우 NT 워크스테이션 그룹을 묶기 위해 더 이상 윈도우 NT 서버가 필요 없다.
  • 삼바를 사용하면 여러 윈도우 NT 서버를 두는 대신 강력한 유닉스 기계 하나로 대체할 수 있다.

삼바 기능이 그야말로 화려하지 않습니까?

삼바로 무엇을 할 수 있을까?

이제 삼바를 사용하여 어떤 일을 할 수 있는지 몇 가지 시나리오를 제시하겠습니다. 여러분 상황에 맞다면 바로 삼바를 사용해 보기 바랍니다.

  • 유닉스 머신에 남아도는 하드디스크를 윈도우 사용자들에게 제공하고 싶을 경우, 삼바를 설치하고 각 개인별로 공간을 제공한다.
  • 유닉스 머신에서 윈도우 머신에 물린 프린터로 인쇄를 하고 싶을 경우, smbclient 패키지를 사용한다.
  • 윈도우 머신에서 유닉스 머신에 달린 백업 장치에 접근하고 싶을 경우, 삼바를 사용한다.

물론, 이상에서 소개한 기능이 삼바의 전부가 아닙니다.
단지 여러분의 상상력이 삼바 사용을 제한할 따름입니다.

삼바의 설치

삼바는 리눅스 설치시 대부분 자동으로 설치가 됩니다.
삼바가 시스템에 설치되어 있는지 아래와 같이 확인합니다.

    # rpm -qa | grep samba

설치되어 있다면,

이렇게 나옵니다.

설치가 되어 있지 않았다면, 배포판 CD에서 위에 나온 samba 패키지를 설치합니다.

* 윈도 NT 나 2000 과 같은 네트워크에 있다면 2.2.x 버전대의 삼바를 사용하기 바랍니다.

삼바의 설정

삼버 서버를 구동하기 위해서는 먼저 네트워크 환경에 맞게 설정을 해야 합니다.
삼바의 설정파일은 /etc/samba 디렉토리 아래에 있으며, smb.conf 가 설정파일입니다.

삼바의 설정은 매우 복잡하며 환경에 따라서 다양한 설정 방법등이 존재하므로 처음부터 모든 것을 설정하기 보다는 가장 기본적인 것부터 설정해 나가는 것이 효율적입니다. 먼저, 필자가 작성한 가장 쉬운 smb.conf 를 보며 설명하겠습니다.

먼저, 기본 smb.conf 를 백업한 후 작성 합니다.
기본 smb.conf 는 나중에 좋은 참고서가 됩니다. 이글을 보신 후 꼭 살펴보시기 바랍니다.

# cd /etc/samba

# mv smb.conf smb.conf.orig

# vi smb.conf

[필자의 smb.conf]

[global]
workgroup = 컴퓨터수리정보
server string = 주니의 리눅스 삼바 서버
log file = /var/log/samba/%m.log
security = SHARE
encrypt passwords = yes|
smb passwd file = /etc/samba/smbpasswd
client code page = 949
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192

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

[public]
comment = 공개 자료 창고
path = /home/public
public = yes
writable = yes

위 설정 파일에 대해 설명을 하도록 하겠습니다.

[global]
workgroup = 컴퓨터수리정보
# 윈도우에서 작업 그룹과 같습니다. 공유하고자 하는 작업 그룹 이름을 적습니다.

server string = 주니의 리눅스 삼바 서버
# 컴퓨터 설명 필드와 같습니다.

log file = /var/log/samba/%m.log
# 삼바에 접속하는 호스트 별로 개별적인 로그 파일을 만들도록 합니다.

security = SHAREㅤ
# 사용자 인증을 거치지 않고 공유 자원(폴더)에 접근할 수 있게 합니다.

encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
# 윈도우의 기본 패드워드 모드는 encrypted 모드입니다. 삼바의 암호 모드가 윈도우와 호환되도록 설정합니다.

client code page = 949
# 한국어를 보기 위해 코드 페이지를 949로 설정한다.

socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
# 대부분의 경우 위 옵션을 주면 성능 향샹 효과를 볼 수 있습니다.

[homes]

# 공유 자원을 찾을 수 없을 때 사용자 데이터베이스를 찾아서 해당 사용자에 대한 공유 자원을 만들어주는 기본 섹션입니다.

comment = 홈디렉토리
# 공유 자원에 대한 설명 필드와 같습니다.

browseable = no
# 윈도우 네트워크 브라이저에서 디렉토리를 보일 것인지를 결정합니다.

writable = yes
# 사용자에게 쓰기권한을 줍니다.

[public]
# 윈도우에서 보이는 공유 자원(폴더) 이름입니다.

comment = 공개 자료 창고
# 공유자원에 대한 설명 필드와 같습니다.

path = /home/public
# 삼바 서버로 공유할 실제 공유 자원(폴더) 입니다.

public = yes
# 손님사용자에게 접근을 허용합니다.

writable = yes
# 사용자에게 쓰기권한을 줍니다.

삼바 서버 시작

삼바 서버는 /etc/init.d/smb 스크립트에 의해 구동됩니다.

시작은 아래와 같이합니다.

    # /etc/init.d/smb start

만약 서버를 멈추고 싶다면,

    # /etc/init.d/smb stop

와 같이 하면 됩니다.

윈도우에서 리눅스 공유 폴더 사용하기

보통의 유저들은 윈도우98을 사용하고 있을 것입니다.
바탕화면의 네트워크 환경 아이콘에서 오른쪽 마우스 버튼을 클릭하여 컴퓨터 찾기를 실행합니다. 거기에서 삼바 서버가 설치된 리눅스 머신의 호스트네임을 입력하고 찾기 버튼을 누르면 리눅스 삼바 서비스를 수행하고 있는 머신이 보일 것입니다. 보인다면, 그 다음 과정은 윈도우 머신과 같습니다.

아래 화면에서 설명필드는 smb.conf 에서 comment 와 같으며, public 폴더는 [public] 섹션과 같습니다.

아래 화면은 리눅스 삼바 공유 폴더에서 파일을 윈도우 머신으로 복사해 오는 화면입니다.

리눅스에서 윈도우 공유 폴더 사용하기

공유 폴더 정보 알아내기

리눅스에서 윈도우 공유 폴더에 접근하려면 먼저 해당 컴퓨터의 공유 폴더에 어떤 것들이 있는지 알아야 합니다. 이러한 공유자원을 알아보는 명령이 smbclient 입니다.

* smbclient
smbclient -L 컴퓨터이름

* smbclient 외부 네트워크에 있는 컴퓨터일 경우
smbclient -L 컴퓨터이름 -I 컴퓨터의 IP주소

* 예제
smbclient -L cmis -I 100.200.100.200

[공유 폴더가 있는 정보 화면]

아래 화면이 공유 폴더가 있는 화면입니다.
Type 이 Disk인 것이 공유 폴더이고, Sharename은 공유 이름입니다.
Comment 는 자원에 대한 설명입니다.

[공유 폴더 접근하기]

앞에서 윈도우 컴퓨터의 공유 정보를 알아보았습니다.
공유 폴더에 접근 하기 위해서는 smbclient 명령을 사용하면 됩니다. smbclient 를 사용하여 공유 폴더에 접근되면 사용방법은 ftp 를 사용하는 것과 같은 방법입니다. 공유 폴더의 접근을 종료할려면 exit 명령을 입력하면 됩니다.

* smbclient
smbclient //컴퓨터이름/공유이름

* smbclient 외부 네트워크에 있는 컴퓨터일 경우
smbclient //컴퓨터이름/공유이름 -I 컴퓨터의 IP주소

* 예제
smbclient //cmis/이종준 -I 100.200.100.200

공유 폴더를 리눅스 디렉토리 처럼 사용하기

삼바 서버를 통해 윈도우 공유 폴더를 마운트하여 리눅스 디렉토리처럼 사용할 수 있습니다.
윈도우의 네트워크 드라이브 연결과 같다고 생각하면 되겠습니다.
smbmount 를 사용하여 할 수도 있고, mount 명령에서 삼바 파일시스템 형식을 지정하여 할 수도 있습니다.

* smbmount
smbmount //컴퓨터이름/공유이름 마운트할디렉토리

* mount
mount -t smbfs //컴퓨터이름/공유이름 마운트할디렉토리

* 예제
mount -t smbfs //cmis/이종준 /mnt/samba

사용자별로 공유자원 할당하기

지금까지 간단히 삼바서버를 사용하는 법을 익혔습니다.
이제는 약간 고난이도(?)로 특정 사용자만 쓸 수 있는 공유 자원(폴더)를 설정하는 방법을 배워보도록 하겠습니다.
먼저 smb.conf 에 다음과 같이 추가하고 삼바 서버를 재시작 합니다.

[juni_room]
comment = 주니를 위한 삼바 창고
path = /home/junilove
valid users = junilove
public = no
writable = yes

위와 같은 설정은 junilove 라는 사용자에게만 juni_room 이라는 공유자원(폴더) 사용을 허용하는(실제의 공유자원은 리눅스 서버의 /home/junilove/ 가 됩니다.) 설정입니다.

여기에서 한가지 더 알아보자면 [juni_room] 공유자원을 junilove 와 wowlinux 두 사용자에게 할당하려고 한다면 'vaild users' 값을 'valid users = junilove wowlinux' 와 같이 하면 됩니다. 반대로 junilove 와 wowlinux 사용자만 제외하고 나머지 사용자들에게 공유자원 접근을 허용하려고 한다면 'invalid users = junilove wowlinux' 와 같이 하면 됩니다.

사용자별로 공유 자원을 할당하기 위해서는 사용자가 특정 공유자원을 요청하면 삼바는 해당 공유 자원을 소유하는 사용자 권한으로 동작하기 때문에, 어떤 경우에 있어서도 유닉스 머신에 사용자 계정이 있어야 합니다.

이제 그 작업을 해보도록 하겠습니다.
만약 junilove 와 wowlinux 라는 사용자가 서버에 없다면, adduser 를 이용하여 계정을 만듭니다.

# cd /etc

# cat passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

# smbpasswd junilove

[smbpasswd 파일 생성 화면]

이 글에서 설명되지 않은 다른 조건의 환경을 만들고 싶다면, 항상 백업해 둔 기본 smb.conf 파일을 참고로 하십시오. 한가지 더 기억할 것은 윈도우 98, NT, 2000 등이 하지 못하는 것을(윈도우에 없는 기능) 삼바로 할 수 있다고 생각하지는 마시라는 것입니다. 삼바는 MS의 윈도우 프로토콜을 흉내내는 소프트웨어임을 기억하십시오.

삼바설정화일의 구문을 체크하여 에러를 표시해 주는 유틸리티가 있습니다. testparm 으로 실행하면, 아래와 같이 삼바 서버 설정을 체크하여 화면을 보여줍니다.

참고자료

제 5회 리눅스 공동체 세미나 강의록, B-6 네트워크서비스 3 (Samba), 강사 박재호님

이젠 나도 리눅서, 한빛미디어, 최지호, 송인준님 지음

글쓴이 : 이종준님 ( junilove@kebi.com ) "Open mind and don't mind!"

------------------------------------------------------------------------------------------

요번 강좌에서는 이전 강좌에 이어, 본격적인 삼바서버의 설정 방법과 어떻게 하면 윈도우에서 리눅스 파일을 공유할 수 있는지 알아보도록 하겠습니다.

[ 리눅스에서의 삼바 설정 ]

한컴리눅스 2.2기준으로 삼바 설정 파일은 /etc/samba/smb.conf 입니다.

1. 아래는 smb.conf 파일 예제입니다.

#--------------------------- Global Settings -----------------------------------
[global]
workgroup = WORKGROUP-> 윈도우의 워크그룹과 동일한 그룹을 지정합니다.
server string = File Server -> 리눅스 컴퓨터에 대한 설명입니다.
; hosts allow = 192.168.1. 192.168.2. 127. -> 접근 허용할 네트워크 범위
printcap name = /etc/printcap
load printers = yes
printing = lprng
guest account = pcguest
log file = /var/log/samba/%m.log
max log size = 0
security = share
encrypt passwords = yes
smb passwd file = /etc/samba/smbpasswd
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
dns proxy = no

#-------------------------- Share Definitions ------------------------------
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
# Set public = yes to allow user 'guest account' to print
guest ok = no
printable = yes
[public] //공유할 디렉토리명
comment = Public Stuff //설명
path = /home/samba //삼바 공유 디렉토리
public = yes
writable = yes
printable = no
[movie]
comment = movie's directory
path = /home/movie
valid users = jkwoo
public = no
writable = yes
printable = no



2. 삼바 데몬을 재실행합니다.

<그림 017> 삼바 데몬 재실행


3. 삼바사용자 계정 추가

삼바 서버에 접속하기 위해서는 삼바 사용자를 추가해야 합니다. 삼바 사용자는 /etc/passwd 즉, 시스템(즉, 리눅스서버)에 추가한 사용자를 추가해야 합니다.
아래는 리눅스서버에 admin계정을 추가해 봅니다.
만일 사용자계정이 추가되어 있다면 새롭게 추가할 필요는 없습니다.

[root@server1 SPECS]# useradd admin
[root@server1 SPECS]# passwd admin
Changing password for user admin.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.


추가되어 있는 리눅스서버 계정에 삼바 접근을 위한 사용자를 추가합니다.
삼바 접근을 위한 사용자 추가는 smbadduser 명령으로 추가해야 합니다.
반드시, /etc/passwd 파일에 추가되어 있는 시스템 계정을 새롭게 삼바 사용자계정으로 추가해야 합니다.

[root@server1 SPECS]# smbadduser admin:admin
Adding: admin to /etc/samba/smbpasswd
Added user admin.
----------------------------------------------------------
ENTER password for admin
New SMB password:
Retype new SMB password:
Password changed for user admin.
Password changed for user admin.
[root@server1 SPECS]#