우분투 삼바 설치 - ubuntu samba seolchi

안녕하세요. 달소입니다.

오늘은 Ubuntu 20에서 파일공유를 위한 SMB 서버를 직접 구축해보도록하겠습니다.

회사나 기타 윈도우 환경에서 파일공유를 할경우 smb를 많이쓰기때문에 간혹(?) 쓰실일이 있으실거라 생각합니다 ㅎㅎ

SMB가 뭔지는.. sw 게시판에 추후에 기술하겠습니다.

간단하게 말하면 파일공유 프로토콜입니다.

구축환경

Ubuntu 20.04 LTS

SMB 설치하기

삼바를 설치하기전에 먼저 공유할 데이터 폴더를 만들도록하겠습니다.

mkdir /data && chmod 777 /data

 이제 apt 명령어를 통해 smb를 설치해주겠습니다.

apt install samba

삼바가 설치되었으면 service smbd status 명령어로 설치확인이 가능합니다.

우분투 삼바 설치 - ubuntu samba seolchi

설치가 된걸 확인했으니 이제 설정값을 넣어주겠습니다.

설정값은 /etc/samba/smb.conf 파일을 수정해주면 됩니다.

아래 폴더이름에는 네트워크에 노출될 드라이브명 path에는 공유할 경로를 넣어주시면됩니다.

[공유폴더이름]
   path = /data
   public = yes
   writable = yes
   valid users = dalso

설정값을 넣은 후에는 service smbd restart 로 재시작 시켜주면 적용됩니다.

SMB 유저 생성하기

이제  삼바를 사용할 유저를 생성해보겠습니다.

기본적으로 smb를 사용하기위해서는 리눅스의 계정도 필요하기때문에 리눅스 계정부터 차근차근 생성해주시면 됩니다.

useradd dalso

smbpasswd -a abc

우분투 삼바 설치 - ubuntu samba seolchi

WIndows에서 SMB 서버 접근하기

삼바의경우 139,445 포트를 사용하기때문에 방화벽 정책에서 오픈해주면 되고

\\ip 로 접근하면됩니다.

우분투 삼바 설치 - ubuntu samba seolchi

————————————————–

사이트 리뉴얼중입니다~

