제목 : 삼바(SAMBA)서버 사용법
ㅇ 제작 : 리눅스포털(www.superuser.co.kr) 수퍼유저코리아 서버관리팀
ㅇ SULINUX 홈페이지 : www.sulinux.net
ㅇ 리눅스포털 홈페이지 : www.superuser.co.kr
삼바(Samba)
삼바는 리눅스와 윈도우간에 파일 및 프린터를 공유 할 수 있게 해주는 프로그램이다. 삼바를 통해 리눅스 서버를 타운영체제와 파일을 공유할 수 있는 파일서버로도 사용할 수 있다. 이와같이 삼바가 공유할 수있는 이유는 SMB(Server Message Block)/CIFS(Common Internet File System)라는 프로토콜을 이용함으로써 가능해졌다.
참고
SMB 란? SMB(Server Message Block)는 마이크로소프트사와 인텔이 윈도우 시스템이 다른 시스템의 디스크나 프린터와 같은 자원을 공유할 있도록하기 위해 개발된 프로토콜이다. TCP/IP 기반하의 NetBIOS 프로토콜을 이용하기 때문에 이 프로토콜은 NFS, NIS, lpd 와 같은 유닉스의 분산인증구조와 유사하다. 따라서 윈도우 중심의 네트워크 환경에서는 리눅스를 이용한 공유시스템에서는 SMB가 필수적이다.
CIFS 란? CIFS(Common Internet File System) 는 네트워크를 위한 SMB 파일 공유 프로토콜의 확장된 버전이며, 윈도우와 유닉스 환경을 동시에 지원하는 인터넷의 표준 파일 규약의 프로토콜이다. CIFS는 이전의 폐쇄적인 SMB 프로토콜과는 달리 CIFS 규약 정의는 여러 유닉스 업체의 참여하여 결정된 내용이기 때문에 삼바도 버전이 올라감에 따라(삼바 버전 2.2 이상) CIFS 규약을 잘 준수하여 안정성이 상당히 향상 되었다.. |
1. 삼바를 쓰는 이유
네트워크에 윈도우 서버가 있음에도 불구하고 삼바를 사용하는 이유를 생각해 보도록 하자.
삼바는 기존 네트워크 환경에 존재하는 이기종 운영체제를 하나로 통합 관리하며 사용할 수 있도록 도와준다. MS사의 윈도우 계열뿐만 아니라 매킨토시, 리눅스, Unix 와 같은 다양한 운영체제가 같이 존재할 경우 통합관리에서 유일한 대안은 삼바일 것이다. 삼바는 파일서버 뿐 아니라 프리트 서버로서도 중요한 역할을 하고 있다.
윈도우 그룹을 하나로 묶기 위해 주 도메인서버를 더 이상 윈도우즈 서버가 담당할 필요 없어졌다. 삼바를 이용하여 훌륭한 주 도메인 관리기로 동작시키면 더 이상 윈도우즈 서버에 구애 받을 필요가 없어졌다는 말이다.
2. SULinux의 삼바 기본 설치 목록
그럼 지금부터 이렇게 강력한 삼바을 지원하는 SULinux의 삼바 기본 구성패키지를 살펴보자. 삼바의 기본 구성 목록은 다음과 같다.
samba-3.0.10-1.4E.2 samba-client-3.0.10-1.4E.2 samba-common-3.0.10-1.4E.2 samba-swat-3.0.10-1.4E.2 |
위의 4개의 패키지로 삼바를 구성할 수 있는 모든 준비는 끝났다. 만약 설치 삭제하였다면 “yum install samba*”라는 명령어로 삼바를 다시 설치 하여 이하의 삼바서버를 구축해보자!
3. 삼바의 설정
삼버 서버를 구동하기 위해서는 먼저 네트워크 환경에 맞게 설정을 해야 한다. 삼바의 설정파일은 /etc/samba 디렉토리 아래에 있으며, smb.conf 가 기본 설정파일이다.
삼바의 설정은 매우 복잡하며 환경에 따라서 다양한 설정 방법 등이 존재하므로 처음부터 모든 것을 설정하기 보다는 가장 기본적인 것부터 설정해 나가는 것이 효율적이다.
SULinux에서 제공하는 기본 smb.conf 를 간단히 수정하는 과정 및 파일의 설정내용을 살펴보자.
※ 참고
testparm : 삼바설정 화일의 구문을 체크하여 에러를 표시해 주는 유틸리티
# cd /etc/samba
# vi smb.conf
[global]
# 윈도우에서 작업그룹과 같다. 공유하고자 하는 작업그룹 이름을 작성한다. workgroup = MYGROUP
# 컴퓨터 설명 필드와 같다. server string = Samba Server
# 삼바에 접속하는 호스트 별로 개별적인 로그 파일을 만들도록 한다. log file = /var/log/samba/%m.log
# 사용자 인증을 거치지 않고 공유 자원(폴더)에 접근할 수 있게 한다. security = user
# 윈도우의 기본 패드워드 모드는 encrypted 모드이다. encrypt passwords = yes
# 삼바의 암호 모드가 윈도우와 호환되도록 설정한다. smb passwd file = /etc/samba/smbpasswd
# 한국어 지원을 위한 설정 unix charset = cp949 dos charset = cp949 display charset = cp949 client code page = 949
# 대부분의 경우 아래 옵션을 주면 성능 향샹 효과를 볼 수 있다. socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
[homes]
# 공유 자원을 찾을 수 없을 때 사용자 데이터베이스를 찾아서 해당 사용자에 대한 공유 자원을 만들어주는 기본 섹션이다. # 공유 자원에 대한 설명 필드와 같다. comment = Home Directories
# 윈도우 네트워크 브라이저에서 디렉토리를 보일 것인지를 결정한다. browseable = no # 사용자에게 쓰기권한을 줍니다. writable = yes
[public] # 윈도우에서 보이는 공유 자원(폴더) 이름이다. # 공유자원에 대한 설명 필드와 같다. comment = Public Stuff
# 삼바 서버로 공유할 실제 공유 자원(폴더) 이다. path = /home/public
# 손님사용자에게 접근을 허용한다. public = yes
# 사용자에게 쓰기권한을 줍니다. writable = yes |
4. 삼바 서버 기동과 중지
삼바 서버 구동은 아래와 같이한다.
# /etc/init.d/smb start
삼바 서버를 중지는 아래와 같이한다.
# /etc/init.d/smb stop
5. 삼바사용자 계정 추가
삼바 서버에 접속하기 위해서는 삼바 사용자를 추가해야 한다. 삼바 사용자는 시스템계정에 추가한 사용자여야 한다. 다시말해 /etc/passwd파일에 등록되 사용자여야 한다는 말이다. 아래는 서버에 admin계정을 추가하는 과정이다. 만일 사용자계정이 추가되어 있다면 새롭게 추가할 필요는 없다.
추가되어 있는 리눅스서버 계정에 삼바 접근을 위한 사용자를 추가한다.삼바 접근을 위한 사용자 추가는 smbadduser 명령으로 추가해야 한다. 반드시 /etc/passwd 파일에 추가되어 있는 시스템 계정을 새롭게 삼바 사용자계정으로 추가해야 한다.
[root@localhost ~ ]# 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@localhost ~ ]#
6. 공유 폴더 접근
리눅스에서 윈도우 공유 폴더에 접근하려면 먼저 해당 컴퓨터의 공유 폴더에 어떤 것들이 있는지 알아야 한다. 이러한 공유자원을 알아보는 명령이 smbclient 이다.
공유 폴더의 접근을 종료 하려면 exit 명령을 입력하면 된다.
smbclient
형식 : smbclient -L 컴퓨터이름
외부 네크워크일 경우 : smbclient -L 컴퓨터이름 -I 컴퓨터의 IP주소
실제 사용의 예
[root@localhost ~ ]# smbclient -L Public Stuff -I 192.168.1.200
[root@localhost ~ ]# smbclient //Public Stuff -I 192.168.1.200
[root@localhost ~ ]# smbclient //Public Stuff/nemo -l 192.168.1.200
※ 참고
Type 이 Disk인 것이 공유 폴더이고, Sharename은 공유 이름이다.
Comment 는 자원에 대한 설명이다
7. 공유 폴더를 리눅스 디렉토리 처럼 사용하기
삼바 서버를 통해 윈도우 공유 폴더를 마운트하여 리눅스 디렉토리처럼 사용할 수도 있다. 윈도우의 네트워크 드라이브 연결과 같다고 생각하면 되겠습니다. smbmount 를 사용하여 할 수도 있고, mount 명령에서 삼바 파일시스템 형식을 지정하여 할 수도 있다.
smbmount
형식 : smbmount //컴퓨터이름/공유이름 마운트 할 디렉토리
mount
형식 : mount -t smbfs //컴퓨터이름/공유이름 마운트 할 디렉토리
실제 사용의 예
mount -t smbfs //Public Stuff/nemo /mnt/samba
8. 사용자별로 공유자원 할당하기
지금까지 간단히 삼바서버를 사용하는 법을 알아보았다. 이제는 특정 사용자만 쓸 수 있는 공유 자원(폴더)를 설정하는 방법을 알아보자. 먼저 smb.conf 에 다음과 같이 추가하고 삼바 서버를 재시작 한다.
[nemo_room] comment = NemoRoom path = /home/nemo valid users = nemo public = no writable = yes |
위와 같은 설정은 nemo 라는 사용자에게만 nemo_room 이라는 공유자원(폴더) 사용을 허용하는 설정이다. 실제의 공유자원은 리눅스 서버의 /home/nemo/ 가 된다.
여기에서 한가지 더 알아보자면 [nemo_room] 공유자원을 nemo 와 nemo1 두 사용자에게 할당하려고 한다면 'vaild users' 값을 'valid users = nemo nemo1' 과 같이 하면 된다. 반대로 nemo 와 nemo1 사용자만 제외하고 나머지 사용자들에게 공유자원 접근을 허용하려고 한다면 'invalid users = nemo nemo1' 과 같이 하면 된다.
사용자별로 공유 자원을 할당하기 위해서는 사용자가 특정 공유자원을 요청하면 삼바는 해당 공유 자원을 소유하는 사용자 권한으로 동작하기 때문에 어떤 경우에 있어서도 유닉스 머신에 사용자 계정이 있어야 한다.
이제 그 작업을 해보도록 하자. 만약 nemo 와 nemo1이라는 사용자가 서버에 없다면 adduser 를 이용하여 계정을 만든다.
[root@localhost ~ ]# cd /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd
[root@localhost ~ ]# smbpasswd nemo
[출처-슈퍼유저코리아]