안녕하세요. 달소입니다. Show 오늘은 Ubuntu 20에서 파일공유를 위한 SMB 서버를 직접 구축해보도록하겠습니다. 회사나 기타 윈도우 환경에서 파일공유를 할경우 smb를 많이쓰기때문에 간혹(?) 쓰실일이 있으실거라 생각합니다 ㅎㅎ SMB가 뭔지는.. sw 게시판에 추후에 기술하겠습니다. 간단하게 말하면 파일공유 프로토콜입니다. 구축환경Ubuntu 20.04 LTS SMB 설치하기삼바를 설치하기전에 먼저 공유할 데이터 폴더를 만들도록하겠습니다. mkdir /data && chmod 777 /data 이제 apt 명령어를 통해 smb를 설치해주겠습니다. apt install samba 삼바가 설치되었으면 service smbd status 명령어로 설치확인이 가능합니다. 설치가 된걸 확인했으니 이제 설정값을 넣어주겠습니다. 설정값은 /etc/samba/smb.conf 파일을 수정해주면 됩니다. 아래 폴더이름에는 네트워크에 노출될 드라이브명 path에는 공유할 경로를 넣어주시면됩니다. [공유폴더이름] 설정값을 넣은 후에는 service smbd restart 로 재시작 시켜주면 적용됩니다. SMB 유저 생성하기이제 삼바를 사용할 유저를 생성해보겠습니다. 기본적으로 smb를 사용하기위해서는 리눅스의 계정도 필요하기때문에 리눅스 계정부터 차근차근 생성해주시면 됩니다. useradd dalso smbpasswd -a abc WIndows에서 SMB 서버 접근하기삼바의경우 139,445 포트를 사용하기때문에 방화벽 정책에서 오픈해주면 되고 \\ip 로 접근하면됩니다. ————————————————– 사이트 리뉴얼중입니다~ 서버(Linux, ESXi), NAS(헤놀로지, ESXi 및 IT관련 정보, 기타 등등을 공유하는 커뮤니티 SVRFORUM을 새로 만들었습니다. 이전글들은 모두 상단 메뉴의 Blog 글 모음에있습니다! Mind DoodleIT/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를 입력하여 설치를 진행합니다. 3. 설정Samba의 실행하기 위해서는 다음과 같은 2가지 준비과정이 필요합니다.
< 공유 계정 추가 >Samba로 접근 가능한 계정을 생성합니다. 기존에 사용하던 리눅스 계정으로 설정하여도 되지만 저는 따로 계정을 만들어서 추가하였습니다. sudo adduser [공유할 계정] 저는 아래 사진과 같이 sambatest라는 test용 계정을 생성하였습니다. - 예시 공유할 계정을 리눅스에 추가하게 되면 Samba에 공유할 계정을 등록하는 과정을 수행해야 합니다. Samba에 계정을 등록하는 명령어는 다음과 같습니다. 명령어를 입력하면 SMB 접근 비밀번호를 설정하게 됩니다. sudo smbpasswd -a [공유할 계정] - 예시 < 설정 파일 수정 >다음 해야 할 과정은 Samba의 설정 파일을 수정하는 것입니다. 설정 파일은 다음과 같은 경로에 있습니다. /etc/samba/smb.conf 여러 가지 옵션을 설정하여 조작할 수 있지만 저는 기본적인 파일 공유에 중점을 두고 작업을 진행하였습니다. 설정 파일에서 [ ] 로 표기된 것은 각 Section을 나누기 위한 것입니다. [global], [profiles], [printers] 등등 여러 가지 Section이 있습니다. [global] Section은 Samba 서버 전체에 대한 설정을 할 수 있습니다. [global] 다른 Section 같은 경우 해당 Section에 대해서만 설정 옵션이 적용됩니다. 이제부터 해야 할 작업은 앞에서 추가했던 계정에 대한 Section 설정을 추가해야 합니다. smb.conf 설정 파일 가장 아래 부분에 추가할 Section에 대한 설정 정보를 추가합니다. 설정 정보에 대한 옵션은 다음과 같습니다. [공유할 Section 이름] 추가한 계정 하위 디렉터리 안에 다음과 공유할 폴더를 만들었습니다. ( /home/sambatest/share ) 그리고나서 smb.conf 설정 파일에 다음과 같이 공유 Section의 정보를 입력하였습니다. [share] - 예시 좀 더 자세한 설정에 대한 설명은 다음 사이트를 참고하시면 되겠습니다. 해당 버전에 맞는 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 - 예시 5. Windows에서 Samba 연결Windows 10에서 작업을 진행하였고 대부분의 Windows에서는 비슷하게 동작할 것으로 보입니다. 탐색기창에서 주소를 직접 입력하여 연결하는 방법이 있고 네트워크 드라이브를 추가/연결하여 접근하는 방법이 있습니다. 저는 네트워크 드라이브를 연결하여 사용하는 방법을 선호하는 편이라 먼저 네트워크 드라이브로 연결하는 방법을 설명하겠습니다. Windows 탐색기를 실행한 후에 왼쪽 탐색 창을 보면 "네트워크"가 있습니다. 이 "네트워크"에 마우스 오른쪽 버튼을 클릭하여 메뉴를 활성화시키면 아래 사진처럼 메뉴가 나옵니다. 메뉴에서 네트워크 드라이브 연결을 클릭합니다. 그러면 다음과 같은 창이 활성화되고 네트워크 드라이브에 대한 정보를 입력할 수 있습니다. 저는 드라이브를 S드라이브로 지정했는데 사용자 편의대로 다른 드라이브로 수정이 가능합니다. (당연하지만 이미 사용 중인 드라이브는 사용할 수 없습니다.) 폴더란에는 다음과 같은 정보를 입력합니다. \\[Samba 서버 IP 주소]\[Samba 공유 Section 이름] 저는 공유기에 DHCP로 할당받은 192.168.113.99 주소와 공유 Section 이름을 아래와 같이 입력하고 마침을 눌러 설정을 완료했습니다. Windows 네트워크 드라이브 연결처음 네트워크 드라이브를 연결할 때 아래와 같이 네트워크 자격 증명 입력 창이 뜨게 되는데 이때 입력하는 사용자 이름과 암호는 Samba 서버에 추가한 공유할 계정의 ID와 비밀번호를 입력하면 됩니다. 이후로 자격증명과정을 생략하고 접근을 하고자 한다면 내 자격증명 기억을 체크한 다음에 확인 버튼을 누릅니다. Windows 네트워크 자격 증명 입력네트워크 드라이브가 새로 생성되고 드라이브에 접근을 하게 되면 아래 그림과 같이 탐색기 창에서 사용이 가능합니다. 저는 임의로 test.txt라는 파일을 만들어 보았고 Samba 서버에 설정한 디렉터리에도 파일이 생성된 것을 확인할 수 있었습니다. Windows 네트워크 드라이브 Samba 서버 공유폴더추가적으로 탐색기창에서 주소를 입력하여 접근하고자 한다면 탐색기창 주소 입력란에 아래와 같이 입력하면 자격증명 창이 뜨면서 네트워크 드라이브 연결하는 것과 같이 접근할 수 있게 됩니다. 드라이브를 추가하지 않았기 때문에 네트워크 드라이브에 표시는 되지 않습니다. \\[Samba 서버 IP 주소]\[Samba 설정한 공유 Section] 6. Linux(Ubuntu 에서 연결)우분투에서 Samba 서버에 접근하기 위해서는 smbclient 프로그램이 필요합니다. 설치 명령어는 다음과 같습니다. sudo apt-get install smbclient - 예시 저는 별도로 VirtualBox에 가상머신을 추가하여 Ubuntu 18.04를 설치하고 그 다음에 smbclient를 설치하였습니다. smbclient는 다음과 같은 옵션이 있습니다. smbclient -L 명령으로 Host의 리스트를 확인 할 수 있습니다. smbclient -L [호스트 주소] - 예시 저는 위에서 만들었던 share : samba test server 라는 Comment가 달린 공유 Section이 확인 되었습니다. 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를 하였습니다. mount된 디렉터리를 umount 하기위해서는 다음과 같이 명령어를 입력합니다. sudo umount [mount한 디렉터리] 위와 같은 방법으로 mount를 하면 재부팅을 할 경우에 mount가 유지되지 않습니다. 매번 mount를 하기 번거러울 수 있기때문에 부팅할 때 자동으로 mount를 시켜보도록 하겠습니다. root 권한(sudo 명령어 등등.. )으로 fstab 파일을 수정해줍니다. 경로는 아래와 같고 추가할 내용은 mount 했던 정보들을 다음과 같은 규칙으로 입력합니다. /etc/fstab - 예시 가장 아래 줄에 추가내용을 입력한 것입니다. 재부팅을 하게 되면 자동으로 Samba가 mount 된 것을 확인 할 수 있습니다. 7. Samba 서버 상태 확인Samba 서버에서 현재 Samba의 버전 및 연결 상태를 확인하고자 할 때는 다음 명령어를 입력하여 확인이 가능합니다. sudo smbstatus 제가 테스트하는 Windows PC로 연결된 상태에서 명령어를 입력하여 상태를 확인해 보았습니다. - 예시 [ 참고 ]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 |