[RHEL5企業級Linux服務攻略]–第2季Samba服務全攻略

技術小美發表於2017-11-11
1 Samba原理 

1.1 Samba概述
接觸Linux我們聽的最多的就是Samba服務,為什麼Samba應用這麼廣泛哈~,原因是Samba最先在Linux和Windows兩個平臺之間架起了一座橋樑哈,正是由於Samba的出現,我們可以在Linux系統和Windows系統之間互相通訊,比如拷貝檔案、實現不同作業系統之間的資源共享等等,我們可以將其架設成一個功能非常強大的檔案伺服器,也可以將其架設成列印伺服器提供本地和遠端聯機列印,甚至我們可以使用samba Server完全取代NT/2K/2K3中的域控制器,做域管理工作,使用也非常方便滴哈~既然samba這樣滴強大哈,我們還不趕快來把玩一下哈~~~
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名解析,並提供瀏覽服務顯示網路上的共享資源列表。
smbd:其主要功能就是用來管理Samba伺服器上的共享目錄、印表機等,主要是針對網路上的共享資源進行管理的服務。當要訪問伺服器時,要查詢共享檔案,這時我們就要依靠smbd這個程式來管理資料傳輸哈~~~
2 安裝Samba服務 

2.1 Samba所需軟體
在我們安裝Samba服務之前哈,我們先來了解一下其所需要的軟體包以及它們的用途哈~
samba-3.0.25b-0.el5.4.i386.rpm:該包為Samba服務的主程式包。伺服器必須安裝該軟體包,後面的數字為版本號(我們安裝時使用的是RHEL5.1DVD版,如果是RHEL5.1CD版則該軟體包位於第二張RHEL5安裝光碟上)。
samba-client-3.0.25b-0.el5.4.i386.rpm:該包為Samba的客戶端工具,是連線伺服器和連線網路上的芳鄰的客戶端工具幷包含其測試工具(該軟體包位於第一張RHEL5安裝光碟哈~)
samba-common-3.0.25b-0.el5.4.i386.rpm:該包存放的是通用的工具和庫檔案,無論是伺服器還是客戶端都需要安裝該軟體包(這個軟體包也位於第一張RHEL5安裝光碟哈~)
samba-swat-3.0.25b-0.el5.4.i386.rpm:當安裝了這個包以後,就可以通過瀏覽器(比如IE等哈)來對Samba伺服器進行圖形化管理(這個軟體包位於第三張RHEL5安裝光碟哈)。
image 
2.2 Samba的安裝
建議在安裝Samba服務之前,使用rpm -qa命令檢測系統是否安裝了Samba相關性軟體包:rpm -qa |grep samba
image
如果系統還沒有安裝Samba軟體包,我們可以使用rpm命令安裝所需軟體包。
安裝Samba主程式包:rpm -ivh samba-3.0.25b-0.el5.4.i386.rpm
image
其他軟體包的安裝方法也一樣哈~
安裝Samba客戶端工具:rpm -ivh samba-client-3.0.25b-0.el5.4.i386.rpm
提示已經安裝過了哈~
image
安裝Samba通用工具和庫檔案:rpm -ivh samba-common-3.0.25b-0.el5.4.i386.rpm
image
其實我們一開始rpm qa |grep samba命令查詢時已經發現客戶端工具和通用工具及庫檔案已經安裝了哈,我們上面兩步安裝就可以不要執行了哈,偶主要是演示一下哈~
最後我們安裝Samba圖形化管理工具:rpm -ivh samba-swat-3.0.25b-0.el5.4.i386.rpm
image
我們發現缺少xinetd,OK,那我們安裝一下哈~:rpm -ivh xinetd-2.3.14-10.el5.i386.rpm
image
現在我們再來安裝Samba圖形化管理工具:rpm -ivh samba-swat-3.0.25b-0.el5.4.i386.rpm
image
現在我們看到Samba圖形化管理工具安裝成功了哈~
所有軟體包安裝完畢之後,我們可以使用rpm命令進行查詢哈:rpm -qa | grep samba
image
3 Samba常規伺服器配置  
在Samba服務安裝完畢之後,並不是直接可以使用Windows或Linux的客戶端訪問Samba伺服器哈,我們還必須對伺服器進行設定,下面需要做的操作就是說我們要告訴Samba伺服器將哪些目錄共享出來給客戶端進行訪問,並根據需要設定其他選項哈,比如新增對共享目錄內容的簡單描述資訊和訪問許可權等具體設定。
作為我們Linux系統工程師瞭解及熟悉Samba伺服器的搭建流程是至關重要滴。 基本的Samba伺服器的搭建流程主要分為四個步驟:
[1]、編輯主配置檔案smb.conf,指定需要共享的目錄,併為共享目錄設定共享許可權。
[2]、在smb.conf檔案中指定日誌檔名稱和存放路徑。
[3]、設定共享目錄的本地系統許可權。
[4]、重新載入配置檔案或重新啟動smb服務,使用配置生效哈~
為了更好地理解設定流程中每一步的作用,下面通過一個圖例進行講解哈~
Samba工作流程:
              ———(1)———>                  ———-(2)———->smb.conf主配置檔案
[客戶端]                                  [Samba伺服器]
              ——– (4)———->                 ———-(3)———->日誌檔案
