Samba 設定:Linux 與 Windows 檔案共享
在混合作業系統環境中,Linux 伺服器與 Windows 工作站之間的檔案協作是極其常見的需求。Samba 作為開放原始碼的標準解決方案,透過實作 SMB/CIFS 通訊協定,讓 Linux 系統能夠無縫融入 Windows 網路環境。這篇文章將帶領您逐步在 Ubuntu 22.04 或 Debian 12 上架設 Samba 服務,建立一個安全且實用的檔案共享目錄。
安裝與基本配置
首先,我們需要安裝 Samba 套件。在終端機中執行以下指令:
sudo apt update
sudo apt install samba samba-common-bin
安裝完成後,Samba 服務通常會自動啟動。為了確保它在開機時自動運行,請執行:
sudo systemctl enable --now smbd nmbd
這裡的 smbd 負責檔案與列印服務,而 nmbd 則處理 NetBIOS 名稱解析,讓 Windows 用戶端更容易發現您的 Linux 主機。
建立共享目錄與權限
假設我們希望建立一個名為 shared 的目錄,供內部團隊共同存取。我們將其放置在 /srv/samba 下,這是 Linux 系統中存放伺服器資料的標準位置。
sudo mkdir -p /srv/samba/shared
接下來,設定目錄的所有者與權限。為了讓 Samba 用戶端能夠正常讀寫,建議將目錄的所有者設為 root,但將群組設為 sambashare,並賦予群組寫入權限:
sudo chown root:sambashare /srv/samba/shared
sudo chmod 2775 /srv/samba/shared
這裡的 2775 權限碼中,2 代表 setgid 位元,確保新建立的檔案會繼承父目錄的群組屬性,這對於協作環境至關重要。
編輯 Samba 設定檔
主要的設定檔位於 /etc/samba/smb.conf。在編輯之前,建議先備份原始檔:
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak
使用您偏好的編輯器(如 nano 或 vim)打開設定檔:
sudo nano /etc/samba/smb.conf
在檔案末尾加入以下區塊,定義我們的共享資源:
[shared]
comment = Team Shared Folder
path = /srv/samba/shared
browseable = yes
read only = no
guest ok = no
valid users = @sambashare
create mask = 0660
directory mask = 0770
參數說明:
valid users:限制只有sambashare群組的成員才能存取。guest ok = no:禁止匿名存取,強制要求身份驗證,提升安全性。create mask與directory mask:控制新檔案與目錄的預設權限。
設定 Samba 用戶密碼
由於我們設定了 guest ok = no,因此必須為 Linux 系統使用者設定 Samba 密碼。請確保該使用者已加入 sambashare 群組:
sudo usermod -aG sambashare your_username
接著,為該使用者設定 Samba 密碼:
sudo smbpasswd -a your_username
系統會提示您輸入兩次密碼。設定完成後,重新啟動 Samba 服務以套用變更:
sudo systemctl restart smbd nmbd
防火牆設定
如果您啟用了 ufw 防火牆,需要允許 SMB 流量通過:
sudo ufw allow samba
這會自動開放 TCP 139、445 和 UDP 137、138 埠口。
常見問題排查
1. Windows 無法連線或提示密碼錯誤
這通常是因為密碼不同步或帳號未正確加入群組所致。請確認 Linux 端使用者確實存在於 sambashare 群組中,並嘗試重新執行 smbpasswd。此外,Windows 10/11 可能預設禁用不安全的 Guest 登入,請在 Windows 註冊機中檢查 LanManWorkstation 的相關設定。
2. 檔案權限異常,無法編輯
若建立的新檔案無法被其他成員編輯,請檢查 create mask 與 directory mask 的設定。確保 Samba 設定檔中的權限與 Linux 檔案系統權限一致。您可以使用 ls -l /srv/samba/shared 檢查實際權限,並確認使用者確實屬於 sambashare 群組。
小結
透過上述步驟,您已成功在 Ubuntu 或 Debian 上架設了基本的 Samba 檔案共享服務。現在,您可以透過 Windows 檔案總管輸入 \\your_linux_ip\shared 來存取共享資料夾。雖然此設定適合小型團隊或個人使用,但在生產環境中,建議進一步結合 LDAP 或 Active Directory 進行集中式帳號管理,並定期審計存取日誌以確保資安。Samba 的強大彈性使其成為跨平台協作的理想選擇,掌握其核心配置將為您的系統管理帶來極大的便利。