Samba 是 Linux/Unix 與 Windows 互通檔案與列印服務的標準實作,基於 SMB/CIFS 協定。本文系統整理 Samba 核心架構、進程角色、埠號、套件、配置檔結構、使用者管理、客戶端存取、掛載與 SELinux 整合,並提供可直接落地的實戰範例。
| 項目 | 說明 |
|---|---|
| 協定全名 | SMB (Service Message Block) / CIFS (Common Internet File System) |
| 核心進程 | smbd(檔案/列印共享)、nmbd(NetBIOS 名稱解析/廣播)、winbindd(AD 域整合,預設不啟動) |
| 關鍵埠 | 137/138 UDP (NetBIOS)、139 TCP (NetBIOS over TCP)、445 TCP (SMB over TCP/IP) |
| 主要套件 | samba(伺服器端)、samba-swat(Web 管理介面) |
| 配置檔 | /etc/samba/smb.conf、啟動腳本 /etc/init.d/smb |
smb.conf 關鍵段落解析[global]
workgroup = WORKGROUP
security = user # 使用者級驗證(share/user/domain/server/ads)
passdb backend = tdbsam # 密碼資料庫後端
; interfaces = lo eth0 192.168.12.2/24
; hosts allow = 127. 192.168.12.
log file = /var/log/samba/%m.log
max log size = 50
[homes]
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
smbpasswd 實戰Samba 使用者必須先存在於系統帳號(/etc/passwd),再加入 Samba 密碼資料庫:
useradd zoe
smbpasswd -a zoe # 新增並設定密碼
smbpasswd -x zoe # 刪除
smbpasswd -d zoe # 暫時停用
smbpasswd -e zoe # 啟用
驗證配置語法:testparm(按 Enter 顯示生效設定)。
[share]/etc/samba/smb.conf 尾端新增:[share]
comment = my share folder
path = /sharing
browseable = Yes
guest ok = Yes
writable = Yes
testparm 檢查無誤mkdir /sharingchcon -R -t samba_share_t /sharing/ (SELinux 標籤,關鍵步驟)setfacl -m u:zoe:rwx /sharing (ACL 精細授權)service smb restartWindows 客戶端即可透過「網路鄰居」或 \\IP\share 存取。
smbclient -L //192.168.0.3/share -U zoe%redhat(列出共享)smbclient //192.168.0.3/share -U zoe%redhat(進入類 FTP 操作環境,支援 ls, get, put, mkdir 等指令)cifs-utils):mount -t cifs //192.168.0.73/share /mnt -o username=redhat[share] 區段加入:hosts allow = 192.168.12.(限制網段)write list = @penguin(僅群組成員可寫)write list = zoe(僅特定使用者可寫)檢視 Samba 相關布林值:
getsebool -a | grep samba
常見需開啟的值:
samba_enable_home_dirs=on:允許共享使用者家目錄samba_export_all_rw=on:允許匯出讀寫目錄(不受標籤限制)samba_export_all_ro=on:允許匯出唯讀目錄永久生效:setsebool -P samba_enable_home_dirs=1(-P 寫入磁碟)
Samba 配置核心在於:安全模式選擇(security)、密碼後端(passdb backend)、共享定義(path/browseable/writable/guest ok)、系統帳號與 Samba 密碼同步、SELinux 標籤與布林值。掌握這五點,即能應對 90% 的跨平台檔案共享需求。