SAMBA 的執行文件一般來說,做為 SAMBA Server 的執行檔有 testparm,smbd, nmbd, smbpasswd,至于做為 SAMBA Client 的執行檔主要則是:smbmount,smbclient。 smbd 與nmbd:這兩個執行檔是那兩個主要的 daemons ,每次啟動 SAMBA 都會使用到的兩個執行檔。
testparm:當設定完成了smb.conf 這個主要設定檔之后,而想要查看一下 SAMBA 的所有設定參數與 smb.conf的設定項目是否正確時,就需要使用這個 testparm 來查看( test parameters 的簡寫!)!所以,每次在修改完 smb.conf之后,請務必要使用 testparm 查看看是否有設定錯誤。
smbpasswd:如果SAMBA 設定的較為嚴格,需要規定使用者的賬號與密碼,那么那個密碼檔案的建立就需要使用smbpasswd 來建置才可以,所以這個指令與建立 SAMBA 的密碼有關。 smbclient:當Linux 主機想要藉由『網絡上的芳鄰』的功能來查看別臺計算機所分享出來的目錄與裝置時,就可以使用smbclient 來查看啦!這個指令也可以使用在 SAMBA 主機上面,用來查看是否設定成功。
smbmount:在Windows 上面可以設定『網絡磁盤驅動器』來連接到主機上面,同樣,在Linux 上面,可以透過 smbmount 來將遠程主機分享的檔案與目錄掛載到Linux 主機上面。不過,其實也可以直接使用 mount 這個指令來進行同樣的功能就是了。
samba服務全攻略
1.1Samba服務全攻略
接觸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安裝光盤哈)。
2.2 Samba的安裝
建議在安裝Samba服務之前,使用rpm -qa命令檢測系統是否安裝了Samba相關性軟件包:rpm -qa |grep samba
如果系統還沒有安裝Samba軟件包,我們可以使用rpm命令安裝所需軟件包。
安裝Samba主程序包:rpm -ivh samba-3.0.25b-0.el5.4.i386.rpm
其他軟件包的安裝方法也一樣哈~
安裝Samba客戶端工具:rpm -ivh samba-client-3.0.25b-0.el5.4.i386.rpm
提示已經安裝過了哈~
安裝Samba通用工具和庫文件:rpm -ivh samba-common-3.0.25b-0.el5.4.i386.rpm
其實我們一開始rpm qa |grep samba命令查詢時已經發現客戶端工具和通用工具及庫文件已經安裝了哈,我們上面兩步安裝就可以不要執行了哈,偶主要是演示一下哈~
最后我們安裝Samba圖形化管理工具:rpm -ivh samba-swat-3.0.25b-0.el5.4.i386.rpm
我們發現缺少xinetd,OK,那我們安裝一下哈~:rpm -ivh xinetd-2.3.14-10.el5.i386.rpm
現在我們再來安裝Samba圖形化管理工具:rpm -ivh samba-swat-3.0.25b-0.el5.4.i386.rpm
現在我們看到Samba圖形化管理工具安裝成功了哈~
所有軟件包安裝完畢之后,我們可以使用rpm命令進行查詢哈:rpm -qa | grep samba
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
smb.conf配置文件有288行內容,配置也相對比較復雜哈,不過我們不用擔心,Samba開發組按照功能不同,對smb.conf文件進行了分段劃分,條理非常地清楚哈。
下面我們來具體看下smb.conf的內容哈,smb.conf大致分為三個部分,我們來了解一下,其中我們經常要使用到的字段,我們將以實例解釋,其他字段我們整理到字段匯總,有興趣的可以去看下哈~~
1、samba配置簡介
smb.conf文件的開頭部分為samba配置簡介,告訴我們smb.conf文件的作用及相關信息。
smb.conf中以“#”開頭的為注釋,為用戶提供相關的配置解釋信息,方便用戶參考,不用修改它哈。
smb.conf中還有以“;”開頭滴,這些都是samba配置的格式范例,默認是不生效滴,可以通過去掉前面的“;”并加以修改來設置想使用的功能。
2、Global Settings
Global Settings設置為全局變量區域。那什么是全局變量哈?全局變量就是說我們只要在global時進行設置,那么該設置項目就是針對所有共享資源生效滴。這與以后我們學習的很多服務器配置文件相似哈。
該部分以[global]開始:
smb.conf配置通用格式,對相應功能進行設置:字段=設定值
下面我們說下[global]常用字段及設置方法:
1)設置工作組或域名稱
工作組是網絡中地位平等的一組計算機,可以通過設置workgroup字段來對samba服務器所在工作組或域名進行設置。
我們設置samba服務器的工作組為RHEL5
2)服務器描述
服務器描述實際上類似于備注信息哈,在一個工作組中,可能存在多臺服務器,為了方便用戶瀏覽,我們可以在server string配置相應描述信息,這樣用戶就可以通過描述信息知道自己要登錄哪臺服務器了啊~
我們設置samba描述信息為“RHEL5 File Server”。
3)設置samba服務器安全模式
samba服務器有share、user、server、domain和ads 五種安全模式,用來適應不同的企業服務器需求。
(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字段非常豐富,設置靈活。
我們先來講下幾個最常用的字段哈~
1)設置共享名
共享資源發布后,必須為每個共享目錄或打印機設置不同的共享名,給網絡用戶訪問時使用,并且共享名可以與原目錄名不同。
共享名設置非常簡單:[共享名]
我們來看個例子,Samba服務器中有個目錄為/share,需要發布該目錄成為共享目錄,定義共享名為public
2)共享資源描述
網絡中存在各種共享資源,為了方便用戶識別,可以為其添加備注信息,以方便用戶查看時知道共享資源的內容是什么哈。
格式:comment = 備注信息
舉個例子哈,samba服務器上有個/sales目錄存放公司銷售部的數據,為了對公司部門員工進行區分,可以添加備注信息。
3)共享路徑
共享資源的原始完整路徑,可以使用path字段進行發布,務必正確指定。
格式:path = 絕對地址路徑
samba服務器上/share/tools目錄存放常用工具軟件,需要發布該目錄為共享,我們可以這樣做。
4)設置匿名訪問
共享資源如果對匿名訪問進行設置,可以更改public字段。
格式:
public = yes #允許匿名訪問
public = no #禁止匿名訪問
samba服務器/share共享目錄允許匿名用戶訪問,可以這樣設置。
5)設置訪問用戶
如果共享資源存在重要數據的話,需要對訪問用戶審核,我們可以使用valid users字段進行設置哈~
格式:
valid users = 用戶名
valid users = @組名
我們來看下面一個例子哈,samba服務器/share/tech目錄存放了公司技術部數據,只允許技術部員工和經理訪問,技術部組為tech,經理帳號為gm
6)設置目錄只讀
共享目錄如果限制用戶的讀寫操作,我們可以通過readonly實現哈~
格式:
readonly = yes #只讀
readonly = no #讀寫
samba服務器公共目錄/public存放大量共享數據,為保證目錄安全我們只允許讀取,禁止寫入哈~
7)設置目錄可寫
如果共享目錄允許用戶寫操作,可以使用writable或write list兩個字段進行設置哈~
writable格式:
writable = yes #讀寫
writable = no #只讀
write list格式:
write list = 用戶名
write list = @組名
注意:
[homes]為特殊共享目錄,表示用戶主目錄。
[printers]表示共享打印機。
3.2 Samba服務日志文件
日志文件對于samba非常滴重要哈,它存儲著客戶端訪問samba服務器的信息,以及samba服務的錯誤提示信息等,可以通過分析日志,幫助解決客戶端訪問和服務器維護等問題。
在/etc/samba/smb.conf文件中,log file為設置samba日志的字段。
samba服務的日志文件默認存放在/var/log/samba/中,其中samba會為每個連接到samba服務器的計算機分別建立日志文件。
我們啟動smb服務:/etc/rc.d/init.d/smb start
使用ls -a命令可以查看日志的所有文件。
其中,當samba服務器剛剛建立好后,只有兩個文件,分別是nmbd.log和smbd.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配置文件中。
OK,Samba帳號添加完畢哈,如果我們在添加samba帳號時輸入完兩次密碼出錯:Failed to modify password entry for user amy,就像下面這樣
這是因為Linux本地用戶里沒有amy這個用戶,我們在系統里面添加一下就OK了哈~
呵,所以哈,務必要注意在建立samba帳號之前,一宍,%
評論
查看更多