(1)客戶端請求訪問Samba伺服器上的Share共享目錄。
(2) Samba伺服器接收到請求後,會查詢主配置檔案smb.conf,看是否共享了Share目錄,如果共享了這個目錄則檢視客戶端是否有許可權訪問。
(3)Samba伺服器會將本次訪問資訊記錄在日誌檔案之中,日誌檔案的名稱和路徑都是需要我們設定。
(4)如果客戶端滿足訪問許可權設定,則允許客戶端進行訪問。
實際上,Samba伺服器和我們的圖書館有點相似之處哈,圖書館為讀者共享了圖書資源,而Samba伺服器共享了我們的檔案資料哈。
圖書館會有圖書分類,比如科普類、文學類等,並且圖書館會對借閱的圖書做限制,擁有資格的讀者,才可以借閱相應的圖書,當然讀者訪問圖書館時,圖書管理員會對他們的瀏覽、借閱資訊進行記錄。
對於Samba伺服器來說,其主配置檔案smb.conf記錄了共享的目錄列表。比如share目錄,temp目錄等。對於每個共享目錄,需要配置相應許可權,伺服器會根據smb.conf檔案中的設定,判斷客戶端是否有許可權訪問,只有擁有許可權才可以訪問伺服器的資源。Samba伺服器同樣會對使用者的行為進行記錄,每一次訪問的資訊都會記錄在日誌檔案中,以便我們Linux管理員查詢哪些客戶端訪問過Samba伺服器。
我們大致講了Samba工作流程後,下面我們將對Samba具體配置過程中遇到的重要概念進行詳細講解哈~~
3.1 主要配置檔案smb.conf
我們先從最重要的配置檔案開始哦,Samba的配置檔案一般就放在/etc/samba目錄中,主配置檔名為smb.conf。如果把Samba伺服器比喻成一個公共圖書館,那麼/etc/samba目錄中,那麼主配置檔案/etc/samba/smb.conf檔案,就相當於這個圖書館的圖書總目錄,記錄著大量的共享資訊和規則,所以該檔案是samba服務非常重要的核心配置檔案哈,幾乎絕大部分的配置檔案都在該檔案中進行滴。此外,在smb.conf這個配置文件中本身就含有非常豐富的說明哈,所以在我們配置之前可以先看一下這樣說明性的文字。
我們先看一下smb.conf這個檔案哈:vim /etc/samba/smb.conf
image
 image
smb.conf配置檔案有288行內容,配置也相對比較複雜哈,不過我們不用擔心,Samba開發組按照功能不同,對smb.conf檔案進行了分段劃分,條理非常地清楚哈。
下面我們來具體看下smb.conf的內容哈,smb.conf大致分為三個部分,我們來了解一下,其中我們經常要使用到的欄位,我們將以例項解釋,其他欄位我們整理到欄位彙總,有興趣的可以去看下哈~~
1、samba配置簡介
smb.conf檔案的開頭部分為samba配置簡介,告訴我們smb.conf檔案的作用及相關資訊。
image
smb.conf中以“#”開頭的為註釋,為使用者提供相關的配置解釋資訊,方便使用者參考,不用修改它哈。
smb.conf中還有以“;”開頭滴,這些都是samba配置的格式範例,預設是不生效滴,可以通過去掉前面的“;”並加以修改來設定想使用的功能。
 2、Global Settings
Global Settings設定為全域性變數區域。那什麼是全域性變數哈?全域性變數就是說我們只要在global時進行設定,那麼該設定專案就是針對所有共享資源生效滴。這與以後我們學習的很多伺服器配置檔案相似哈。
該部分以[global]開始:
image
smb.conf配置通用格式,對相應功能進行設定:欄位=設定值 
下面我們說下[global]常用欄位及設定方法:
1)設定工作組或域名稱
工作組是網路中地位平等的一組計算機,可以通過設定workgroup欄位來對samba伺服器所在工作組或域名進行設定。
我們設定samba伺服器的工作組為RHEL5
image
2)伺服器描述
伺服器描述實際上類似於備註資訊哈,在一個工作組中,可能存在多臺伺服器,為了方便使用者瀏覽,我們可以在server string配置相應描述資訊,這樣使用者就可以通過描述資訊知道自己要登入哪臺伺服器了啊~
我們設定samba描述資訊為“RHEL5 File Server”。
image
3)設定samba伺服器安全模式
samba伺服器有share、user、server、domain和ads 五種安全模式,用來適應不同的企業伺服器需求。
image
(1)share安全級別模式
客戶端登入samba伺服器,不需要輸入使用者名稱和密碼就可以瀏覽samba伺服器的資源,適用於公共的共享資源,安全性差,需要配合其他許可權設定,保證samba伺服器的安全性。
(2)user安全級別模式
客戶端登入samba伺服器,需要提交合法帳號和密碼,經過伺服器驗證才可以訪問共享資源,伺服器預設為此級別模式。
(3)server安全級別模式
客戶端需要將使用者名稱和密碼,提交到指定的一臺samba伺服器上進行驗證,如果驗證出現錯誤,客戶端會用user級別訪問。
(4)domain安全級別模式
如果samba伺服器加入windows域環境中,驗證工作服將由windows域控制器負責,domain級別的samba伺服器只是成為域的成員客戶端,並不具備伺服器的特性,samba早期的版本就是使用此級別登入windows域滴。
(5)ads安全級別模式
當samba伺服器使用ads安全級別加入到windows域環境中,其就具備了domain安全級別模式中所有的功能並可以具備域控制器的功能。
3、Share Definitions共享服務的定義
Share Definitions設定物件為共享目錄和印表機,如果我們想釋出共享資源,需要對Share Definitions部分進行配置。Share Definitions欄位非常豐富,設定靈活。
image
我們先來講下幾個最常用的欄位哈~
1)設定共享名
共享資源釋出後,必須為每個共享目錄或印表機設定不同的共享名,給網路使用者訪問時使用,並且共享名可以與原目錄名不同。
共享名設定非常簡單:[共享名]
我們來看個例子,Samba伺服器中有個目錄為/share,需要釋出該目錄成為共享目錄,定義共享名為public
image
2)共享資源描述
網路中存在各種共享資源,為了方便使用者識別,可以為其新增備註資訊,以方便使用者檢視時知道共享資源的內容是什麼哈。
格式:comment = 備註資訊
舉個例子哈,samba伺服器上有個/sales目錄存放公司銷售部的資料,為了對公司部門員工進行區分,可以新增備註資訊。
image
3)共享路徑
共享資源的原始完整路徑,可以使用path欄位進行釋出,務必正確指定。
格式:path =  絕對地址路徑
samba伺服器上/share/tools目錄存放常用工具軟體,需要釋出該目錄為共享,我們可以這樣做。
image
4)設定匿名訪問
共享資源如果對匿名訪問進行設定,可以更改public欄位。
格式:
public = yes     #允許匿名訪問
public = no      #禁止匿名訪問
samba伺服器/share共享目錄允許匿名使用者訪問,可以這樣設定。
image
5)設定訪問使用者
如果共享資源存在重要資料的話,需要對訪問使用者稽核,我們可以使用valid users欄位進行設定哈~
格式:
valid users = 使用者名稱
valid users = @組名
我們來看下面一個例子哈,samba伺服器/share/tech目錄存放了公司技術部資料,只允許技術部員工和經理訪問,技術部組為tech,經理帳號為gm
image
6)設定目錄只讀
共享目錄如果限制使用者的讀寫操作,我們可以通過readonly實現哈~
格式:
readonly = yes    #只讀
readonly = no     #讀寫
samba伺服器公共目錄/public存放大量共享資料,為保證目錄安全我們只允許讀取,禁止寫入哈~
image
7)設定目錄可寫
如果共享目錄允許使用者寫操作,可以使用writable或write list兩個欄位進行設定哈~
writable格式:
writable = yes      #讀寫
writable = no       #只讀
write list格式:
write list = 使用者名稱
write list = @組名
image
注意:
[homes]為特殊共享目錄,表示使用者主目錄。
[printers]表示共享印表機。
3.2 Samba服務日誌檔案
日誌檔案對於samba非常滴重要哈,它儲存著客戶端訪問samba伺服器的資訊,以及samba服務的錯誤提示資訊等,可以通過分析日誌,幫助解決客戶端訪問和伺服器維護等問題。
在/etc/samba/smb.conf檔案中,log file為設定samba日誌的欄位。
image
samba服務的日誌檔案預設存放在/var/log/samba/中,其中samba會為每個連線到samba伺服器的計算機分別建立日誌檔案。
我們啟動smb服務:/etc/rc.d/init.d/smb start
使用ls -a命令可以檢視日誌的所有檔案。
image
其中,當samba伺服器剛剛建立好後,只有兩個檔案,分別是nmbd.logsmbd.log,它們分別記錄nmbd和smbd程式的執行日誌。
nmbd.log記錄nmbd程式的解析資訊。 

smbd.log記錄使用者訪問samba伺服器的問題,以及伺服器本身的錯誤資訊,可以通過該檔案獲得大部分的samba維護資訊。
當客戶端通過網路訪問samba伺服器後,會自動新增客戶端的相關日誌。
 
所以哈,我們Linux管理員可以根據這些檔案來檢視使用者的訪問情況和伺服器的執行情況。另外當samba伺服器工作異常時,也可以通過/var/log/samba/下的日誌進行分析哈~
3.3 Samba服務密碼檔案
samba伺服器釋出共享資源後,客戶端訪問samba伺服器,需要提交使用者名稱和密碼進行身份驗證,驗證合格後才可以登入。samba服務為了實現客戶身份驗證功能,將使用者名稱和密碼資訊存放在/etc/samba/smbpasswd中,在客戶端訪問時,將使用者提交資料與smbpasswd存放的資訊進行比對,如果相同,並且samba伺服器其他安全設定允許,客戶端與samba伺服器連線才能建立成功哈~
那如何建立samba帳號呢?偶在說之前先強調一點哈,samba帳號並不能直接建立滴,需要先建立Linux同名的系統帳號。比如如果我們要建立一個名為michael的samba帳號,那Linux系統中必須提前存在一個同名的michael系統帳號。
samba中新增帳號命令為smbpasswd,命令格式:
smbpasswd -a 使用者名稱
我們來測試下,在samba伺服器中新增samba帳號redking,我們建立samba帳號之前必須先新增相對應的系統帳號,使用useradd命令建立帳號redking,然後執行passwd命令為帳號redking設定密碼哈~最後我們新增redking使用者的samba帳號,執行smbpasswd新增帳號redking到samba配置檔案中。
image
OK,Samba帳號新增完畢哈,如果我們在新增samba帳號時輸入完兩次密碼出錯:Failed to modify password entry for user amy,就像下面這樣
image
這是因為Linux本地使用者裡沒有amy這個使用者,我們在系統裡面新增一下就OK了哈~
image
呵,所以哈,務必要注意在建立samba帳號之前,一定要先建立一個與samba帳號同名的系統帳號。
我們經過上面的設定,再次訪問samba共享檔案時就可以使用redking或amy帳號訪問了。
注意:解決/etc/samba目錄下沒有smbpasswd檔案
image
原因:samba啟用了tdbsam驗證。
image
解決:smb.conf檔案中註釋掉passdb backend = tdbsam 一行,加上smb passwd file = /etc/samba/smbpasswd,然後儲存退出。
image
這樣再建立使用者就產生了/etc/samba/smbpasswd檔案了。
image 
使用cat命令檢視smbpasswd檔案滴內容哈~:cat /etc/samba/smbpasswd
image
3.4 Samba的啟動與停止
1)samba服務的啟動
service smb start 或 /etc/rc.d/init.d/smb start
image
2)samba服務的停止
service smb stop 或 /etc/rc.d/init.d/smb stop
image
3)samba服務的重啟
service smb restart 或 /etc/rc.d/init.d/smb restart
image
4)samba服務配置重新載入
service smb reload 或 /etc/rc.d/init.d/smb reload
image
注意:Linux服務中,當我們更改配置檔案後,一定要記得重啟服務哈,讓服務重新載入配置檔案,這樣新的配置才可以生效哈~
5)自動載入samba服務
chkconfig
我們可以使用chkconfig命令自動載入smb服務: 
chkconfig –level 3 smb on      #執行級別3自動載入 
chkconfig –level 3 smb off     #執行級別3不自動載入
image
ntsysv
我們還可以使用ntsysv命令利用文字圖形介面對smb自動載入進行配置,如果要自動載入smb可以在其前面選中“*”,否則取消掉就不自動載入了哈~
image
3.5 share伺服器例項及詳解
ok,上面已經對samba的相關性配置檔案講了個大概哈,現在我們通過例項來掌握一下samba具體使用流程來搭建samba伺服器。
如果公司現在用一個工作組Workgroup需要新增samba伺服器作為檔案伺服器哈,併發布共享目錄/share,共享名為public,這個共享目錄允許所有公司員工訪問。
我們分析下哈,這個案例屬於samba的基本配置,我們可以實用share安全級別模式,既然允許所有員工訪問,則需要為每個使用者建立一個samba帳號,那麼如果公司擁有大量使用者呢?1000個使用者,100000個使用者,一個個設定會非常滴麻煩哈,我們可以通過配置security = share來讓所有使用者登入時採用匿名帳戶nobody訪問,這樣實現起來非常簡單哈~~~
1) 修改samba主配置檔案smb.conf
vim /etc/samba/smb.conf
(1).設定samba伺服器工作組名為Workgroup
(2).新增samba伺服器註釋資訊為”File Server”
(3).設定samba安全級別為share模式,允許使用者匿名訪問 
#================= Global Settings =======================
[global]
# ———————– Netwrok Related Options ————————- 



# workgroup = NT-Domain-Name or Workgroup-Name, eg: MIDEARTH 



# server string is the equivalent of the NT De.ion field 



# netbios name can be used to specify a server name not tied to the hostname 



# Interfaces lets you configure Samba to use multiple interfaces 

# If you have multiple network interfaces then you can list the .es 

# you want to listen . (never omit localhost) 



# Hosts Allow/Hosts Deny lets you restrict who can connect, and you can 

# specifiy it as a per share option as well 



        workgroup = Workgroup         #設定samba伺服器工作組名為Workgroup 
        server string = File Server       #新增samba伺服器註釋資訊為”File Server”
;       netbios name = MYSERVER
;       interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24 

;       hosts allow = 127. 192.168.12. 192.168.13.
# ————————— Logging Options —————————– 



# Log File let you specify where to put logs and how to split them up. 



# Max Log Size let you specify the max size log files should reach
        # logs split per machine 

;       log file = /var/log/samba/%m.log 

        # max 50KB per log file, then rotate 

;       max log size = 50
# ———————– Standalone Server Options ———————— 



# Scurity can be set to user, share(deprecated) or server(deprecated) 



# Backend to store user information in. New installations should 

# use either tdbsam or ldapsam. smbpasswd is available for backwards 

# compatibility. tdbsam requires no further configuration.
        security = share         #設定samba安全級別為share模式,允許使用者匿名訪問 

;       passdb backend = tdbsam 

        smb passwd file = /etc/samba/smbpasswd
# ———————– Domain Members Options ———————— 



# Security must be set to domain or ads 



# Use the realm option .ly with security = ads 

# Specifies the Active Directory realm the host is part of 



# Backend to store user information in. New installations should 

# use either tdbsam or ldapsam. smbpasswd is available for backwards 

# compatibility. tdbsam requires no further configuration. 

#
(4).設定共享目錄的共享名為public
(5).設定共享目錄的絕對路徑為/share
(6).最後我們設定允許匿名訪問哈~
image
設定完smb.conf後儲存退出哈~
2)重新載入配置
上面我們說過哈,Linux為了使新配置生效,需要重新載入配置,可以使用restart重新啟動服務或者使用reload重新載入配置哈~
image
注意哈: 
偶這裡強調一下細節,重啟samba服務,雖然可以讓配置生效,但是restart是先關閉samba服務,再開啟服務哈,這樣如果在公司網路運營中肯定會對客戶端員工的訪問造成影響,建議使用reload命令重新載入配置檔案使其生效,這樣不需要中斷服務就可以重新載入配置哈~
samba伺服器通過以上設定,現在使用者就可以不需要輸入帳號和密碼就可以直接登入samba伺服器並訪問public共享目錄哈~
我們測試下,在/share目錄下建個檔案試下:touch /share/test_sharemode_samba.tar
image
我們看下效果哈~
image
3.6 user伺服器例項及詳解
上面的案例我們講了share安全級別模式的samba伺服器哈,可以實現使用者方便滴通過匿名方式訪問,但是如果在我們samba伺服器上存在重要檔案的目錄,為了保證系統安全性及資料保密性哈,我們就必須對使用者進行篩選,允許或禁止相應的使用者訪問指定滴目錄哈,這裡share安全級別模式就不能滿足我們這樣的實際要求了。
實現使用者身份驗證的方法很多,我們可以將安全級別模式配置為user、server、domain和ads,但是最常用的還是user安全級別模式哈,下面偶就來看下user這個安全級別模式的配置哈~
如果公司有多個部門,因工作需要,我們就會分門別類的建立相應部門的目錄,並將銷售部的資料存放在samba伺服器的/companydata/sales/目錄下,集中管理,以便銷售人員瀏覽,並且該目錄只允許銷售部員工訪問。
我們分析下,在/companydata/sales/目錄中存放有銷售部的重要資料,為了保證其他部門無法檢視其內容,我們需要將全域性配置中security設定為user安全級別,這樣就啟用了samba伺服器的身份驗證機制,然後在共享目錄/companydata/sales下設定valid users欄位,配置只允許銷售部員工能夠訪問這個共享目錄。
1)新增銷售部使用者和組並新增相應samba帳號
使用groupadd命令新增sales組,然後執行useradd命令和passwd命令新增銷售部員工的帳號及密碼哈~
image
接下來為銷售部成員新增相應samba帳號
image
2)修改samba主配置檔案smb.conf
(1).設定user安全級別模式
image
(2).設定銷售部共享目錄為sales
(3).指定共享目錄為絕對路徑為/companydata/sales
(4).設定可以訪問的使用者為sales組成員
image
3)重新載入配置
上個案例講過了哈,要讓修改後的Linux配置檔案生效,我們就要重新載入配置。
#service smb reload
image
現在我們測試下
image
輸入銷售部的帳號及密碼進行登入
image
開啟sales共享目錄
image
這樣銷售部成員就可以進行訪問sales共享目錄下的資料了
image
4 Samba高階伺服器配置
上面偶說了下samba滴常規配置哈,這些已經可以使用企業內部滴資料通過網路共享並分配適當滴共享許可權來管理共享目錄,但這僅僅對於很多大型企業或安全要求高滴來說還是不能滿足其需求哈,所以偶下面就來講下samba滴高階伺服器配置讓我們搭建滴samba伺服器功能更強大,管理更靈活,我們滴資料也更安全哈~
4.1 使用者賬號對映
前面已經說過,samba的使用者帳號資訊是儲存在smbpasswd檔案中滴,而且可以訪問samba伺服器的帳號也必須對應一個同名的系統帳號。基於這一點,所以哈,對於一些hacker來說,只要知道samba伺服器滴samba帳號,就等於是知道了Linux系統帳號,只要crack其samba帳號密碼加以利用就可以攻擊samba伺服器哈。所以我們要使用使用者帳號對映這個功能來解決這個問題哈~~~
使用者帳號對映這個功能需要建立一個帳號對映關係表,裡面記錄了samba帳號和虛擬帳號的對應關係,客戶端訪問samba伺服器時就使用虛擬來登入哈。
1)編輯主配置檔案/etc/samba/smb.conf
在global下新增一行欄位username map = /etc/samba/smbusers開啟使用者帳號對映功能。
image
2)編輯/etc/samba/smbusers
smbusers檔案儲存帳號對映關係,其有固定滴格式:
samba帳號 = 虛擬帳號(對映帳號)
image
帳號redking就是我們上面建立的samba帳號(同時也是Linux系統帳號),51cto及51blog就是對映滴帳號名(虛擬帳號),帳號redking在我們訪問共享目錄時只要輸入51cto或51blog就可以成功訪問了,但是實際上訪問samba伺服器的還是我們滴redking帳號,這樣一來就解決了安全問題哈~我們繼續。
3)重啟samba服務:service smb restart
image
4)驗證效果哈~
輸入我們定義的對映帳號51cto,注意我們沒有輸入帳號redking哈~,對映帳號51cto滴密碼和redking帳號一樣哈~
image
現在就可以通過對映帳號瀏覽共享目錄了哈~
image
注意:強烈建議不要將samba使用者的密碼與本地系統使用者的密碼設定成一樣哈,可以避免非法使用者使用samba帳號登入系統非法破壞哈~~~
4.2 客戶端訪問控制
對於samba伺服器的安全性,我們已經說過可以使用valid users欄位去實現使用者訪問控制,但是如果企業龐大,存在大量使用者的話,這種方法操作起來就顯得比較麻煩哈~比如samba伺服器共享出一個目錄來訪問,但是要禁止某個IP子網或某個域的客戶端訪問此資源,這樣滴情況使用valid users欄位就無法實現客戶端訪問控制。
下面我們就講下使用hosts allow和hosts deny兩個欄位來實現該功能。而用好這兩個欄位滴關鍵在於熟悉和清楚它們的使用方法和作用範圍哈
hosts allow 和 hosts deny 的使用方法 
 1)hosts allow 和 hosts deny 欄位的使用
hosts allow 欄位定義允許訪問的客戶端
hosts deny 欄位定義禁止訪問的客戶端
2)使用IP地址進行限制
比如公司內部samba伺服器上共享了一個目錄sales,這個目錄是存放銷售部的共享目錄,公司規定192.168.0.0/24這個網段的IP地址禁止訪問此sales共享目錄,但是其中192.168.0.24這個IP地址可以訪問。
先將安全級別模式由user改為share
image
這裡我們新增hosts deny和hosts allow欄位
hosts deny = 192.168.0. 表示禁止所有來自192.168.0.0/24網段的IP地址訪問
hosts allow = 192.168.0.24 表示允許192.168.0.24這個IP地址訪問
當host deny和hosts allow欄位同時出現並定義滴內容相互衝突時,hosts allow優先。現在設定的意思就是禁止C類地址192.168.0.0/24網段主機訪問,但是允許192.168.0.24主機訪問。
image
測試下效果,如果是192.168.0.24的客戶端就可以正常訪問
image
如果是其他客戶端滴話就是這樣的效果
image
如果想同時禁止多個網段滴IP地址訪問此伺服器可以這樣設定
 hosts deny = 192.168.1. 172.16. 表示拒絕所有192.168.1.0網段和172.16.0.0網段的IP地址訪問sales這個共享目錄。
hosts allow = 10. 表示允許10.0.0.0網段的IP地址訪問sales這個共享目錄。
注意:當需要輸入多個網段IP地址的時候,需要使用“空格”符號隔開。
image
3)使用域名進行限制
我們來看這樣一個例子哈,公司samba伺服器上共享了一個目錄public,公司規定.sale.com域和.net域的客戶端不能訪問,並且主機名為free的客戶端也不能訪問。
hosts deny = .sale.com .net free 表示禁止.sale.com域和.net域及主機名為free的客戶端訪問public這個共享目錄。
注意:域名和域名之間或域名和主機名之間需要使用“空格”符號隔開。
image
4)使用萬用字元進行訪問控制
samba伺服器共享了一個目錄security,規定所有人不允許訪問,只有主機名為boss的客戶端才可以訪問。對於這樣一個例項哈,我們就可以通過使用萬用字元的方式來簡化配置。
hosts deny = All 表示所有客戶端,並不是說允許主機名為ALL的客戶端可以訪問哈~~~
常用的萬用字元還有“*”,“?”,“LOCAL”等。
image
還有一種比較有意思的情況,如果我們規定所有人不能訪問security目錄,只允許192.168.0.0網段的IP地址可以訪問,但是192.168.0.100及192.168.0.78的主機是要禁止訪問滴。我們可以使用hosts deny禁止所有使用者訪問,再設定hosts allow允許192.168.0.0網段主機,但當hosts deny和hosts allow同時出現而且衝突滴時候,hosts allow生效,如果這樣滴話,那麼允許192.168.0.0網段的IP地址可以訪問,但是192.168.0.100及192.168.0.78的主機禁止訪問就無法生效了哈~我們可以使用EXCEPT進行設定。
hosts allow = 192.168.0. EXCEPT 192.168.0.100 192.168.0.78 表示允許192.168.0.0網段IP地址訪問,但是192.168.0.100和192.168.0.78除外哈~
image
hosts allow 和 hosts deny 的作用範圍 
hosts allow和hosts deny設定在不同的位置上,它們的作用範圍是不一樣滴。如果設定在[global]裡面,表示對samba伺服器全域性生效哈,如果設定在目錄下面,則表只對這個目錄生效。
image
這樣設定表示只有192.168.0.88才可以訪問samba伺服器,全域性生效哈~
image
這樣設定就表示只對單一目錄security生效,只有192.168.0.88才可以訪問security目錄裡面的資料。
4.3 設定Samba的許可權
到這裡我們已經可以對客戶端訪問進行有效的控制,但是對於能訪問的客戶端來說,我們還是不能靈活方便滴控制他們訪問共享資源的許可權,比如boss或gm這樣的帳號可以對某個共享目錄具有完全控制許可權,其他帳號只有只讀許可權哈,這樣的情況我們就可以使用write list欄位來實現哈~
例如公司samba伺服器上有個共享目錄tech,公司規定只有boss帳號和tech組的帳號可以完全控制,其他人只有只讀許可權。如果只用writable欄位則無法滿足這個例項的要求,因為當writable = yes時,表示所有人都可以寫入了哈,而當writable = no時表示所有人都不可以寫入。這時我們就需要用到write list欄位哈~
image
write list = boss,@tech 就表示只有boss帳號和tech組成員才可以對tech共享目錄有寫入許可權哈(其中@tech就表示tech組)。
我們來看下writable和write list之間的區別:
欄位 描述
writable yes 所有帳號都允許寫入
writable no 所有帳號都禁止寫入
write list 寫入許可權帳號列表 列表中的帳號允許寫入
4.4 Samba的隱藏共享
我們還可以使用browseable欄位實現隱藏共享的功能哈~~~
比如我們要把samba上的技術部共享目錄隱藏,我們可以這樣設定。
browseable = no表示隱藏該目錄
image
現在就看不到tech共享目錄了哈~
image
如果我們直接輸入\192.168.0.188 ech就可以訪問了哈~
image
在有些特殊的情況下,browseable也無法滿足企業的需求,比如,samba伺服器上有個security目錄,此目錄只有boss使用者可以瀏覽訪問,其他人都不可以訪問。因為samba的主配置檔案只有一個,所有帳號訪問都要遵守該配置檔案的規則,如果隱藏了該目錄,那麼所有人就都看不到該目錄了,就像上面演示的一樣,要知道共享目錄名稱後輸入\192.168.0.188 ech才可以訪問技術部資料。如果這樣滴目錄一多滴話,不可以叫boss去記那麼多目錄名稱哈,那樣還不被boss罵死哈~~~^_^問題出在samba服務的主配置檔案只有一個,而smb.conf沒有提供欄位允許部分人可以瀏覽隱藏目錄的功能。
那我們可以換個角度哈,既然單一滴配置檔案無法實現要求,那麼我們可以為不同需求的使用者或組分別建立相應的配置檔案並單獨配置後實現其隱藏目錄的功能哈,現在我們為boss帳號建立一個配置檔案,並且讓其訪問的時候能夠讀取這個單獨的配置檔案。
(1)建立獨立滴配置檔案哈~
先為boss帳號建立一個單獨的配置檔案,我們可以直接複製/etc/samba/smb.conf這個檔案並改名就可以了,如果為單個使用者建立配置檔案,命名時一定要包含使用者名稱哈。
我們使用cp命令複製主配置檔案,為boss帳號建立獨立的配置檔案。
image
(2)編輯smb.conf主配置檔案哈~
在[global]中加入config file = /etc/samba/smb.conf.%U,表示samba伺服器讀取/etc/samba/smb.conf.%U檔案,其中%U代表當前登入使用者。命名規範與獨立配置檔案匹配哈~
image
(3)編輯smb.conf.boss獨立配置檔案
編輯boss帳號的獨立配置檔案smb.conf.boss,將tech目錄裡面的browseable = no刪除,這樣當boss帳號訪問samba時,tech共享目錄對boss帳號訪問就是可見滴,這樣主配置檔案smb.conf和boss帳號的獨立配置檔案相搭配就有實現其他使用者訪問時tech共享目錄是隱藏滴,而boss帳號訪問時就是可見滴。
image
(4)重新啟動samba服務:service smb restart
image
(5)測試效果哈~
現在我們以普通使用者redking帳號登入samba伺服器哈~~~
image
發現以redking帳號登入samba看不到tech共享目錄哈~~證明tech共享目錄對除boss帳號以外的人是隱藏共享滴。
image
現在我們以boss帳號登入來看看哈~~
image
我們發現以boss帳號登入之後,tech共享目錄自動顯示了哈~~~
image
這樣以獨立配置檔案的方法來實現隱藏共享對不同帳號的可見性非常方便哈~
注意:目錄隱藏了並不是說不共享了,只要知道共享名,並且有相應許可權,還是可以訪問滴,就像上面演示的一樣,可以輸入“\IP地址共享名”的方法就可以訪問隱藏共享了。
5 Samba客戶端配置 

5.1 Linux客戶端訪問Samba共享
linux客戶端訪問伺服器主要有兩種方法
1)使用smbclient命令
在Linux中,samba客戶端使用smbclint這個程式來訪問samba伺服器時,先要確保客戶端已經安裝了samba-client這個rpm包。
image
smbclient可以列出目標主機共享目錄列表
smbclient命令格式:smbclient -L 目標IP地址或主機名 -U 登入使用者名稱%密碼
當我們檢視rhel5(192.168.0.188)主機的共享目錄列表時,提示輸入密碼,這時候可以不輸入密碼哈,我們直接按回車,這樣表示匿名登入,然後就會顯示匿名使用者可以看到的共享目錄列表了哈~
smbclient -L rhel5或者smbclient -L 192.168.0.188
image
如果想使用samba帳號相看samba伺服器端共享了什麼目錄,我們可以加上-U引數哈~,後面跟上使用者名稱%密碼。
smbclient -L 192.168.0.188 -U boss%boss
這樣就顯示了只有boss帳號才顯示的tech技術部共享目錄。
image
注意:不同使用者使用smblient瀏覽的結果可能是不一樣滴,這要根據伺服器設定的訪問控制許可權而定哈~
我們還可以在使用smbclient命令列共享訪問模式瀏覽共享的資料哈
smbclient命令列共享訪問模式命令格式:
smbclient //目標IP地址或主機名/共享目錄 -U 使用者名稱%密碼
上面已經顯示了伺服器上有一個tech共享目錄,我們來檢視一下里面的內容哈~
image
另外smbclient登入samba伺服器後,我們可以使用help查詢所支援的命令。
image
2)使用mount命令掛載共享目錄
mount命令掛載共享目錄格式:
mount -t cifs //目標IP地址或主機名/共享目錄名稱 掛載點 -o username=使用者名稱
[root@client ~]# mount -t cifs //192.168.0.188/tech /mnt/sambadata/ -o username=boss%boss
這表示掛載192.168.0.188主機上的共享目錄tech到/mnt/sambadata目錄下,cifs就是samba所使用的檔案系統哈
image
 5.2 Windows客戶端訪問Samba共享
這個就比較簡單了哈,我們也一直用這個訪問微軟的共享目錄哈,上面其他也已經講過了哈,方法就是在開始執行裡面使用UNC路徑直接進行訪問哈~~也可以到網路上的芳鄰里面找,但是偶不太喜歡用這個方法,因為速度太慢哈。還是覺得在開始–執行或是直接在資源管理器或IE的位址列裡面輸入UNC路徑比較快哈~
1)在開始–執行裡面使用UNC路徑直接進行訪問
image
image
2)對映網路驅動器訪問samba伺服器共享目錄
image
輸入tech共享目錄的地址
image
輸入可以訪問tech共享目錄的samba帳號和密碼
image
這時在我的電腦的網路驅動器中就可以看到對映的Z盤了哈~
image
開啟Z盤就可以訪問tech共享目錄裡面的資源。
image
6 Samba的列印共享
預設情況下,samba的列印服務是開放滴~所以我們只要把印表機安裝好後客戶端的使用者就可以使用印表機了。
1)設定global配置項 
修改smb.conf全域性配置,開啟列印共享功能
image
2)設定printers配置項
image
使用預設設定就可以讓客戶端正常使用權印表機了哈,需要注意的就是printable一定要設定成yes哈,如果不設定成yes那還打什麼哈~~~path欄位定義印表機佇列,可以根據需要自己定製哈,另外共享列印和共享目錄不一樣哈,安裝完印表機後必須重新啟動samba服務,否則客戶端可能無法看到共享的印表機。如果設定只允許部分員工使用印表機,我們可以使用valid users、hosts allow或hosts deny欄位來實現哈,這些在講共享目錄時已經說過了,不清楚可以再翻翻看哈~~下面進入samba企業實戰與應用。
7 Samba企業實戰與應用 

7.1 企業環境及需求
samba伺服器目錄:
企業資料目錄:/companydata
公共目錄:/companydata/share
銷售部目錄:/companydata/sales
技術部:/companydata/tech
企業員工情況:
總經理:gm
銷售部:銷售部經理 redking、員工 sky、員工 jane
技術部:技術部經理 michael、員工 bill、員工 joy
搭建samba檔案伺服器,建立公共共享目錄,允許所有人訪問,許可權為只讀,為銷售部和技術部分別建立單獨的目錄,只可以總經理和相應部門員工訪問,並且公司員工禁止訪問非本部門的共享目錄。這是個典型的企業檔案伺服器案例哈。
總經理———————– 

                                           | 

銷售部——————-交換機——————–samba伺服器 

                                           | 

技術部———————–
7.2 需求分析
對於建立公共目錄public欄位就可以實現匿名訪問,員工只能訪問本部門的共享目錄,禁止訪問非本部門的共享目錄,我們可以通過設定目錄共享欄位“browseable = no”及欄位“valid users”來實現其隱藏功能和相應的訪問許可權。這樣設定不能很好得解決同一目錄多種需求的許可權設定,所以我們需要建立獨立配置檔案,為每個部門建立一個組後併為每個組建立配置檔案來實現隔離使用者許可權會比較靈活哈~
7.3 解決方案
1)建立各部門專用共享目錄
使用mkdir建立需求的共享目錄以便分門別類的儲存相應資料。
image
同時設定/companydata共享目錄的使用者許可權
image
2)新增samba伺服器描述及設定smbpasswd檔案
image
預設/etc/samba/目錄下沒有smbpasswd檔案,我們要先關閉samba的tdbsam驗證。
解決方法:在smb.conf檔案中註釋掉passdb backend = tdbsam 一行,為了指定samba使用者的驗證我們加上這一條smb passwd file = /etc/samba/smbpasswd,然後儲存退出。
image

3)新增使用者和組

先建立銷售部組sales,技術部組tech,然後使用useradd命令新增總經理帳號gm及各個員工的帳號並加入相應的使用者組。
image 
接著使用smbpasswd命令新增samba使用者
image
呃~~~不好意思哈~~~帳號gm的samba使用者忘記新增了,現在補上哈~
image
4)配置smb.conf檔案
(1)建立單獨配置檔案
使用者配置檔案使用使用者名稱命令哈,組配置檔案使用組名命令。
image
(2)設定主配置檔案smb.conf
這裡我們配置smb.conf主配置檔案,在global中新增相應欄位哈,確保samba伺服器的主配置檔案可以呼叫獨立的使用者配置檔案和組配置檔案。
include = /etc/samba/%U.smb.conf表示使samba伺服器載入/etc/samba目錄下格式為“使用者名稱.smb.conf”的配置檔案。
include = /etc/samba/%G.smb.conf表示使samba伺服器載入/etc/samba目錄下格式為“組名.smb.conf”的配置檔案。
image
設定共享目錄/companydata/share
image
(5)設定總經理gm配置檔案
vim /etc/samba/gm.smb.conf
image
(6)設定銷售部組sales配置檔案
vim /etc/samba/sales.smb.conf
image
(7)設定技術部組tech配置檔案
vim /etc/samba/tech.smb.conf
image
(8)開啟samba服務
service smb start
image
(9)測試
我們先用gm帳號登入測試
image
可以全部看到共享目錄。
image
/companydata/share目錄只讀
image
注意:
最好禁用RHEL5中的selinux功能,否則會出現些莫名其妙滴問題,比如下面的帳號gm明明對共享目錄sales和tech是777的許可權,但就是隻能建立檔案卻不能建立資料夾哈~
image
關閉selinux,開啟selinux配置檔案/etc/selinux/config設定selinux = disabled後儲存退出並重啟系統。
image 
檢視selinux當前狀態sestatus -v
image
現在我們就可以建立資料夾了
image
現在我們以其他帳號測試,就用技術部joy吧
image
在這裡技術部的員工就看不到銷售部的共享目錄。同時對public目錄只讀許可權,對tech目錄有讀寫許可權。
image
因為禁止對共享目錄sales訪問,就算知道了\rhel5sales路徑也是不能訪問滴
image
8 Samba排錯
1)Linux服務一般滴排錯方法
(1)錯誤資訊
一般仔細看下顯示的錯誤資訊,根據錯誤提示一般滴問題就可以判斷問題出在什麼地方了。
(2)配置檔案
第2個我們可以查配置檔案,有時可能誤操作導致配置失誤,服務無法正常執行,我們可以通過檢查配置檔案來確認問題。現在很多服務的軟體包有自帶配置檔案檢查工具,我們可以通過這些工具對配置檔案進行檢查哈~
(3)日誌檔案
如果服務出現問題,我們還可以使用tail命令來動態監控日誌檔案(在CLI狀態下可以使用Ctrl+Alt+F1~F6切換到另一個CLI文字終端下檢視)。
tail -F /var/log/messages
2)samba服務故障排錯
(1)使用testparm命令檢查
上面偶提到軟體包有自帶的配置檔案檢查工具,我們可以使用testparm命令檢測smb.conf檔案的語法,如果報錯,說明smb.conf檔案設定有錯誤哈,這樣我們可以根據提示資訊來修改主配置檔案和獨立配置檔案。
testparm /etc/samba/smb.conf
[root@rhel5 ~]# testparm /etc/samba/smb.conf 
Load smb config files from /etc/samba/smb.conf 

