강좌
클라우드/리눅스에 관한 강좌입니다.
리눅스 분류

[SULINUX 강좌#12] 삼바(SAMBA)서버 구축 및 운영하기

작성자 정보

  • 관리자 작성
  • 작성일

컨텐츠 정보

본문

[SULINUX 강좌#12] 삼바(SAMBA)서버 구축 및 운영하기 



8981409a36269487e41dd29ffd6a290d_1644998432_9129.png
 

samba는 이기종간의 파일, CD-ROM, 프린트등을 공유하기 위해 만들어진 프로그램입니다. 이는 Windows의 프린터를 리눅스에서 사용하고, 리눅스의 CD-ROM을 윈도우에서 사용할 수 있게 해 줍니다. sambaSMB(Server Message Block)를 사용합니다. SMB는 마이크로소프트사와 인텔이 다른 시스템의 디스크나 프린터와 같은 자원을 공유하기 위해 개발된 프로토콜입니다. SMBTCP/IP 기반의 NetBIOS 프로토콜을 사용합니다. NetBIOSIPX, NetBEUI, DECnet, TCP/IP위에 구현이 되어 있지만, 가장 많이 사용하는 TCP/IP를 사용하므로 SMB는 확장성이 뛰어납니다.

 

samba를 사용하게 되면 윈도우즈의 Network Neighborhood에 나타나게 되며, samba에 설정된 그룹과, 리눅스에 설정된 호스트명으로 컴퓨터명이 나타나게 됩니다. 물론, samba를 사용하면, 윈도우에서 사용하는 컴퓨터이름으로 다른 컴퓨터 접속이 가능합니다. 예를 들어서 윈도우의 컴퓨터 이름이 “sulinux-dev"라면, 컴퓨터에 접속 시 해당 컴퓨터의 IP을 알지 못해도 컴퓨터 이름 ”sulinux-dev"만 알면 접속이 가능합니다. samba를 사용하면, 같은 네트워크에서 samba서버 접근시 컴퓨터이름만 알면 IP를 몰라도 접근 할 수 있습니다. 이것이 WINS(Windows Internet Name Service)입니다.

 

 

참 고

 

CIFS ?

 

CIFS(Common Internet File System)는 인터넷을 위한 SMB 파일 공유 프로토콜의 확장된 버전입니다. SMB프로토콜 위에 DNS를 이용하여 확장, 느린 네트워킹을 위해 최적화, 유니코드로 인코딩된 파일 이름의 지원을 덧붙여, 윈도우와 유닉스 환경을 동시에 지원하는 인터넷의 표준 파일 규약입니다. 폐쇄적인 SMB 프로토콜과는 달리 CIFS 프로토콜 정의에 여러 유닉스 업체들이 참여했습니다. 삼바도 버전 2.2부터는 CIFS 규약을 준수하고 있습니다.

 

 

 

SAMBA 서버의 동작 구조

 

8981409a36269487e41dd29ffd6a290d_1644998454_6316.png
 

 

smaba서버는 크게 2개의 프로세스로 구성 되어 있습니다. 이는 smbdnmbd입니다. 대부분의 처리는 smbd에서 합니다. 포트 또한 TCP:445 만 열려 있으면 작동합니다. 이렇게 되었을 때는 원도우에서 사용하는 컴퓨터 이름으로 접속되지 않으며, Network Neighborhood(네트워크 환경)에도 나타나지 않고, 오직 site(IP또는 도메인)로만 접속 할 수 있습니다. nmbd3개의 포트를 사용합니다. TCP:139만 있으면 컴퓨터 이름으로 접속 할 수 있습니다. UDP:137UDP:138Network Neighborhood(네트워크 환경)에 영향을 미치며 윈도우즈는 주변 컴퓨터를 찾을 때 UDP 137,138번을 이용하여 브로드케스팅 하게 됩니다. 윈도우즈는 그렇게 하여 주변의 컴퓨터를 찾게 되는 것입니다.

 

 

주 의

 

SULinux는 보안을 위해 서버의 최소한의 포트만을 열어두었습니다. 그리고 열려있지 않은 포트는 리눅스 방화벽인 iptables를 사용하여 차단 해 두었습니다. SAMBA를 사용하는 경우 TCP 139, 445번과, UDP : 137, 138번 포트가 열려있어야 합니다. SAMBA사용을 위해서는 "보안 수준 및 방화벽프로그램을 이용하여 SAMBA를 오픈하시기 바랍니다.

 

* SAMBA는 로컬 네트워크에서 사용하는 것이 가장 좋습니다. 서버 및 방화벽에서 SMB포트(TCP:445)를 막지 않았다 하더라도 ISP단에서 포트를 막는 경우가 있어 작동하지 않을 수 도 있습니다. 원격지 파일 공유를 위해서는 FTP등을 사용하시는 것이 효과적입니다.

 

 

SAMBA 시작 및 종료

 

SAMBA Server는 항상 실행하고 있는 서버 프로그램입니다. 콘솔 접속하여 smb를 시작, 종료, 재시작 할 수 있습니다.

 

[root@sulinux ~]# systemctl start smb

[root@sulinux ~]# systemctl restart smb

[root@sulinux ~]# systemctl stop smb

 

 

SAMBA서버 설정 및 접속방법

 

SULinux는 기본적으로 samba서버가 설치되어 있지만, 서비스는 시작되어 있지 않습니다. samba를 사용하기 위해서는 다음과 같은 samba서버 설정이 필요합니다.

 

 

(1) 시스템 계정 추가

 

SULinux에서 samba서버를 사용하고자 한다면, 먼저 시스템계정을 추가해야 합니다. 이미 생성한 계정이 있다면, 생성한 계정을 사용해도 무관합니다.

 

[root@sulinux ~]# useradd sulinux

[root@sulinux ~]# passwd sulinux

Changing password for user sulinux.

New UNIX password:

Retype new UNIX password:

passwd: all authentication tokens updated successfully.

(2) samba 사용자 연결

 

samba서버는 프린트, 파일 공유를 위해 사용합니다. 아무나 접근하여 사용 할 수도 있지만, 대부분 사용자에게서 아이디 및 비밀번호 입력을 받아 접속 할 수 있도록 많이 사용합니다.

samba서버의 ID/비밀번호를 연결하기 위해서는 다음과 같이 합니다.

[root@sulinux ~]# smbpasswd -a sulinux

New SMB password:

Retype new SMB password:

Added user sulinux.

여기서 "-a" 옵션은 samba서버의 사용자를 생성한다는 옵션입니다. 위에서 입력하는 비밀번호는 samba서버에서 사용되는 사용자의 비밀번호 입니다. 시스템 사용자의 비밀번호와 상관없습니다.

 

(3) 공유할 디렉토리 추가

 

samba서버의 주 설정파일은 /etc/samba/smb.conf 입니다. samba의 공유 디렉토리 생성을 위해 다음과 같이 추가 합니다.

[sulinux]

comment = SULinux Dev

path=/home/sulinux

writable = yes

valid users = sulinux

맨 위에 설정된 [sulinux]에서 "sulinux"가 공유명이 됩니다. comment 부분은 설명이며, path는 리눅스 시스템상의 디렉토리가 됩니다. 쓰기를 허용하기 위해 “writable = yes", sulinux 사용자만 접속을 허용하기 위해 "valid users = sulinux"를 설정하였습니다.

 

 

(4) SAMBA서버 접속 (Windows)

 

윈도우즈에서 다음과 같은 방법으로 접속 할 수 있습니다. 시작-> “실행을 선택합니다. 그리고는 다음과 같이 입력합니다.

 

8981409a36269487e41dd29ffd6a290d_1644998478_6061.png
 

 

위 그림은 Samba서버에 접속하기 위하여 Samba 서버의 호스트네임(sulinux)를 입력하였습니다. 물론 IP를 넣어 접근 할 수 있습니다. “확인을 눌러 접속 합니다.

 

8981409a36269487e41dd29ffd6a290d_1644998494_307.png
 

 

위 그림은 Samba서버 접근 과정에서 로그인을 요청하는 화면입니다. 앞에서 생성한 Samba Windows 사용자명과 Samba 암호를 넣어 로그인 합니다.

 

다음 그림과 같이 접속 되는 것을 볼 수 있습니다. 접속 된 후에는 Windows의 로컬폴더와 같이 파일을 생성/복사/수정/삭제등을 할 수 있습니다. SambaFTP와 다르게 다운로드 받지 않아도 파일을 보거나 편집 할 수 있습니다.

8981409a36269487e41dd29ffd6a290d_1644998510_5663.png
 

 

(5) SAMBA서버 접속 (Linux GUI)

 

리눅스에서는 SAMBA서버 및 Windows파일 공유에 접근하기 위한 다양한 방법을 제공합니다. 리눅스 GUI 환경에서 사용하는 파일브라우져 (GnomeNautilus, KDE환경의 Konqueror)에서 SMB접속을 지원합니다. 다음은 Gnome환경의 Nautilus를 사용하는 SULinux에서 접속해 보았습니다.

8981409a36269487e41dd29ffd6a290d_1644998525_1786.png
 

 

먼저 파일브라우저를 실행 합니다. 파일브라우저 실행은 간단하게 컴퓨터를 실행시키면 됩니다. 메뉴에서 이동”->“위치를 선택하여 위와 같이 입력합니다.

smb://컴퓨터명/공유이름

 

위와 같은 방식으로 입력합니다. smb는 프로토콜입니다. 여기에는 ftp, ssh, http를 사용할 수 있습니다. 컴퓨터명에는 Windows의 컴퓨터명 또는 리눅스의 호스트명, IP, 도메인 등이 올 수 있습니다. 공유이름에는 공유 디렉토리를 지정하고, 지정하지 않으면 공유할 수 있는 자원들을 보여주는 페이지가 나타납니다. 공유 할 수 있는 자원리스트에 보여 지기 위해서는 SMB설정에서 보이기를 선택해야 합니다.

 

8981409a36269487e41dd29ffd6a290d_1644998541_3812.png
 

 

위 그림은 Samba서버 접근 과정에서 로그인을 요청하는 화면입니다. 앞에서 생성한 Samba Windows 사용자명과 Samba 암호를 넣어 로그인 합니다. 여기서 도메인은 기본 “MYGROUP" 이지만, Samba서버 기본 설정에서의 인증은 사용자 인증이기 때문에 영향을 주지 않습니다.

 

 

(6) SAMBA서버 접속 (Linux TUI)

 

리눅스에서 SMB서버에 접속하는 방법은 여러 가지 이며, TUI 환경에서도 다양한 접속 방법이 있습니다.

 

. MC를 이용한 방법

다음은 MC(Midnight Commander)를 이용하여 접속해 보았습니다. 명령어창에서 "mc"를 입력하면 아래 그림과 같이 mc가 작동하며, <F9>키를 눌러 메뉴가 나타나면 왼쪽” -> "SMB 연결을 선택합니다.

 

mc가 설치되어 있지 않으면 아래와 같이 설치합니다.

[root@sulinux ~]# yum -y install mc

 

8981409a36269487e41dd29ffd6a290d_1644998559_1393.png
 

아래와 같이 호스트 이름을 입력합니다. 호스트 이름은 컴퓨터이름, IP, 도메인등을 입력합니다.

 

8981409a36269487e41dd29ffd6a290d_1644998572_5165.png
 

 

 

다음으로 도메인, 사용자, 비밀번호를 입력합니다.

 

8981409a36269487e41dd29ffd6a290d_1644998586_5813.png
 

 

 

아래 그림과 같이 SMB서버에 접속된 것을 확인 할 수 있습니다. 아래의 환경에서 마치 로컬에 있는 파일과 디렉토리 처럼 여러 가지 작업을 할 수 있습니다.

 

8981409a36269487e41dd29ffd6a290d_1644998600_406.png
 

 

 

. smbclient를 이용한 SMB서버 접속

 

samba에서 제공하는 smbclient명령어를 이용하여 SMB서버에 접속 할 수 있습니다. 접속 방법은 다음과 같습니다.

 

[root@sulinux ~]# smbclient //sulinux/sulinux/ -U sulinux

Password:

Domain=[sulinux] OS=[Unix] Server=[Samba 3.6.9-0.SUL6.8]

smb: \> ls

. D 0 Wed Apr 29 18:48:38 2009

.. D 0 Wed Apr 29 02:13:12 2009

.bashrc H 208 Thu Apr 9 10:11:27 2009

한글.log A 31068 Wed Apr 29 03:39:09 2009

.bash_profile H 224 Thu Apr 9 10:11:27 2009

.bash_logout H 24 Wed Jul 9 17:15:13 2008

.mozilla DH 0 Thu Apr 9 10:16:41 2009

 

56540 blocks of size 1048576. 53442 blocks available

smb: \> help

? altname archive blocksize cancel

case_sensitive cd chmod chown close

del dir du exit get

getfacl hardlink help history lcd

link lock lowercase ls mask

md mget mkdir more mput

newer open posix posix_open posix_mkdir

posix_rmdir posix_unlink print prompt put

pwd q queue quit rd

recurse reget rename reput rm

rmdir showacls setmode stat symlink

tar tarmode translate unlock volume

vuid wdel logon listconnect showconnect

!

smb: \>

 

“smbclient //컴퓨터이름/공유명/ -U 사용자명이렇게 입력하면, 비밀번호를 넣으라고 하며, 비밀번호 입력후 FTP에 접속한 것처럼 작동됩니다. "help"명령어를 입력하면, 사용 할 수 있는 명령어가 나타나며, FTP와 비슷하게 get, put 등의 명령어로 파일을 다운로드, 업로드 할 수 있습니다.

(7) SMB 파일 시스템 마운트 (리눅스)

 

윈도우 및 리눅스의 SMB서버에 있는 파일 및 디렉토리를 마치 내 리눅스 서버에 있는 것 처럼 마운트 할 수 있습니다. 이 있습니다. 윈도우의 경우는 네트워크 드라이버를 만들 수 있습니다. 다음 명령어로 마운트해 보도록 하겠습니다.

 

1) 먼저 마운트 할 디렉토리를 생성합니다.

2) 그런 다음 마운트 합니다.

 

[root@sulinux /]# mount -t cifs //sulinux/sulinux /smbmount/ -o user=sulinux -o password=1234

[root@sulinux /]# df

Filesystem Size Used Avail Use% Mounted on

/dev/sda3 19G 2.5G 16G 14% /

/dev/sda6 56G 181M 53G 1% /home

/dev/sda2 67G 180M 63G 1% /backup

/dev/sda1 99M 25M 69M 27% /boot

tmpfs 252M 0 252M 0% /dev/shm

//sulinux/sulinux 56G 181M 53G 1% /smbmount

[root@sulinux /]# ll /smbmount/

합계 32

-rwxr--r-- 1 sulinux sulinux 31068 429 03:39 한글.log

 

위에서 "mount -t cifs //sulinux/sulinux /smbmount/ -o user=sulinux -o password=1234" 명령어를 사용하여 SMB서버에 접속했습니다. 일반적인 mount 명령어를 이용하여 마운트하고, 파일시스템 타입은 cifs로 하였습니다. “//컴퓨터명/공유명을 지정하고, 로컬에 마운트 할 곳(/smbmount)를 지정했습니다. SMB서버 접속을 위해 옵션으로 userpassword를 명시하였습니다. 이렇게 마운트 되면, 마치 로컬의 디렉토리와 같이 사용할 수 있습니다. 이 방법은 백업등의 용도로 많이 사용되고 있습니다.

 

 

 