서버(Linux, ESXi), NAS(헤놀로지, ESXi 및 IT관련 정보, 기타 등등을 공유하는 커뮤니티 SVRFORUM을 새로 만들었습니다.
많은 가입(?) 부탁드립니다~
https://svrforum.com

이전글들은 모두 상단 메뉴의 Blog 글 모음에있습니다!

Mind Doodle

IT/Linux

리눅스(Linux) 삼바(Samba) 설치, 설정 및 사용법, 연결 방법

Mind Doodle 2021. 12. 23. 16:59

[ 환경 ]

테스트를 진행한 환경은 다음과 같고 OS에 따라서 명령어 입력방법이 달라질 수 있습니다.

* Server

- Virtual Box 6.1.30 ( Network Adapter : 어댑터에 브릿지 )

- Ubuntu 18.04 LTS (64 bit, kernel : 5.3.0-51-generic)

- Samba Server Version : 4.7.6 - Ubuntu

* Client (Windows)

- Windows 10

* Client (Linux)

- Virtual Box 6.1.30 ( Network Adapter : 어댑터에 브릿지 )

- Ubuntu 18.04 LTS (64 bit, kernel : 5.3.0-51-generic)

- Samba Client Version : 4.7.6 - Ubuntu

[ 내용 ]

1. 소개

Samba는 표준 윈도우즈(Windows)와 상호 작동하는 리눅스(Linux)와 유닉스(Unix)용 프로그램입니다.

GNU Licencse가 부여된 Free Software이며 SMB/CIFS 프로토콜을 사용하는 모든 클라이언트에서 안전하고 안정적으로 파일 및 인쇄 서비스를 이용할 수 있는 프로그램입니다.

SMB/CIFS 프로토콜 규격을 따를 경우 윈도우즈(Windows), 리눅스(Linux) 모든 Client에서 접근하여 이용할 수 있습니다.

SMB/CIFS 프로토콜은 마이크로소프트와 인텔이 윈도우즈 시스템이 다른 시스템의 디스크 또는 프린터 등 자원을 공유할 수 있도록 프로토콜을 개발하였는데 이 프로토콜이 SMB(Server Message Block)입니다.

현재 마이크로소프트에서는 SMB라는 이름보다는 좀 더 범위가 큰 CIFS(Common Internet File System)라는 프로토콜로 부르며 이 프로토콜은 SMB 프로토콜에 Lan Manager, NetBIOS 프로토콜까지 포함하고 있습니다.

2. 설치

Samba를 설치하기 위해서는 터미널상에서 다음과 같이 명령어를 입력하여 설치를 요청합니다.

sudo apt-get install samba

설치를 진행하게 되면 다음과 같은 메시지가 뜨게 되고 Y를 입력하여 설치를 진행합니다.

우분투 삼바 설치 - ubuntu samba seolchi

3. 설정

Samba의 실행하기 위해서는 다음과 같은 2가지 준비과정이 필요합니다.

  • 공유 계정 추가
  • 공유 Section 추가 (설정 파일 수정)

< 공유 계정 추가 >

Samba로 접근 가능한 계정을 생성합니다. 

기존에 사용하던 리눅스 계정으로 설정하여도 되지만 저는 따로 계정을 만들어서 추가하였습니다.

sudo adduser [공유할 계정]

저는 아래 사진과 같이 sambatest라는 test용 계정을 생성하였습니다.

- 예시

우분투 삼바 설치 - ubuntu samba seolchi

공유할 계정을 리눅스에 추가하게 되면 Samba에 공유할 계정을 등록하는 과정을 수행해야 합니다.

Samba에 계정을 등록하는 명령어는 다음과 같습니다. 

명령어를 입력하면 SMB 접근 비밀번호를 설정하게 됩니다.

sudo smbpasswd -a [공유할 계정]

- 예시

우분투 삼바 설치 - ubuntu samba seolchi

< 설정 파일 수정 >

다음 해야 할 과정은 Samba의 설정 파일을 수정하는 것입니다.

설정 파일은 다음과 같은 경로에 있습니다.

/etc/samba/smb.conf

여러 가지 옵션을 설정하여 조작할 수 있지만 저는 기본적인 파일 공유에 중점을 두고 작업을 진행하였습니다.

설정 파일에서 [ ] 로 표기된 것은 각 Section을 나누기 위한 것입니다.

[global], [profiles], [printers] 등등 여러 가지 Section이 있습니다.

[global] Section은 Samba 서버 전체에 대한 설정을 할 수 있습니다.

[global]
workgroup =
 [작업 그룹명]
server string = [Windows Network에서 보여줄 Samba 서버에 대한 설명.]
wins support = [Samba서버에서 nmbd 데몬이 wins 서버의 역할을 할 수 있는지 여부를 지정 ( yes | no )]
wins server = [wins 서버의 IP를 지정하는 옵션]
dns proxy = [nmbd 데몬이 wins 서버 역할을 하고 등록되지 않은 Net BIOS 이름을 찾아줄 때 DNS 서버를 사용하여 NetBIOS 이름을 찾아줄 것인지의 여부 ( yes | no )].
interfaces = [바인딩할 특정 인터페이스/네트워크, 인터페이스 이름 또는 IP주소/넷마스크]
   Samba 서버 서비스를 네트워크 인터페이스별 제공할 때 사용. 지정하지 않으면 모든 인터페이스.
   ( ex:  lo eth0 192.168.12.1/24 )
bind interfaces only = ['interfaces' 옵션을 사용 유무 ( yes | no )]
   interfaces 옵션의 네트워크에 대해서 바인딩. Samba가 방화벽으로 보호되지 않거나 방화벽 자체인 경우 사용하도록 설정하는 것이 좋으나 동적, 비 브로드캐스트 인터페이스의 경우 정확하게 동작하지 않을 수 있음.
log file = [Samba 각 시스템에 대해 별도의 로그 파일을 사용]
max log size = [개별 로그 파일의 크기 제한(KB)]
syslog only = [syslog를 통해서 로그를 기록 유무 (yes | no)]
syslog = [syslog에 기록하는 로그 레벨]
   syslog로 삼바 로그를 저장하기를 원한다면 다음 매개 변수를 높은 값으로 설정.
server role = [서버 모드]
   "standalone server", "member server", "classic primary domain controller", "classic backup domain controller", "active directory domain controller". 대부분 "standalone sever"나 "member server"로 사용.  "Active Directory 도메인 컨트롤러"로 실행하려면 데이터베이스를 지우고 새 도메인을 만들려면 먼저 "samba-tool 도메인 프로비저닝"을 실행해야 합니다.

다른 Section 같은 경우 해당 Section에 대해서만 설정 옵션이 적용됩니다.

이제부터 해야 할 작업은 앞에서 추가했던 계정에 대한 Section 설정을 추가해야 합니다. smb.conf 설정 파일 가장 아래 부분에 추가할 Section에 대한 설정 정보를 추가합니다.

설정 정보에 대한 옵션은 다음과 같습니다.

[공유할 Section 이름]
comment = [Section에 대한 간단한 설명]
path = [공유할 내부 디렉터리]
browsable =[공유 이름이 사용할 때 브라우징 옵션 ( yes | no )]
create mask = [파일 접근 권한을 설정, Default: 0744]
directory mask = [디렉터리 접근 권한을 설정, Default: 0755]
read only = [공유할 디렉터리를 읽기만 가능한지 지정 ( yes | no )]
writable = [공유할 디렉터리를 쓰기 가능한지 지정. read only와 반대되는 설정 ( yes | no )]
guest ok = [인증되지 않은 사용자의 접근 설정, public 옵션과 같다 ( yes | no )]
printable = [프린터 스풀 사용 여부]
valide user = [공유 디렉터리 접근 사용자 목록. (이 옵션이 없으면 모든 사용자가 접근 가능)]
write list = [그룹의 쓰기 기능 설정]

추가한 계정 하위 디렉터리 안에 다음과 공유할 폴더를 만들었습니다. ( /home/sambatest/share )

그리고나서 smb.conf 설정 파일에 다음과 같이 공유 Section의 정보를 입력하였습니다.

[share]
comment = samba test server
path = /home/sambatest/share
browsable = yes
create mask = 0770
directory mask = 0771
writable = yes
printable = no

- 예시

우분투 삼바 설치 - ubuntu samba seolchi

좀 더 자세한 설정에 대한 설명은 다음 사이트를 참고하시면 되겠습니다.

해당 버전에 맞는 man 페이지가 있으니 되도록이면 Samba 버전에 맞는 man 페이지로 접속하여 확인하시기 바랍니다.

https://www.samba.org/samba/docs/current/man-html/smb.conf.5.html

smb.conf

Name smb.conf — The configuration file for the Samba suite SYNOPSIS The smb.conf file is a configuration file for the Samba suite. smb.conf contains runtime configuration information for the Samba programs. The complete description of the file format and

www.samba.org

4. 실행

설정 파일을 다 수정했으면 다음 명령으로 Samba 서버를 재시작을 하여 변경한 설정이 반영이 되도록 합니다.

sudo service smbd restart

- 예시

우분투 삼바 설치 - ubuntu samba seolchi

5. Windows에서 Samba 연결

Windows 10에서 작업을 진행하였고 대부분의 Windows에서는 비슷하게 동작할 것으로 보입니다.

탐색기창에서 주소를 직접 입력하여 연결하는 방법이 있고 네트워크 드라이브를 추가/연결하여 접근하는 방법이 있습니다.

저는 네트워크 드라이브를 연결하여 사용하는 방법을 선호하는 편이라 먼저 네트워크 드라이브로 연결하는 방법을 설명하겠습니다.

Windows 탐색기를 실행한 후에 왼쪽 탐색 창을 보면 "네트워크"가 있습니다. 이 "네트워크"에 마우스 오른쪽 버튼을 클릭하여 메뉴를 활성화시키면 아래 사진처럼 메뉴가 나옵니다.

메뉴에서 네트워크 드라이브 연결을 클릭합니다.

우분투 삼바 설치 - ubuntu samba seolchi

그러면 다음과 같은 창이 활성화되고 네트워크 드라이브에 대한 정보를 입력할 수 있습니다.

저는 드라이브를 S드라이브로 지정했는데 사용자 편의대로 다른 드라이브로 수정이 가능합니다. (당연하지만 이미 사용 중인 드라이브는 사용할 수 없습니다.)

폴더란에는 다음과 같은 정보를 입력합니다.

\\[Samba 서버 IP 주소]\[Samba 공유 Section 이름]

저는 공유기에 DHCP로 할당받은 192.168.113.99 주소와 공유 Section 이름을 아래와 같이 입력하고 마침을 눌러 설정을 완료했습니다.

우분투 삼바 설치 - ubuntu samba seolchi
Windows 네트워크 드라이브 연결

처음 네트워크 드라이브를 연결할 때 아래와 같이 네트워크 자격 증명 입력 창이 뜨게 되는데 이때 입력하는 사용자 이름과 암호는 Samba 서버에 추가한 공유할 계정의 ID와 비밀번호를 입력하면 됩니다.

이후로 자격증명과정을 생략하고 접근을 하고자 한다면 내 자격증명 기억을 체크한 다음에 확인 버튼을 누릅니다.

우분투 삼바 설치 - ubuntu samba seolchi
Windows 네트워크 자격 증명 입력

네트워크 드라이브가 새로 생성되고 드라이브에 접근을 하게 되면 아래 그림과 같이 탐색기 창에서 사용이 가능합니다.

저는 임의로 test.txt라는 파일을 만들어 보았고 Samba 서버에 설정한 디렉터리에도 파일이 생성된 것을 확인할 수 있었습니다.

우분투 삼바 설치 - ubuntu samba seolchi
Windows 네트워크 드라이브
우분투 삼바 설치 - ubuntu samba seolchi
Samba 서버 공유폴더

추가적으로 탐색기창에서 주소를 입력하여 접근하고자 한다면 탐색기창 주소 입력란에 아래와 같이 입력하면 자격증명 창이 뜨면서 네트워크 드라이브 연결하는 것과 같이 접근할 수 있게 됩니다. 드라이브를 추가하지 않았기 때문에 네트워크 드라이브에 표시는 되지 않습니다.

\\[Samba 서버 IP 주소]\[Samba 설정한 공유 Section]

6. Linux(Ubuntu 에서 연결)

우분투에서 Samba 서버에 접근하기 위해서는 smbclient 프로그램이 필요합니다. 설치 명령어는 다음과 같습니다.

sudo apt-get install smbclient

- 예시

저는 별도로 VirtualBox에 가상머신을 추가하여 Ubuntu 18.04를 설치하고 그 다음에 smbclient를 설치하였습니다.

우분투 삼바 설치 - ubuntu samba seolchi

smbclient는 다음과 같은 옵션이 있습니다.

우분투 삼바 설치 - ubuntu samba seolchi

smbclient -L 명령으로 Host의 리스트를 확인 할 수 있습니다.

smbclient -L [호스트 주소]

- 예시

저는 위에서 만들었던 share : samba test server 라는 Comment가 달린 공유 Section이 확인 되었습니다.

우분투 삼바 설치 - ubuntu samba seolchi

Host의 공유 Section에 대한 이름이 확인이 되었다면 mount를 하여 Samba 서버의 공유 Section과 연결 시켜주는 작업이 필요합니다.

먼저 mount할 디렉터리를 생성합니다.

mkdir -p [mount할 디렉터리 명]

디렉터리를 생성하고 Samba 서버의 공유 Section과 mount를 합니다.

sudo mount -t cifs //[Samba 서버 IP 주소]/[공유 Section 명] [mount할 디렉터리] -o username=[Samba 서버 접근 ID] -o password=[Samba 서버 접근 ID의 Password]

'-t ' 옵션은 cifs 타입으로 mount를 하는 옵션으로 앞서 설명 했듯이 Samba는 SMB/CIFS 프로토콜의 Client로 접근이 가능합니다.

- 예시

저는 다음과 같이 share 라는 디렉터리를 만들고 mount를 하였습니다.

우분투 삼바 설치 - ubuntu samba seolchi

mount된 디렉터리를 umount 하기위해서는 다음과 같이 명령어를 입력합니다.

sudo umount [mount한 디렉터리]

위와 같은 방법으로 mount를 하면 재부팅을 할 경우에 mount가 유지되지 않습니다.

매번 mount를 하기 번거러울 수 있기때문에 부팅할 때 자동으로 mount를 시켜보도록 하겠습니다.

root 권한(sudo 명령어 등등.. )으로 fstab 파일을 수정해줍니다.

경로는 아래와 같고 추가할 내용은 mount 했던 정보들을 다음과 같은 규칙으로 입력합니다.

/etc/fstab

[ 추가 내용 ]
//[Samba 서버 IP 주소]/[공유 Section 명]   [mount할 디렉터리]   cifs    username=[Samba 서버 접근 ID],password=[Samba 서버 접근 ID의 Password]   0   0

- 예시

가장 아래 줄에 추가내용을 입력한 것입니다.

우분투 삼바 설치 - ubuntu samba seolchi

재부팅을 하게 되면 자동으로 Samba가 mount 된 것을 확인 할 수 있습니다.

7. Samba 서버 상태 확인

Samba 서버에서 현재 Samba의 버전 및 연결 상태를 확인하고자 할 때는 다음 명령어를 입력하여 확인이 가능합니다.

sudo smbstatus

제가 테스트하는 Windows PC로 연결된 상태에서 명령어를 입력하여 상태를 확인해 보았습니다.

- 예시

우분투 삼바 설치 - ubuntu samba seolchi

[ 참고 ]

https://www.samba.org/

Samba - opening windows to a wider world

Samba is the standard Windows interoperability suite of programs for Linux and Unix. Since 1992, Samba has provided secure, stable and fast file and print services for all clients using the SMB/CIFS protocol, such as all versions of DOS and Windows, OS/2,

www.samba.org