SMB(Server Message Block,服務資訊塊)又稱CIFS(Common Internet File System,通用Internet檔案系統),是一種應用層網路傳輸協定。微軟公司和英特爾公司於1987年共同制定了SMB,旨在解決區域網內的檔案或印表機等資源的共用問題。Samba是一款基於SMB/CIFS協定的開源軟體,通過簡單的設定就能夠實現Linux作業系統與Windows作業系統之間的檔案共用。
Samba由smbd和nmbd兩個守護行程組成,採用伺服器端/使用者端模式。smbd程序除了為使用者端提供檔案共用與印表機服務,還負責使用者許可權驗證以及鎖功能。smbd預設監聽的埠是TCP協定的139與445,Samba通過smb服務啟動smbd程序,使用netstat -nutlp可檢視程序埠資訊。nmbd程序提供NetBIOS名稱服務,以滿足基於Common Internet File System(CIFS)協定的共用存取環境。Samba通過nmb服務啟動nmbd程序,該程序預設使用是UDP 137埠。
一、部署samba伺服器端
1、安裝samba。
yum -y install samba
2、備份samba主組態檔(可選操作)。
cp -a /etc/samba/smb.conf /etc/samba/smb.conf.bak
3、建立共用目錄並修改目錄許可權。
mkdir /samba
chmod -Rf 777 /samba
4、編輯samba主組態檔/etc/samba/smb.conf,新增如下資訊。
[samba]
comment = samba share
path = /samba
public = no
writable = yes
guest ok = no
5、使用命令pdbedit建立用於存取共用資源的使用者資訊資料庫。
groupadd samba -g 3000
useradd lw -u 4000 -g 3000 -s /sbin/nologin
pdbedit -a lw
說明:
-u 4000:指定使用者ID為4000。
-g 3000:指定使用者的所屬組ID為3000,指定的組必須先於使用者建立。
-s /sbin/nologin:指定用登入的shell。
pdbedit命令用於管理SMB服務程式的使用者資訊資料庫,常用引數及作用如下所示:
-a:建立Samba使用者。
-x:刪除Samba使用者。
-u:指定本地使用者。
-L:列出使用者列表。
-Lv:列出使用者詳細資訊的列表。
7、重新啟動smb服務並將其加入開機啟動。
systemctl restart smb
systemctl enable smb
二、部署Windows 10使用者端
1、使用\192.168.10.10存取samba共用目錄,出現如下錯誤提示,是因為沒有關閉或設定Linux防火牆。
2、設定或關閉Linux防火牆。
firewall-cmd --permanent --add-service=samba #預設區域新增samba服務
firewall-cmd --reload #重新載入防火牆
或
systemctl stop firewalld #關閉防火牆
systemctl disable firewalld #禁用防火牆
3、使用\192.168.10.10存取samba共用目錄,在彈出的視窗中輸入samba伺服器中建立的使用者名稱和密碼,單擊確定進入。
4、雙擊共用目錄(samba),出現沒有許可權存取的錯誤提示。
5、檢視並設定與samba相關的selinux boolean(布林值)。
getsebool -a | grep samba #檢視與samba相關的selinux Boolean
setsebool samba_export_all_ro=on #開啟唯讀許可權
setsebool samba_export_all_rw=on #開啟讀寫許可權
6、雙擊共用目錄(samba),進入目錄建立目錄和檔案。
7、依次開啟「此電腦–計算機–對映網路驅動器–對映網路驅動器。
8、選擇驅動器編號(X:)、資料夾(\192.168.10.10\samba),然後單擊完成。