SAMBA서버 운영 및 설정

 

 

(1) “.”으로 시작하는 숨김 파일에 관하여

 

리눅스 및 유닉스 시스템에서는 "."으로 시작하는 파일은 숨김 파일입니다. 하지만, 윈도우에는 숨김 속성이 들어있는 파일만이 숨김 파일입니다. 이런 문제로, SAMBA서버에 파일을 저장했는데 보이지 않는 경우가 있습니다.

 

/etc/samba/smb.conf 파일을 여러 [global] 섹션에 다음 내용을 추가 합니다.

 

hide dot files = no

위와 같이 설정하고 SAMBA서버를 재시작 하시면 윈도우에서도 “.”으로 시작하는 숨김 파일이 보이게 됩니다. 다른 방법으로 윈도우에서 "숨김 파일 표시"기능을 사용하여도 보이지만, 다양한 클라이언트 환경을 위해서라면 서버에서 설정하는 것이 좋을 것입니다.

 

 

(2) smbstatus: SAMBA 서버 접속자 및 상태확인

 

smbstatus는 현재 삼바 서버 상태를 확인할 수 있습니다.

 

~]# smbstatus

 

Samba version 4.1.12

PID Username Group Machine

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

21878 sulinux sulinux 192.168.0.205 (ipv4:192.168.0.205:1063)

 

