관리 메뉴

IT창고

리눅스 Samba(삼바) 서버 설정 본문

서버운영/Linux

리눅스 Samba(삼바) 서버 설정

방구석여포 2017. 9. 23. 00:51

Samba란 마이크로소프트에서 개발한 SMB(Server Message Block)프로토콜을 사용하는데 이 프로토콜은 원도우와 다른 시스템 간의 파일 및 프린터 공유를 위해 사용중이고 현재는 CLFS(Common Internet File System)라는 이름으로 불립니다.

Samba서버데몬에는 두 가지가 있는데 SMBD, NMBD를 알아야합니다. SMBD(Server Message Block Deamon)는 리눅스 및 윈도우즈 운영체제와 파일공유를 위한 프로그램이고 NMBD(Netbios Message Block Deamon)는 윈도우즈에서 사용하는 Netbios통신을 리눅스 운영체제에서도 사용하기 위한 데몬입니다.


samba서버를 설치하고 설정해 보겠습니다. 실험 환경은 CentOS 6.x 리눅스입니다.

A리눅스에 yum -y install samba samba-client samba-common samba-winbind 를 입력해서 삼바 패키지를 설치합니다.

rpm -qa | grep samba을 입력해서 설치된것을 확인하고 삼바파일에 대해 알아보겠습니다. /etc/samba/smb.conf 파일은 삼바의 주설정파일이고 /var/log/samba 파일은 삼바 로그가 저장되는 디렉토리이고 /usr/sbin/smbd파일과 /usr/sbin/nmbd파일은 삼바 서버 실행파일(데몬)입니다.

삼바 관련 데몬을 시작하고 설정하는 법은 service smb start -> service nmb start -> chkconfig smb on -> chkconfig nmb on 을 순서대로 입력해서 데몬을 시작해줍니다. chkconfig 명령어로 부팅시 활성화 기능을 켜줍니다.

설정을 끝냈다면 smbclient -L 삼바서버가설치된ip 를 입력해서 해당 ip가 제공하고 있는 삼바서버의 정보를 확인해봅니다.

위의 사진에서 삼바서버의 어떤 디렉토리가 실행되고 있는지 확인할수있습니다.

nmblookup [hostname] 이라는 명령어가 있습니다. nmblookup을 사용하는 호스트가 속한 네트워크에 존재하는 모든 컴퓨터에게 hostname을 기준으로 ip주소를 질의하는 명령어 입니다. 이것과 비슷한 명령어가 nslookup이 있습니다. 


Netbios는 윈도우즈 운영체제는 같은 네트워크 상에 있는 컴퓨터에 접속할때 ip주소대신에 컴퓨터 이름(hostname)을 가지고 접속할수있는데 윈도우즈에서는 이러한 컴퓨터의 이름 NetbiosName이라고 하며 NetbiosName은 네트워크 상에서 중복되지 않고 유일해야 합니다. ex) nmblookup [ip/hostname] 


vim /etc/samba/smb.conf파일에서 vim 편집기로 파일안에 몇가지 추가해줍니다. vim편집기에 들어가서 :set nu을 입력하면 왼쪽에 라인번호가 생깁니다. 그 번호를 참고해서 57번 라인으로 갑니다. 거기에 아래와 같이 설정해줍니다.

smb.conf파일은 57번 라인에 [global]이 있는데 "[이름]"형식으로 각 세션을 구분합니다. 각 글의 설정을 알아보겠습니다.

workgroup - 윈도우즈 운영체제가 설치된 호스트는 기본적으로 하나의 워크그룹에 속하며 같은 워크그룹에 속한 호스트들만 서로간에 netbios 통신을 할수있습니다.

server string - 삼바서버에 대한 설명 (Comment) 입니다.

netbios name - 윈도우즈와 Netbios 통신을 할때 사용되는 이름으로 보통은 Hostname설정 합니다.

interfaces - Samba를 사용할 인터페이스를 지정합니다. ex)  lo -> loopback(127.0.0.1), eth0 -> ifcfg-eth0 , 특정 ip -> 100.100.100.110/24 , bond0 -> ifcfg-bond0 

hosts allow - 삼바서버에 접속을 허용할 ip주소나 네트워크 주소를 사용합니다.  네트워크주소같은 경우에는 마지막 호스트IP쪽은 생략해서 사용이 가능합니다. ex) 100.100.100.0 / 255.255.255.0  -> 100.100.100.

log file = /var/log/samba/log.%m - 로그파일이 생성되는 경로 로그파일이름은 log.[NetbiosName]으로 생성됩니다.

max log size = 50 - 로그파일의 크기 50kB  50kB 를 초과하면 새로운 로그파일을 생성합니다.

security = user - 삼바서버의 기본동작 방식을 정의하는 설정 보통 user , share 가 옵니다. user는 인증된(계정)사용자만이 접속할수있는서버, share는 익명사용자(계정X)만이 접속할수있는 서버 입니다.

