[SULINUX 강좌#12] 삼바(SAMBA)서버 구축 및 운영하기
작성자 정보
- 관리자 작성
- 작성일
컨텐츠 정보
- 4,318 조회
- 0 추천
- 목록
본문
[SULINUX 강좌#12] 삼바(SAMBA)서버 구축 및 운영하기
samba는 이기종간의 파일, CD-ROM, 프린트등을 공유하기 위해 만들어진 프로그램입니다. 이는 Windows의 프린터를 리눅스에서 사용하고, 리눅스의 CD-ROM을 윈도우에서 사용할 수 있게 해 줍니다. samba는 SMB(Server Message Block)를 사용합니다. SMB는 마이크로소프트사와 인텔이 다른 시스템의 디스크나 프린터와 같은 자원을 공유하기 위해 개발된 프로토콜입니다. SMB는 TCP/IP 기반의 NetBIOS 프로토콜을 사용합니다. NetBIOS는 IPX, 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 서버의 동작 구조
smaba서버는 크게 2개의 프로세스로 구성 되어 있습니다. 이는 smbd와 nmbd입니다. 대부분의 처리는 smbd에서 합니다. 포트 또한 TCP:445 만 열려 있으면 작동합니다. 이렇게 되었을 때는 원도우에서 사용하는 컴퓨터 이름으로 접속되지 않으며, Network Neighborhood(네트워크 환경)에도 나타나지 않고, 오직 site(IP또는 도메인)로만 접속 할 수 있습니다. nmbd는 3개의 포트를 사용합니다. TCP:139만 있으면 컴퓨터 이름으로 접속 할 수 있습니다. UDP:137과 UDP:138은 Network 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)
윈도우즈에서 다음과 같은 방법으로 접속 할 수 있습니다. 시작-> “실행”을 선택합니다. 그리고는 다음과 같이 입력합니다.
위 그림은 Samba서버에 접속하기 위하여 Samba 서버의 호스트네임(sulinux)를 입력하였습니다. 물론 IP를 넣어 접근 할 수 있습니다. “확인”을 눌러 접속 합니다.
위 그림은 Samba서버 접근 과정에서 로그인을 요청하는 화면입니다. 앞에서 생성한 Samba Windows 사용자명과 Samba 암호를 넣어 로그인 합니다.
다음 그림과 같이 접속 되는 것을 볼 수 있습니다. 접속 된 후에는 Windows의 로컬폴더와 같이 파일을 생성/복사/수정/삭제등을 할 수 있습니다. Samba는 FTP와 다르게 다운로드 받지 않아도 파일을 보거나 편집 할 수 있습니다.
(5) SAMBA서버 접속 (Linux GUI)
리눅스에서는 SAMBA서버 및 Windows파일 공유에 접근하기 위한 다양한 방법을 제공합니다. 리눅스 GUI 환경에서 사용하는 파일브라우져 (Gnome의 Nautilus, KDE환경의 Konqueror)에서 SMB접속을 지원합니다. 다음은 Gnome환경의 Nautilus를 사용하는 SULinux에서 접속해 보았습니다.
먼저 파일브라우저를 실행 합니다. 파일브라우저 실행은 간단하게 “컴퓨터”를 실행시키면 됩니다. 메뉴에서 “이동”->“위치”를 선택하여 위와 같이 입력합니다.
smb://컴퓨터명/공유이름 |
위와 같은 방식으로 입력합니다. smb는 프로토콜입니다. 여기에는 ftp, ssh, http를 사용할 수 있습니다. 컴퓨터명에는 Windows의 컴퓨터명 또는 리눅스의 호스트명, IP, 도메인 등이 올 수 있습니다. 공유이름에는 공유 디렉토리를 지정하고, 지정하지 않으면 공유할 수 있는 자원들을 보여주는 페이지가 나타납니다. 공유 할 수 있는 자원리스트에 보여 지기 위해서는 SMB설정에서 “보이기”를 선택해야 합니다.
위 그림은 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 |
아래와 같이 호스트 이름을 입력합니다. 호스트 이름은 컴퓨터이름, IP, 도메인등을 입력합니다.
다음으로 도메인, 사용자, 비밀번호를 입력합니다.
아래 그림과 같이 SMB서버에 접속된 것을 확인 할 수 있습니다. 아래의 환경에서 마치 로컬에 있는 파일과 디렉토리 처럼 여러 가지 작업을 할 수 있습니다.
나. 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 4월 29 03:39 한글.log |
위에서 "mount -t cifs //sulinux/sulinux /smbmount/ -o user=sulinux -o password=1234" 명령어를 사용하여 SMB서버에 접속했습니다. 일반적인 mount 명령어를 이용하여 마운트하고, 파일시스템 타입은 cifs로 하였습니다. “//컴퓨터명/공유명”을 지정하고, 로컬에 마운트 할 곳(/smbmount)를 지정했습니다. SMB서버 접속을 위해 옵션으로 user와 password를 명시하였습니다. 이렇게 마운트 되면, 마치 로컬의 디렉토리와 같이 사용할 수 있습니다. 이 방법은 백업등의 용도로 많이 사용되고 있습니다.
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키를 입력하면 공유 설정 항목들을 보여줍니다.
관련자료
-
이전
-
다음