** 이글루스에 있던 글.
하도 예전에 쓴 글(2017년)이고, 게다가 삼바를 사용하지 않아서 이게 지금까지도 먹힐런지는 모르겠다.
다소 복잡하게 써놔서, 간단하게 다시 정리해본다.
smb.conf 에 다음 내용을 추가한다.
max protocol = SMB3 min protocol = SMB2_10 client max protocol = SMB3 client min protocol = SMB2_10
MS 윈도우와 사용한다면 인증이 없이도 잘 된다. 그러나 Android Total Commander 와 사용하려면 인증이 있어야만 한다.
smbpasswd 와 현재 사용자로 비밀번호를 생성한다.
$ sudo smbpasswd -a userX
Android Total Commander 에서, 기존에 저 서버로 사용하던 설정이 있다면 지우고, 새 설정을 만들어 UserID, Password 를 넣고, smb2 를 사용하게 설정한다. (기존 설정에 UserID 등을 추가하면 제대로 작동하지 않는다.)
끝!
지난 번 Wannacry때문에 Samba 에도 smb1 을 사용하지 말고 smb2 이상을 사용해야 한다는 의견이 많았다.
사용법은 아주 간단한데, smb.conf
에 한 줄 (또는 몇 줄)만 추가해주면 된다.
문제는 이게 아니고, 이렇게 했을 때 사용할 수 있는 OS 에 제한이 생겨버린다.
- Linux : DE 파일매니저(노틸러스, 돌핀 등등)로는 접근이 불가능하다. 단, smbclient 로는 가능하다. (smbmount 도 되겠지?)
- Windows : 아무 문제 없다. (당연하겠지?)
- Android : Total Commander 로 가능하긴 한데, 여기엔 약간 신경써야 할 부분이 있다.
macOS 로는 아직 안해봐서 모르겠다.
리눅스 문제는 Samba 가 아닌 nfs 를 사용하면 되므로, 큰 문제는 아니라고 할 수 있다.
정 필요하다면 smbmount 를 하면 될 것으로 보인다. (안 해봐서 확실하진 않다.)
참고로, smbclient 는 다음 형식으로 사용한다.
$ smbclient -U=username '\\IP주소\디렉토리명'
MS 윈도우에서는 아무 문제없이 연결이 되므로 신경쓸 게 없다.
이 글의 목적은 Android, 그것도 Total Commander 에 있다.
Total Commander 의 LAN plugin 3.0 이상부터는 smb2 프로토콜을 지원한다.
** 여기서부터 아래쪽으로는 내용이 확인되지 않았다.
그런데.. 삼바 서버의 상태(?)에 따라서, 원활히 작동할 때도 있고, 안될 때도 있다.
간단히 정리한다.
- Ubuntu Server 16.04 / Samba 4.3.11 – T.C LAN plugin 으로 접속 불가.
- Ubuntu Server 17.10 / Samba 4.6.7 – T.C LAN plugin 으로 접속 가능.
- Debian Server Stretch / Samba 4.5.12 – T.C LAN plugin 으로 접속 가능.
- ** Ubuntu Server 16.04 / Samba 4.6.7 – T.C LAN plugin 으로 접속 불가.
우분투 16.04 에서 제공하는 삼바를 사용했을 때는 T.C 에서 접속 불가. PPA 는 없지만, 17.10 에 있는 삼바 꾸러미를 모두 설치하여 16.04 에서 삼바를 4.6.7 로 올렸을 때도 역시 접속 불가. (왜 안되는 걸까? 단지 삼바만의 문제가 아니란 건가.. 의존성이 걸린 꾸러미를 모두 올려줬음에도 안되는 이유는 뭘까?)
온전히 사용하려면 우분투 17.10 이나 데비안 스트레치를 사용해야 한다.
여기서 또 하나 문제가 되는 게, Armbian 은 아직까지 Ubuntu 16.04 와 Debian Jessie 에 머물고 있단 점이다. Raspbian 은 Stretch 로 이미 넘어갔는데..
어쨌든, 더 이상 내가 해볼 수 있는 건 없다. ^^
** 여기까지.
위와 같이 헛짓, 이른바 헛삽질을 했으나, 결론은 엉뚱한 곳에서 찾을 수 있었다. 그래도 답을 찾을 수 있었단 게 어디야.
다음과 같은 가정을 생각해보자.
- 이전에 Samba 서버에서 smb1 을 인증없이 사용하고 있었고, 이 서버에 Android 기기에서 T.C 를 사용해서 연결하고 있다. T.C 설정 이름은 ‘ToSamba’ 이다.
- Samba 서버 설정(smb.conf)을 smb2 로 사용하게끔 바꿨고, smb2 이상은 반드시 인증이 필요하기에, smbpasswd 로 비밀번호를 생성했다.
- T.C 에서 ‘ToSamba’ 설정을 열고, 이전엔 비어있던 사용자명/비번을 넣고, smb2 를 선택해줬다.
1. 상황에서는 아무 문제없이 연결이 된다.
하지만 2. 를 하고, 3을 마친 뒤 T.C 에서 삼바 서버로 연결을 하려하면, 오류가 발생하면서 연결이 되지 않는다.
그래서, 위와 같은 엉뚱한 결론을 냈었다.
왜 그런 건지는 모르지만, 아마도 새로 넣은 ID/PW 가 서버로 제대로 전달이 되지 않고, 이전 정보가 그대로 넘어가는 듯 하다. 아마도 T.C 의 버그가 아닐런지. (이건 개발자에게 보고를 할 예정이니 나중에 결과를 이 글에 반영하도록 하자.)
따라서, 원 설정을 지우고 새 설정을 생성해주면 아무런 문제없이 잘 작동한다.
마지막으로, smb2 를 사용하려면 ‘반드시’ 인증 절차를 거쳐야 한다.
그렇다고 해서 smb.conf 에 특정 사용자를 추가해줘야 할 필요는 없다. 그냥, smbpasswd 를 사용해서 삼바 사용자와 비밀번호만 만들어 주면 된다.
$ sudo smbpasswd -a userid
공부가 부족해서 정확하게는 알 수가 없지만, 위에서 사용한 userid 는 가공 ID가 아닌, 반드시 리눅스 머신에 실제로 존재하는 ID 여야 한다.
혼자 쓸 거라면 그냥 사용자ID(sudo 권한이 있는)를 사용해도 무방하다.
아니면, 아래에 있는 글처럼 사용자를 추가하고(useradd), 그 사용자에게 smbpasswd 를 사용해서 삼바 계정을 주는 방법도 있다.
인증이 필요하다고 해서, smb.conf 에 read only = no / public = yes 등을 쓸 수 없는 건 아니다.
즉, 그냥 아무 제한도 없는 공유 디렉토리도 사용할 수는 있다. 다만, 거기에 접근할 비밀번호가 있어야 할 뿐이다.
이건 아마 smb2 의 설계 자체가 그렇게 되어 있는 것 같다.
따라서, T.C Lan 설정에도 반드시 id/pw 를 넣어줘야 한다.
그리고, 확실한 건 아닌데, smb2 보다는 smb2_10 으로 해줘야 T.C 에서 접속이 되는 듯 하다.
[global] workgroup = WORKGROUP server string = Samba Server %v netbios name = xxyyzz security = user map to guest = bad user dns proxy = no max protocol = SMB3 min protocol = SMB2_10 client max protocol = SMB3 client min protocol = SMB2_10 #============================ Share Definitions ============================== # 이렇게 제한없는 공유 디렉토리를 만들 수도 있다. [Not_Secured] read only = no public = yes path = /var/non_secured # 아래와 같이, 사용자 abcdefg 만 접근할 수 있는 디렉토리를 만들 수도 있다. [S_Secured] path = /var/Samba valid users = abcdefg (사용자 ID) guest ok = no writable = yes browsable = yes
이 정도면 정리가 됐으려나.
Samba 서버 설정에 대해선 다음 글들을 참고했다.
여기서, smbpasswd 를 사용할 때, 꼭 임의의 사용자(위 첫번째 글에서 나오는 ’till’)라든가, 삼바 사용자 그룹(smbgrp)을 만들지는 않아도 된다. 그냥 현재 사용 중인 사용자ID를 넣어줘도 된다.