Can`t find include file /etc/samba/.smb.conf 

Can`t find include file /etc/samba/%G.smb.conf 

Processing section “[homes]” 

Processing section “[printers]” 

Processing section “[public]” 

Loaded services file OK. 

Server role: ROLE_STANDALONE 

Press enter to see a dump of your service definitions
[global] 

        workgroup = COMPANYDOMAIN 

        server string = Company Samba File Server 

        cups options = raw 

        include = /etc/samba/%G.smb.conf
[homes] 

        comment = Home Directories 

        read .ly = No 

        browseable = No
[printers] 

        comment = All Printers 

        path = /var/spool/samba 

        printable = Yes 

        browseable = No
[public] 

        comment = public data 

        path = /companydata/share 

        guest ok = Yes 

[root@rhel5 ~]# testparm /etc/samba/gm.smb.conf 
Load smb config files from /etc/samba/gm.smb.conf 

Processing section “[homes]” 

Processing section “[printers]” 

Processing section “[sales]” 

Processing section “[tech]” 

Loaded services file OK. 

Server role: ROLE_STANDALONE 

Press enter to see a dump of your service definitions
[global] 

        workgroup = COMPANYDOMAIN 

        server string = Company Samba File Server 

        cups options = raw
[homes] 

        comment = Home Directories 

        read .ly = No 

        browseable = No
[printers] 

        comment = All Printers 

        path = /var/spool/samba 

        printable = Yes 

        browseable = No
[sales] 

        comment = sales data 

        path = /companydata/sales 

        valid users = gm 

        read .ly = No
[tech] 

        comment = tech data 

        path = /companydata/tech 

        valid users = gm 

        read .ly = No 

[root@rhel5 ~]# testparm /etc/samba/sales.smb.conf 

Load smb config files from /etc/samba/sales.smb.conf 

Processing section “[homes]” 

Processing section “[printers]” 

Processing section “[sales]” 

Loaded services file OK. 

Server role: ROLE_STANDALONE 

Press enter to see a dump of your service definitions
[global] 

        workgroup = COMPANYDOMAIN 

        server string = Company Samba File Server 

        cups options = raw
[homes] 

        comment = Home Directories 

        read .ly = No 

        browseable = No
[printers] 

        comment = All Printers 

        path = /var/spool/samba 

        printable = Yes 

        browseable = No
[sales] 

        comment = sales data 

        path = /companydata/sales 

        valid users = @sales, gm 

        read .ly = No 

[root@rhel5 ~]# testparm /etc/samba/tech.smb.conf 

Load smb config files from /etc/samba/tech.smb.conf 

Processing section “[homes]” 

Processing section “[printers]” 

Processing section “[tech]” 

Loaded services file OK. 

Server role: ROLE_STANDALONE 

Press enter to see a dump of your service definitions
[global] 

        workgroup = COMPANYDOMAIN 

        server string = Company Samba File Server 

        cups options = raw
[homes] 

        comment = Home Directories 

        read .ly = No 

        browseable = No
[printers] 

        comment = All Printers 

        path = /var/spool/samba 

        printable = Yes 

        browseable = No
[tech] 

        comment = tech data 

        path = /companydata/tech 

        valid users = @tech, gm 

        read .ly = No 

[root@rhel5 ~]#
2)使用ping命令測試
samba伺服器主配置檔案排除錯誤後重啟smb服務,如果客戶端仍然無法連線samba伺服器,我們在客戶端可以使用ping命令進行測試,這個我們微軟的系統中排障一樣哈,根據出現的不同情況可以進行分析哈。
(1)如果沒有收到任何提示,說明客戶端TCP/IP協議安裝有問題,需要重新安裝客戶端TCP/IP協議,然後重新測試。
(2)如果提示“host not found”則檢查客戶端DNS或者/etc/hosts檔案有沒正確設定,確保客戶端能夠使用名稱訪問samba伺服器。
(3)無法ping通還可能是防火牆設定滴問題,需要重新設定防火牆的規則,開啟samba與外界聯絡的埠。
(4)當然還有一種低階的情況,那就是由於主機名輸入錯誤導致不能ping通,請更正後重試哈~~~O(^_^)O
3)使用smbclient命令進行測試
如果客戶端與samba伺服器可以ping通,說明客戶端與伺服器間的連線沒有問題哈,如果還是不能訪問samba共享資源,可以執行smbclient命令進一步測試伺服器端的配置。
如果測試samba伺服器正常,並且輸入了正確的帳號和密碼,那麼執行smbclient命令就可以獲得共享列表。
smbclient -L 192.168.0.188 -U joy%123
 image
如果我們看到了錯誤資訊提示“tree connect failed”則說明可以在smb.conf檔案中設定了host deny欄位拒絕了客戶端的IP地址或域名,我們可以修改smb.conf配置檔案允許客戶端訪問就可以了哈~
image
如果返回資訊是“connection refused”提示拒絕連線則說明是samba伺服器smbd程式可以沒有被開啟哈~我們必須確保smbd和nmbd程式處於開啟狀態,並使用netstat -a檢查netbios使用的139埠是否處於監聽狀態哈。
image
檢查samba服務
image 
開啟smb服務
netbios-ssn 會話管理 

netbios-ns 名字解析 

netbios-dgm 資料包
image
如果提示“session setup failed”連線建立失敗則說明伺服器拒絕了連線請求,這是因為輸入的使用者名稱和密碼錯誤引起滴,我們輸入正確的帳號和密碼就ok了哈~
image
有時也會收到比如“Your server software is being unfriendly”錯誤資訊,提示伺服器軟體存在問題,這個故障一般是因為配置smbd時使用了錯誤的引數或者啟用smbd時遇到的類似嚴重破壞錯誤,我們可以使用testparm來檢查相應的配置檔案並同時檢查相關日誌檔案哈。
###########################################################
本文轉自redking51CTO部落格,原文連結:http://blog.51cto.com/redking/120934,如需轉載請自行聯絡原作者


相關文章