1.1 Samba 概述
Samba主要用于Windows和Linux之間的檔案共享,也一樣用于Linux和Linux之間的共享檔案;不過對于Linux和Linux之間共享檔案有更好的網絡檔案系統NFS,NFS也是需要架設伺服器的。我們可以通過samba架設一個功能非常強大的檔案伺服器,也可以将其架設成列印伺服器提供本地和遠端聯機列印,甚至我們可以使用samba Server完全取代NT/2K/2K3中的域控制器,做域管理工作,使用也非常友善。
1.2 Samba 應用環境
檔案和列印機共享:檔案和列印機共享是Samba 的主要功能,SMB 程序實作資源共享,将檔案和列印機釋出到網絡之中,以供使用者可以通路。身份驗證和權限設定:smbd服務支援user mode和domain mode等身份驗證和權限設定模式,通過加密方式可以保護共享的檔案和列印機。
名稱解析:Samba通過nmbd服務可以搭建NBNS(NetBIOS Name Service)伺服器,提供名稱解析,将計算機的NetBIOS 名解析為IP 位址。
浏覽服務:區域網路中,Samba 伺服器可以成為本地主浏覽伺服器(LMB),儲存可用資源清單,當使用用戶端通路Windows 網路上的芳鄰時,會提供浏覽清單,顯示共享目錄、列印機等資源。
1.3 Samba 工作原理
Samba服務功能強大,這與其通信基于SMB協定有關。SMB不僅提供目錄和列印機共享,還支援認證、權限設定。在早期,SMB 運作于NBT 協定(NetBIOS over TCP/IP )上,使用UDP 協定的137、138 及TCP 協定的139 端口,後期SMB 經過開發,可以直接運作于TCP/IP 協定上,沒有額外的NBT 層,使用TCP 協定的445 端口。
(1)Samba 工作流程
當用戶端通路伺服器時,資訊通過SMB 協定進行傳輸,其工作過程可以分成四個步驟:
步驟 1:協定協商
用戶端在通路 Samba 伺服器時,發送negprot 指令資料包,告知目标計算機其支援的SMB類型。Samba 伺服器根據用戶端的情況,選擇最優的SMB 類型,并做出回應。
--------negprot 請求------->
用戶端 伺服器
<--------negprot 響應------
步驟 2:建立連接配接
當SMB類型确認後,用戶端會發送session setup指令資料包,送出帳号和密碼,請求與Samba伺服器建立連接配接,如果用戶端通過身份驗證,Samba伺服器會對session setup封包作出回應,并為
使用者配置設定唯一的UID,在用戶端與其通信時使用。
--------session setup &X 請求------->
用戶端 伺服器
<--------session setup &X 響應-------
步驟 3:通路共享資源
用戶端通路Samba共享資源時,發送tree connect指令資料包,通知伺服器需要通路的共享資源名,如果設定允許,Samba伺服器會為每個用戶端與共享資源連接配接配置設定TID, 用戶端即可通路需要的共享資源。
--------tree connect &X 請求------->
用戶端 伺服器
<--------tree connect &X 響應-------
步驟 4:斷開連接配接
共享使用完畢,用戶端向伺服器發送tree disconnect封包關閉共享,與伺服器斷開連接配接。
--------tree disconnect 請求------->
用戶端 伺服器
<--------tree disconnect 響應-------
(2)Samba 相關程序
Samba服務是由兩個程序組成,分别是nmbd 和smbd。
nmbd:其功能是進行NetBIOS名解析(通過主機名進行通路),并提供浏覽服務顯示網絡上的共享資源清單。port:137 138
smbd:其主要功能就是用來管理Samba伺服器上的共享目錄、列印機等,主要是針對網絡上的共享資源進行管理的服務。當要通路伺服器時,要查找共享檔案,這時我們就要依靠smbd這個程序來管理資料傳輸(通過IP進行通路)。port:139 445 。現在一般都是使用smbd 來通路samba服務。nmbd服務可以不用啟動。