SAMBA 的角色#
SAMBA 讓 Linux 與 Windows 之間可以進行檔案與印表機共享,解決異質平台間的互通問題。它實作了 SMB/CIFS 協定,使 Linux 主機能出現在 Windows 的「網路芳鄰」中。
技術基礎:NetBIOS over TCP/IP#
SAMBA 架構於 NetBIOS 通訊協定之上。NetBIOS 原為 IBM 設計的區域網路協定,無法跨越路由器。透過「NetBIOS over TCP/IP」技術將其封裝在 TCP/IP 之中,克服跨網段限制。
核心服務程式#
- nmbd:管理工作群組、NetBIOS 名稱解析(UDP 137、138)
- smbd:管理分享目錄、檔案與印表機的存取權限(TCP 139、445)
連線模式#
Peer/Peer(對等模式)#
各電腦地位相等,各自獨立管理帳號密碼。適合小型環境,但管理不便。
Domain Model(主控模式)#
由 PDC(Primary Domain Controller)統一管理帳號密碼。使用者在任何電腦上用同一組帳密登入即可取得相同資源。適合人員流動頻繁的企業環境。
密碼驗證機制#
- share:無需密碼,安全性最低,僅用於測試
- user:使用 SAMBA 自身的密碼資料庫驗證(與 Linux 系統密碼獨立)
- domain:委託外部伺服器(如 AD)進行驗證
SAMBA 使用者必須同時存在於 Linux 系統中。帳號在
/etc/passwd,但密碼存在 SAMBA 專用資料庫,兩者獨立管理。
權限控制的多層機制#
存取 SAMBA 分享資源需要同時通過:
- SAMBA 設定檔權限(
smb.conf中的valid users、write list等) - Linux 檔案系統權限(傳統 rwx)
- SELinux 規則(需設定正確的 type)
三者取最嚴格的結果。
設定檔結構#
主設定檔為 /etc/samba/smb.conf:
- [global]:伺服器整體參數(工作群組、字元編碼、驗證方式)
- [分享名稱]:各分享資源的路徑、權限、可存取使用者等
字元編碼#
跨平台環境中,編碼設定至關重要。需正確設定 unix charset、dos charset、display charset,否則中文檔名會出現亂碼。
用戶端工具#
- smbclient:查詢分享資源、以 FTP 語法進行檔案操作
- mount.cifs:將遠端分享掛載為本機目錄
- smbstatus:查看目前連線狀態
在混合 Linux/Windows 環境中,SAMBA 是最成熟的跨平台檔案共享方案。但若環境純 Linux,NFS 的效能和管理便利性通常更佳。