Samba#

SMB 是跨平台(Windows/Linux/macOS)最通用的網路檔案共享協定

SMB (Server Message Block) 在 Linux 上通常透過 Samba 軟體實作。它不僅支援單純的檔案傳輸,還支援使用者權限認證、印表機共享,甚至可以讓 Linux 加入 Windows 的 Active Directory (AD) 網域。相對於 NFS,SMB 在混合作業系統環境中具有更好的相容性與權限管理能力。

Install#

Samba 服務由 samba 套件提供,用戶端工具則為 smbclientcifs-utils

# 伺服器端安裝
$ sudo apt install samba

# 用戶端掛載工具
$ sudo apt install cifs-utils

Setting in up#

Configuration File#

Samba 的核心設定檔位於 /etc/samba/smb.conf,基本區段如下:

[MyShare]
   comment = Public Storage
   path = /home/samba/public
   writable = yes
   guest ok = no
   valid users = @smbgroup

Operate#

伺服器端:新增 Samba 使用者(需先有系統帳號)#

sudo smbpasswd -a username

伺服器端:重啟服務套用設定#

sudo systemctl restart smbd

用戶端:掛載共享目錄#

sudo mount -t cifs -o username= user / [server_ip] / [share_name] /mnt/smb

參數範例 (於 /etc/samba/smb.conf)說明
pathpath = /srv/samba/share共享路徑。指定實體硬碟上要分享的資料夾位置。
writablewritable = yes可寫入。允許具備權限的使用者在上傳、修改或刪除檔案。
browsablebrowsable = yes可瀏覽。是否在網路芳鄰中公開顯示此資料夾名稱。
guest okguest ok = yes訪客存取。允許無需帳號密碼的匿名存取(安全性較低)。
valid usersvalid users = john, @devs限定用戶。僅允許特定帳號或群組(@開頭)進入。
read onlyread only = yes唯讀模式。即使檔案系統有權限,透過網路也只能讀取。
指令功能詳細解釋
testparm檢查語法掃描 /etc/samba/smb.conf 是否有語法錯誤或不合規設定。
smbstatus查看連線狀態列出目前有哪些用戶端連線到伺服器,以及正在存取的檔案。
smbpasswd密碼管理專用於管理 Samba 獨立的加密密碼庫,可新增、刪除或停用用戶。
smbclient -L <ip>列出共享資源從用戶端視角查詢遠端伺服器開放了哪些共享資料夾。

Reference#

Official docs: