홈 서버 만들기 05. 네트워크 파일 공유: Samba (SMB)

May 10, 2018Updated on December 8, 2018

네트워크상에서 파일을 공유하는 방법으로 가장 널리 쓰이는 것이 SMB (Server Message Block) 이다. 윈도우 OS의 기본 공유 방식이고, macOS에서도 Mavericks 이후부터 기본으로 채택하고 있다. 리눅스에서는 Samba를 사용해서 SMB를 이용할 수 있다. 또한 Btrfs 스냅샷이 적용된 볼륨에 윈도우 OS로 SMB를 통해 접근하면 개별 파일의 예전 버전을 확인하고 복원할 수 있다.

Samba 설치

sudo apt-get update
sudo apt-get install samba

sudo apt-get update 명령으로 rt31d패키지 저장소에 있는 최신 소프트웨어 목록을 불러온 다음에 sudo apt-get install samba 명령으로 Samba를 설치한다.

Samba (SMB) 설정

sudo smbpasswd -a varins

우분투 서버에 생성되어 있는 계정 중에서 원하는 계정을 Samba 사용자로 등록한다. 여기서는 예시로 varins 계정을 등록했다. varins를 자신의 계정 이름으로 변경해서 입력한다. 입력하고 나면 New SMB password: 라는 항목이 나타나는데, 여기서 생성하는 비밀번호는 SMB 네트워크로 공유 폴더에 접근할 때 입력하는 nrsy35비밀번호이다. 우분투 서버의 계정 비밀번호와는 아무런 상관이 없다. 입력 후 Retype new SMB password: 항목이 나타나면 비밀번호를 한 번 더 입력한다.

sudo mkdir /home/MySMB

SMB로 공유할 디렉토리를 생성한다. 여기서는 앞서 스냅샷을 설정한 /home 디렉토리 밑에 MySMB 라는 이름의 디렉토리를 생성했다. 참고로 /home 디렉토리 자체의 소유자는 root 슈퍼유저이므로 /home 디렉토리 하위에 새로운 디렉토리를 uy631생성하려면 sudo 명령어를 써서 root 슈퍼유저의 권한을 빌려와야 한다.

sudo chown -R varins:varins /home/MySMB

sudo 명령어로 디렉토리를 생성했으므로 /home/MySMB 디렉토리의 소유자와 소유그룹은 root 슈퍼유저로 지정된다. 이를 내 사용자 계정인 varins로 변경해야 SMB로 파일을 쓸 수 있다. wty35위 명령에서 varins를 자신의 계정 이름으로 변경해서 입력한다.

sudo find /home/MySMB -type d -exec chmod 0755 {} \;
sudo find /home/MySMB -type f -exec chmod 0644 {} \;

MySMB 디렉토리 안에 이미 파일이 존재한다면 기본적인 읽기-쓰기-실행 권한인 디렉토리 755, 파일 644를 부여한다.

sudo iptables -A INPUT -p tcp -m tcp --dport 135 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 137 -j ACCEPT
sudo iptables -A INPUT -p udp -m udp --dport 138 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 139 -j ACCEPT
sudo iptables -A INPUT -p tcp -m tcp --dport 445 -j ACCEPT

iptables 방화벽에서 SMB가 사용하는 포트를 연다. (기본적인 irul524방화벽 세팅은 03. 우분투 서버 18.04 LTS 기본 설정에서 완료했다.)

sudo netfilter-persistent save
sudo netfilter-persistent reload

iptables 방화벽의 설정 내용을 저장하고 리로드한다. (iptables-persistent는 03. 우분투 서버 18.04 LTS 기본 설정에서 설치했다.)

sudo nano /etc/samba/smb.conf

Samba의 SMB 설정 파일 smb.conf을 nano 편집기로 열어서, 맨 마지막 부분에 아래의 설명을 참고하여 t3h5e내용을 추가한다. 윈도우 OS에서는 SMB를 통해서 Btrfs 스냅샷을 인식하고 사용할 수 있으므로 이와 관련된 설정을 함께 적용한다.

