Contents

一分鐘使用 Docker 架設 Samba 區網檔案分享

簡介

Samba 讓 Linux 與 Windows 系統之間能夠輕鬆共享檔案與印表機。透過 Docker 容器化方式部署 Samba,我們可以在短短一分鐘內完成設定,無需複雜的配置步驟。

快速安裝

Warning

您組織的安全性原則封鎖了未經驗證的訪客存取,所以您無法存取此共用資料夾。
在 Windows 10 或 11 遇到可以參考的這篇文章

沒有騙人,一分鐘設定完成。以下是設定公開資料夾(不需要帳號密碼)的指令:

1
2
3
4
5
6
7
docker run -it --name samba \
-p 139:139 \
-p 445:445 \
-v /home/pi/samba:/mount \
-d dperson/samba -p \
-u "publicUser;password" \ # 因為 Windows 安全性關係,建議設定一組共用帳號
-s "public;/mount;yes;no;yes"  

參數說明

Docker Samba 容器的主要參數:

  • -p 139:139 -p 445:445:開放 Samba 服務所需的標準連接埠
  • -v /home/pi/samba:/mount:將主機上的 /home/pi/samba 資料夾掛載到容器的 /mount 目錄
  • -p:設定 Samba 使用密碼功能
  • -s:指定共享資料夾設定,格式為 -s "<名稱;路徑;可瀏覽;唯讀;訪客許可;使用者;管理員;寫入清單;註解>"

設定公開與私人資料夾

如果要同時設定公開和私人資料夾,可以使用以下指令:

1
2
3
4
5
6
7
8
9
docker run -it --name samba \
-p 139:139 \
-p 445:445 \
-v /home/pi/samba:/mnt/samba \
-v /tmp:/tmp \
-d dperson/samba -p \
-u "jeffery;password" \
-s "public;/tmp;yes;no;yes" \
-s "private;/mnt/samba;yes;no;no;jeffery;;;個人檔案"  

參數解析

-s 參數的完整格式:
-s "<name;/path>[;browse;readonly;guest;users;admins;writelist;comment]"

各參數說明:

  • name:共享資料夾名稱
  • /path:容器內的路徑
  • browse:是否允許瀏覽 (yes/no)
  • readonly:是否唯讀 (yes/no)
  • guest:是否允許訪客存取 (yes/no)
  • users:允許存取的使用者清單
  • admins:管理員使用者清單
  • writelist:允許寫入的使用者清單
  • comment:共享資料夾說明

深入了解 Samba 訪客設定

在 Samba 中,訪客存取有不同的安全等級控制。透過 Docker 容器,我們可以檢視其設定:

1
2
3
docker exec -it samba bash
cd /etc/samba/
less smb.conf

訪客存取類型

Samba 的 map to guest 參數是控制非驗證使用者如何處理的關鍵:

  • Never:不自動將登入失敗的使用者變成訪客
  • Bad User:使用者名稱正確但密碼錯誤時,才自動轉為訪客
  • Bad Password:任何密碼錯誤都自動轉為訪客

較新版本的 Samba 建議使用 map to guest = Bad User 設定,這樣可以增加安全性。惡意程式嘗試測試帳號時,都會被導向訪客帳號,難以判斷嘗試是否成功。

連線方式

設定完成後,可以在 Windows 檔案總管地址列輸入以下格式連線:

1
\\你的伺服器IP\public

例如:\\192.168.1.203\public

常見問題排解

無法連線

如果遇到無法連線的問題,可能是 Windows 已經儲存了舊的連線資訊,可以嘗試以下方法:

  1. 登出目前使用者並重新登入
  2. 或使用命令提示字元輸入下列指令清除現有連線:
1
net use * /delete
  1. 確認防火牆設定是否允許 139 及 445 連接埠通訊

進階 Samba 設定範例

以下是一個密碼保護資料夾的設定範例:

1
2
3
4
5
6
7
[Password Protected]
        comment = 需要使用者名稱和密碼才能存取
        path = /samba/password_protected_directory
        valid users = @sambausergroup
        guest ok = no
        writable = yes
        browsable = yes

只要在 Docker 容器設定中加入類似設定,即可建立更多樣化的檔案共享環境。


有了 Docker Samba,檔案共享變得更加簡單快速。無論是家庭網路還是小型辦公環境,都能輕鬆實現跨平台檔案存取!

相關文章

彩蛋