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 分享資源需要同時通過:

  1. SAMBA 設定檔權限smb.conf 中的 valid userswrite list 等)
  2. Linux 檔案系統權限(傳統 rwx)
  3. SELinux 規則(需設定正確的 type)

三者取最嚴格的結果。

設定檔結構#

主設定檔為 /etc/samba/smb.conf

  • [global]:伺服器整體參數(工作群組、字元編碼、驗證方式)
  • [分享名稱]:各分享資源的路徑、權限、可存取使用者等

字元編碼#

跨平台環境中,編碼設定至關重要。需正確設定 unix charsetdos charsetdisplay charset,否則中文檔名會出現亂碼。

用戶端工具#

  • smbclient:查詢分享資源、以 FTP 語法進行檔案操作
  • mount.cifs:將遠端分享掛載為本機目錄
  • smbstatus:查看目前連線狀態

在混合 Linux/Windows 環境中,SAMBA 是最成熟的跨平台檔案共享方案。但若環境純 Linux,NFS 的效能和管理便利性通常更佳。