Service pid machine Connected at

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

IPC$ 21878 192.168.0.205 Fri Apr 24 21:28:07 2015

 

No locked files

 

sulinux 사용자가 192.168.0.205 아이피를 갖는 머신에서 접속하였음을 알 수 있습니다. 삼바 클라이언트 유틸리티인 smbclient를 이용하여 삼바 서버의 상태를 체크할 수도 있습니다. smbclient는 삼바 서버를 체크하는 데 사용할 뿐만 아니라 리눅스 클라이언트에서 MS 윈도우 삼바 서버에 접속하는데 사용되는 매우 유용한 유틸리티입니다.

 

 

 

(3) testparm: SAMBA 설정파일 확인

 

삼바 서버의 설정 파일에 이상이 없는지를 체크할 때 사용하는 도구로 testparm이 있습니다. 이 명령을 사용하여 설정한 파일에 오류 여부를 확인해볼 수 있으며, 이 명령은 어떠한 옵션도 없이 단독으로 실행하여 smb.conf 파일을 점검합니다.

 

~]# testparm

Load smb config files from /etc/samba/smb.conf

rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)

Processing section "[homes]"

Processing section "[printers]"

Processing section "[public]"

Loaded services file OK.

Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

 

[global]

workgroup = MYGROUP

server string = Samba Server Version %v

log file = /var/log/samba/log.%m

max log size = 50

idmap config * : backend = tdb

cups options = raw

 

[homes]

comment = Home Directories

read only = No

browseable = No

 

[printers]

comment = All Printers

path = /var/spool/samba

printable = Yes

print ok = Yes

browseable = No

 

[public]

path = /home/samba

read only = No

guest ok = Yes

 

smb.conf 파일의 문법적인 오류를 검사하여 그 결과를 보여 주는데, 아무런 오류가 없다면 OK 메시지를 보여 주고 커서는 키보드 입력을 대기하는 상태에 있게 됩니다. 여기서 ENTER키를 입력하면 공유 설정 항목들을 보여줍니다.

관련자료

댓글 0
등록된 댓글이 없습니다.

공지사항


뉴스광장


  • 현재 회원수 :  60,157 명
  • 현재 강좌수 :  36,514 개
  • 현재 접속자 :  256 명