Samba是在Linux和UNIX系統上實現 SMB / CIFS 協議的開源軟件,主要用于局域網內的文件共享和打印服務。Samba通過SMB/CIFS協議實現跨平臺資源共享,支持匿名用戶和本地用戶訪問共享目錄,客戶端主要為Windows系統。其核心進程包括:
- ?smbd?:負責共享目錄權限控制、文件傳輸(TCP端口139/445)。
- ?nmbd?:基于 NetBIOS 協議進行主機名解析(UDP端口137/138)。
sambd安裝及配置
1.安裝sambd:
# 更新軟件包列表
sudo apt update# 安裝 Samba 服務
sudo apt-get install samba samba-common# 檢查安裝是否成功,出現active (running)表示已啟動服務
sudo systemctl status smbd nmbd
2.創建共享文件夾
mkdir /home/my_name/win-share
sudo chmod 777 /home/my_name/win-share
3.修改samba配置文件
#備份
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.bak#編輯
sudo vim /etc/samba/smb.conf
文件末尾輸入:
[share]comment = Shared folder between Ubuntu and Windowspath = /home/my_name/win-sharebrowsable = yeswritable = yesvalid users = my_nameforce user = my_nameforce group = my_nameavailable = yesread only = noguest ok = no
; public = yescreate mask = 0777directory mask = 0777
[share]:Windows 中顯示的共享名稱。
comment:共享描述
path:共享目錄的絕對路徑
browsable:是否允許在 Windows 網絡中被發現
writable:是否允許用戶對共享目錄進行寫入操作(創建 / 修改 / 刪除文件)
valid users:限制只有指定用戶可以訪問該共享,多個用戶用逗號分隔(如user1,user2)
force user:強制將所有訪問該共享的操作都以用戶的身份執行
force group:強制將所有訪問該共享的操作歸屬到用戶組
available:該共享資源是否可用
read only:與writable作用類似,no表示關閉只讀模式(允許寫入),通常與writable = yes配合使用。
guest ok:是否允許匿名訪問
public:等價于guest ok(注釋未使用)
create mask:定義在共享目錄中新建文件的默認權限
directory mask:定義在共享目錄中新建文件夾的默認權限
驗證配置文件語法
# 輸出Loaded services file OK. 表示配置語法正確
testparm
4.設置密碼認證
# 設置密碼
sudo smbpasswd -a my_name# 啟用用戶
sudo smbpasswd -e my_name
5.重啟Samba
sudo service smbd restart
或
sudo systemctl restart smbd
6.Windows下映射網絡驅動器
IP為Ubuntu的IP地址,share為smb.conf文件中增加的[]中名稱。
Ubuntu設置靜態IP
防止DHCP改變IP的情況下需要重新映射網絡驅動器。
DNS必須設置,禁用IPV6,設置好后重啟生效。
其他相關命令
1.新安裝Ubuntu默認防火墻是關閉的,不需要設置
# 允許 Samba 服務通過防火墻
sudo ufw allow samba
# 重啟防火墻使配置生效
sudo ufw reload
# 驗證規則是否添加成功
sudo ufw status
2.設置開機自啟
sudo systemctl enable smbd
3.刪除samba用戶
sudo smbpasswd -x 用戶名
Win11版本 24H2可能的錯誤0x80070035和0x80070043
管理員身份運行PowerShell:
Set-SmbClientConfiguration -RequireSecuritySignature $falseSet-SmbServerConfiguration -RequireSecuritySignature $false
控制面板→程序→啟用或關閉Windows功能→勾選SMB 1.0/CIFS 文件共享支持。