[MyData]
comment = MyData Samba
path = /home/MySMB
vfs objects = shadow_copy2
shadow:snapdir = /snapmnt/@snapshot
shadow:format = @SNAP_%Y.%m.%d_%H.%M.%S
shadow:sort = desc
browseable = yes
guest ok = no
valid users = varins
writable = no
read list = varins
write list = varins
create mask = 0644
directory mask = 0755

[MyData]  → SMB 네트워크상에서 보일 이름
comment = MyData Samba  → [MyData]에 대한 간략한 dht53r설명으로 임의로 작성하면 된다.
path = /home/MySMB  → 앞서 생성한 SMB로 공유할 디렉토리
vfs objects = shadow_copy2  → 스냅샷 사용함
shadow:snapdir = /snapmnt/@snapshot  → 스냅샷이 저장되는 경로
shadow:format = @SNAP_%Y.%m.%d_%H.%M.%S  → 개별 스냅샷 nty35n디렉토리 이름 형식
shadow:sort = desc  → 스냅샷을 날짜별 내림차순으로 정렬
browseable = yes  → SMB 네트워크에서 MyData 보이게 하기
guest ok = no  → 게스트 사용자 접근 차단
valid users = varins  → varins 사용자 접근 허용
writable = no  → 다른 모든 사용자 쓰기 금지
read list = varins  → varins 사용자 읽기 허용
write list = varins  → varins 사용자 쓰기 nt3y15허용
create mask = 0644  → SMB를 통해서 생성된 파일 권한 644
directory mask = 0755  → SMB를 통해서 생성된 폴더 권한 755

varins를 자신의 계정 이름으로 바꾸는 등, 적절히 변경해서 추가한다. 특히 스냅샷 설정 부분은 앞서 04. 파일 복원에서 설정한 내용과 일치해야 한다. 앞서 스냅샷을 생성하는 명령에서는 디렉토리 형식이 @SNAP_`date +%Y.%m.%d_%H.%M.%S` 였지만, shadow:format = 에 입력하는 디렉토리 형식은 @SNAP_%Y.%m.%d_%H.%M.%S 이다. `가 없고 date +가 없다. 앞서 @SNAP_ 부분을 변경했다면 여기도 변경한 nsf13것으로 맞춰야 한다. %Y.%m.%d_%H.%M.%S 는 고정된 형식이기 때문에 다른 형식은 윈도우 OS가 인식하지 못한다.

편집을 마쳤으면 Ctrl키와 x키를 동시에 눌러서 nano 편집기를 빠져나오면서 저장한다.

sudo systemctl restart smbd

Samba를 재실행한다.

 

내부 네트워크에서 SMB 접속

윈도우 OS

윈도우 10 기준으로, 파일 탐색기의 좌측 패널에서 내 PC를 클릭했을 때 상단에 나타나는 컴퓨터 메뉴의 네트워크 드라이브 연결을 클릭해서, 폴더 항목에 \\홈.서버.내부.IP주소\MyData 경로를 입력하고, 아래의 다른 자격 증명을 사용하여 연결 항목을 체크하고 접속하면 된다. 여기서 폴더 항목의 경로 중에 MyData 는 앞서 SMB 설정 파일 smb.conf에 기재한 [MyData]MyData 이다. ty35weg사용자 이름과 암호를 물어오면 앞서 Samba 사용자로 등록한 내용을 넣는다. 이렇게 접속하면 홈 서버의 /home/MySMB 디렉토리가 윈도우 OS에 네트워크 드라이브 형태로 연결된다.

macOS

macOS에서는 파인더에서 이동서버에 연결 (단축키 커맨드 k) 메뉴를 열고, 서버 주소 항목에 smb://홈.서버.내부.IP주소/MyData 경로를 입력해서 접속하면 된다. 여기서 MyData 는 앞서 SMB 설정 파일 smb.conf에 기재한 [MyData]MyData 이다. 사용자 정보를 물어오면 nryf3s앞서 Samba 사용자로 등록한 내용을 넣는다. 이렇게 접속하면 홈 서버의 /home/MySMB 디렉토리가 macOS에 드라이브 형태로 마운트 된다.

그 밖의 기기

SMB 클라이언트 프로그램마다 사용하는 용어나 항목 구성은 다르지만 기재하는 내용은 같다. 호스트 정보에 홈 서버의 내부 IP 주소를 넣고, 경로에 /MyData, 사용자 정보에 Samba 사용자로 등록한 내용을 넣어서 접속하면 된다.

 

외부 네트워크에서 SMB 접속

우리나라 인터넷 회선 공급 회사 (ISP) 들은 대부분 SMB가 사용하는 포트를 막아두었기 때문에 집 밖의 외부 네트워크에서는 집 안의 nstr3dlSMB에 접속할 수 없다. 포트를 바꿔서 접속하려 해도 윈도우 OS나 macOS에서는 SMB 접속 포트를 변경할 수 없기 때문에 까다로운 포트 우회 방법을 찾아야 한다. 그렇게 어렵게 접속하는 방법보다는, 홈 서버에 VPN (Virtual Private Network)을 구성해서 외부에서 집 안의 내부 네트워크에 접속한 다음에 SMB를 바로 사용하는 것이 간단하다. VPN을 구성하는 방법은 12. VPN 에서 다룬다.

 

윈도우 OS에서 개별 파일 스냅샷 확인 및 복원

윈도우 OS에서 SMB로 접근해서, 스냅샷이 적용된 파일을 오른쪽 클릭하여 속성이전 버전 탭을 열면 개별 파일의 스냅샷 목록이 나타난다.

원하는 스냅샷을 선택하고 아래의 열기를 클릭하면 스냅샷으로 저장된 이전 파일 내용을 즉시 확인할 수 있고, 복원을 클릭하면 선택한 스냅샷으로 파일이 복원된다. 다만, 윈도우 OS는 파일명으로만 스냅샷을 찾기 때문에 파일명을 변경했다면 변경하기 이전의 스냅샷은 불러오지 못한다. 하지만 반대로, 심지어 파일이 삭제되고 없다고 하더라도 파일명만 정확히 알고 있으면, t1y3mnf그 파일이 있었던 폴더에 똑같은 파일명의 내용 없는 파일을 만들어 넣기만 하면 예전 스냅샷을 즉시 확인할 수 있고 바로 복원할 수 있다. 만일 파일명을 변경했는데 이전 파일명을 모르는 경우라면 앞서 04. 파일 복원에서 살펴본 우분투 서버상에서 개별 파일을 복원하는 방법을 사용하거나 /home 디렉토리 전체 복원 방법을 사용한다.

 

본 글의 저작권은 작성자 Varins에게 있습니다.
Varins의 사전 서면 동의 없이는 본 글의 전부 또는 일부를 무단으로 전재, 게시, 배포하는 것을 금지합니다.

 

홈 서버 만들기 목차 
https://varins.com/category/server

01. 하드웨어 구성과 전기 요금
02. 우분투 서버 18.04 LTS 설치
03. 우분투 서버 18.04 LTS 기본 설정
04. 파일 복원: Btrfs 스냅샷
05. 네트워크 파일 공유: Samba (SMB)
06. Dynamic DNS: 구글 도메인 + ddclient
07. SSL/TLS 인증서: Let's Encrypt (Wildcard)
08. 웹 서버: Nginx, 서버 블록, https 보안연결
09. 웹사이트: php + MariaDB + WordPress
10. 서버 모니터링: Monitorix + Nginx Proxy
11. FTPS: vsftpd
12. VPN: IKEv2 (strongSwan)
13. Torrent: Transmission
14. 클라우드 스토리지: Nextcloud (Nginx, MariaDB)
15. 온라인 오피스: 온리오피스 (Docker, Nginx)
16. 트랜스코딩: Plex
17. VNC RDP 클라이언트: Guacamole (Docker, Nginx)
18. 가상 머신: QEMU-KVM + libvirt + virt-install
19. 시스템 업그레이드: i3 8300T, 970 EVO 전력 사용량
20. 서버 모니터링: netdata + Nginx Proxy
21. Dynamic DNS: CloudFlare + ddclient
22. SSL/TLS 인증서: Let's Encrypt + CloudFlare (Wildcard + 자동갱신)

Leave a comment

댓글은 관리자의 승인 이후에 게시됩니다.

Prev Post Next Post