passdb backend = tdbsam - 삼바서버의 사용자 정보를 저장하는 방식으로 smbpasswd 명령어를 이용하여 사용자의 패스워드를 설정할수있습니다.

map to guest = Bad User - 계정이없는 사용자는 guest계정으로 맵핑합니다. 윈도우즈에는 기본적으로 geust계정이 존재합니다. 

220,221줄은 주석해도됩니다. 프린터 관련설정입니다.


익명사용자(guest)들이 모두 접속이 가능한 서버를 설정해보겠습니다.

246번째 라인 부터 작성을 합니다.

위와 같이 설정합니다. 그리고 위에 설정한대로 디렉토리를 만들어줍니다. mkdir -p /samba/share 입력하고 chmod 777 /samba/share 를 입력해서 모든 허가권을 적용합니다. service smb restart , service nmb restart 을 입력하여 변경사항을 적용합니다. testparm 명령어를 사용하여 smb.conf 파일의 오타, 내용 혹은 문법을 체크해봅니다.

여기까지 했다면 기본설정을 모두 했습니다.


B리눅스로 넘어갑니다. 

yum -y install samba-client 패키지를 설치하고 smbclient -L [삼바서버ip및 호스트네임] 을 입력하여 해당 삼바서버라는 이름을 가진 컴퓨터가 제공하고 있는 SAMBA공유 정보를 확인해봅니다.

B리눅스에서 삼바 서버로 접속하는 방법을 알아보겠습니다. smbclient //[ip/호스트네임]/share 을 입력하면 연결이됩니다.

FTP서버와 같이 put명령어로 파일을 업로드할수있다 get,put,mget,mput 모두 사용가능합니다. 그리고 디렉토리도 생성시킬수있습니다.

리눅스말고도 삼바서버는 윈도우에서도 접속할수있습니다. 윈도우에서 win+r키 혹은 실행창을 열어서 \\[ip/호스트네임]\share 를 입력하면 접속할수있습니다.

B리눅스에서 삼바서버에 접속해서 ls를 입력하면 실제로 윈도우에서 넣은 파일들과 디렉토리들을 볼수있습니다.


이번에는 인증된 사용자(계정이 존재하는)만 접속할수있는 서버를 만들어 보겠습니다. A리눅스로 넘어갑니다.

vi /etc/samba/smb.conf 파일에 253번 라인 근처에 아래와같이 작성합니다.

path = /samba/sec-share

writable =yes

create mode = 0770

directory mode = 0770

guest ok = no   - 익명 사용자(guest)계정은 사용할수없도록 설정

valid users = @smbgroup

valid users는 접속을 허용할 계정명을 나열하는 부분입니다 ex) valid users = [계정1],[계정2]...[계정n] ex2) @뒤에 나오는 이름은 그룹이라는 것을 뜻하는 특수문자로 smbgroup이라는 그룹에 소속되어있는 계정만 접속할수있습니다.


계정을 만들어봅니다.

groupadd smbgroup

useradd -G smbgroup samba1

passwd samba1   

smbpasswd -a samba1

smbpawwd 명령어는 삼바서버에 samba1계정을 추가하고 (-a) 해당 계정의 패스워드를 설정합니다.

pdbedit -L를 입력하여 삼바서버에 등록된 계정의 정보를 확인해봅니다.

공유할 디렉토리와 권한및 소유권을 줍니다. mkdir -p /samba/sec-share -> chmod 770 /samba/sec-share -> chown root:smbgroup /samba/sec-share 를 입력해줍니다.

변경된 사항을 적용하기위해 service smb restart, service nmb restart를 입력해줍니다.


여기까지 계정을 이용한 삼바서버 접속설정을 마쳤습니다. 리눅스로 접속해보겠습니다.

smbclient -L [ip/호스트네임]을 입력해서 공유정보를 확인해보고 smbclient //[ip/호스트네임]/security -U samba1 접속해봅니다. 공유디렉토리와 접속계정을 입력해줘야합니다. smbstatus [ip/호스트네임]을 입력해서 A리눅스의 현재 삼바서버에 접속한 클라이언트의 IP주소와 접근한 공유 디렉토리 및 시간 등의 정보를 확인해볼수있습니다.

윈도우에서도 접속가능합니다. 

윈도우에는 실행창에 \\[ip/호스트네임]\sec-share 를 입력하면 계정을 입력하는 창이 뜨면서 계정을 입력하면 접속가능합니다. 

'서버운영 > Linux' 카테고리의 다른 글

리눅스 Kickstart  (0) 2017.09.28
리눅스 PXE  (0) 2017.09.25
리눅스 NFS 설정  (0) 2017.09.21
리눅스 FTP 설정  (0) 2017.09.21
리눅스 DNS 고급설정  (0) 2017.09.19
Comments