Samba服務(wù)器簡介與快速配置指南
原創(chuàng)【51CTO專稿】Linux下進行資源共享有很多種方式,Samba服務(wù)器就是最常見的一種。Samba服務(wù)器可以讓W(xué)indows操作系統(tǒng)(Windows 2000/XP/2003等)用戶訪問局域網(wǎng)中Linux主機,就象訪問網(wǎng)上鄰居一樣方便。如圖1所示,圖中的服務(wù)器運行Samba服務(wù)器程序,其操作系統(tǒng)是Linux。該服務(wù)器通過Samba可以向局域網(wǎng)中的其他Windows系統(tǒng)提供文件服務(wù)。同時,在Linux服務(wù)器上還連接了一個共享打印機,打印機也通過Samba向局域網(wǎng)的其他Windows用戶提供打印服務(wù)。
圖1 由Samba提供文件和打印服務(wù)的局域網(wǎng)
1、Samba工作原理
Samba的工作原理是,讓W(xué)indows系列操作系統(tǒng)網(wǎng)絡(luò)鄰居的通訊協(xié)議——NETBIOS(NETwork Basic Input/Output System)和SMA(Server Message Block)這兩個協(xié)議在TCP/IP通信協(xié)議上運行,并且使用Windows的NETBEUI協(xié)議讓Linux可以在網(wǎng)絡(luò)鄰居上被Windows看到。其中最重要的就是SMB(Server Message Block)協(xié)議,在所有的諸如Windows Server 2003、Windows XP等Windows系列操作系統(tǒng)中廣為應(yīng)用。Samba就是SMB服務(wù)器在類UNIX系統(tǒng)上的實現(xiàn),目前可以在幾乎所有的UNIX變種上運行。
2、Samba服務(wù)器的功能
文件共享和打印共享是Samba最主要的功能。Samba為了方便文件共享和打印共享,還實現(xiàn)了相關(guān)的控制和管理功能。具體來說,Samba完成的功能有:
- 共享目錄:在局域網(wǎng)上共享某個或某些目錄,使得同一個網(wǎng)絡(luò)內(nèi)的Windows用戶可以在網(wǎng)上鄰居里訪問該目錄,就跟訪問網(wǎng)上鄰居里其他Windows機器一樣。
- 目錄權(quán)限:決定每一個目錄可以由哪些人訪問,具有哪些訪問權(quán)限。Samba允許設(shè)置一個目錄讓一個人、某些人、組和所有人訪問。
- 共享打印機:在局域網(wǎng)上共享打印機,使得局域網(wǎng)的其他用戶可以使用Linux操作系統(tǒng)下的打印機。
- 打印機使用權(quán)限:決定哪些用戶可以使用打印機。
安裝和配置好了Samba服務(wù)器后,Linux就可以向局域網(wǎng)中的Windows用戶提供文件和打印服務(wù)了。
3、SMB協(xié)議
在NetBIOS出現(xiàn)之后,Microsoft就使用NetBIOS實現(xiàn)了一個網(wǎng)絡(luò)文件和打印服務(wù)系統(tǒng),該系統(tǒng)基于NetBIOS設(shè)定了一套文件共享協(xié)議,Microsoft稱之為SMB(Server Message Block)協(xié)議。這個協(xié)議被Microsoft用于它們的Lan Manager和Windows服務(wù)器系統(tǒng)中,而Windows系統(tǒng)均包括這個協(xié)議的客戶軟件,因而這個協(xié)議在局域網(wǎng)系統(tǒng)中影響很大。
隨著Internet的流行,Microsoft希望將這個協(xié)議擴展到Internet上,成為Internet上計算機之間相互共享數(shù)據(jù)的一種標(biāo)準(zhǔn)。它將原有的幾乎沒有多少技術(shù)文檔的SMB協(xié)議進行整理,重新命名為CIFS(Common Internet File System)。因此,為了讓W(xué)indows和UNIX計算機相集成,最好的辦法即是在UNIX中安裝支持SMB/CIFS協(xié)議的軟件,這樣Windows客戶就不須要更改設(shè)置,就能如同使用Windows NT服務(wù)器一樣,使用UNIX計算機上的資源了。
下面介紹Samba的安裝、簡易配置以及啟動和停止的指令。
#p#
4、安裝Samba
用戶在主流的Linux版本(如Fedora和CentOS下)都可以采用如下命令進行安裝:
#yum -y install samba
在創(chuàng)建配置文件以后(一般情況下,安裝好Samba軟件后,其配置文件為缺省狀態(tài)),需要測試Samba正確性。首先確認客戶和服務(wù)器之間可以互通。如果網(wǎng)絡(luò)不能工作,則Samba必然不能工作。
我們使用testparm程序。testparm是一個簡單的程序,用于檢查/etc/smb.conf文件的內(nèi)部正確性。如果該文件報告沒有問題,則可以確定smbd可以成功地加載該配置文件。請注意:使用testparm并不能保證在配置文件中指定的服務(wù)可用或者工作正常。這種測試只保證Samba可以讀取和理解該配置文件。
testparm命令行如下:
testparm [configfile [hostname hostip]]
當(dāng)smb.conf文件不在默認位置時,使用configfile可以(/etc/smb.conf)指明其位置??蛇x參數(shù)hostnamehostip指示testparm查看該主機是否有權(quán)限訪問smb.conf文件中提供的服務(wù)。如果指定hostname,則必須還指定該主機的IP地址。否則結(jié)果不可預(yù)知。
下面的例子演示了testparm運行的輸出。如果有某些錯誤,testparm程序會給出特定的錯誤消息報錯:
//測試smb.conf文件配置是否正確 //該測試只能測試smb.conf文件配置是否正確,并不能保證Samba服務(wù)器正常工作 #testparm smb.conf gjspring 15.26.40.9 Load smb config file from smb.conf Processing section “[home]” Processing section “[GONGsprn]” Load services OK . Allow connection from gjspring(15.26.40.9)to homes. Allow connection from gjspring(15.26.40.9)to GONGsprn.
5、啟動及關(guān)閉Samba服務(wù)器
Samba服務(wù)器的啟動有兩種方式,一種是Linux終端命令行形式,一種是使用Linux提供的System Services方式。下面將分別介紹這兩種啟動方式。
(1)Samba的命令行啟動和關(guān)閉
安裝并配置好Samba后,可以在Linux終端將Samba啟動,也可通過終端命令行將已經(jīng)啟動的Samba服務(wù)關(guān)閉。若要啟動Samba,必須以管理員身份登錄Linux,如果是以普通用戶身份登錄Linux,可以在終端輸入如下命令切換到管理員身份:
#su root //暫時切換到系統(tǒng)管理員身份登錄系統(tǒng),系統(tǒng)會提示用戶輸入root密碼
切換到root用戶后,在命令行輸入如下命令可啟動Samba:
#smbd start //啟動samba服務(wù)器
smbd是Samba的服務(wù)守護進程,時刻偵聽網(wǎng)絡(luò)的文件和打印服務(wù)請求,該程序默認安裝在/usr/sbin/目錄下。一般情況下,該目錄是系統(tǒng)默認目錄,也就是說如果shell在用戶當(dāng)前目錄下找不到輸入的命令時,系統(tǒng)會自動到/usr/sbin/目錄下查找輸入的命令。如果該目錄沒有設(shè)置成系統(tǒng)默認目錄,用戶也可以手動將當(dāng)前目錄更改到該目錄,然后執(zhí)行smbd守護程序。
同理,若用戶欲關(guān)閉Samba服務(wù),可以在命令行輸入如下命令:
#smbd stop //停止samba服務(wù)器
系統(tǒng)將中止smbd守護進程,局域網(wǎng)內(nèi)的Windows用戶將不能再訪問該系統(tǒng)提供的文件或打印服務(wù)。
在某些特定情況下,用戶可能希望重新啟動Samba服務(wù)器,用戶可以先關(guān)閉Samba服務(wù)器,然后再啟動服務(wù)器,過程如下:
#smbd stop //停止samba服務(wù)器 #smbd start //啟動samba服務(wù)器
Samba為這種操作提供了簡便操作方式如下:
#smbd restart //啟動samba服務(wù)器
Samba服務(wù)器由兩個守護程序組成,smbd和nmbd.smbd守護程序提供文件和打印共享服務(wù),nmbd守護程序提供NetBIOS有名服務(wù)器支持??梢詮膇nit腳本或者xinetd作為系統(tǒng)服務(wù)運行Samba。因為RedHat默認在每次引導(dǎo)系統(tǒng)時從init腳本啟動SMB服務(wù),而不是從xinetd作為服務(wù)引導(dǎo),因此可以使用以下命令啟動或者停止SMB服務(wù)器:
#/etc/rc.d/init.d/smb start #/etc/rc.d/init.d/smb stop
(2)在System Services中啟動和關(guān)閉Samba服務(wù)
Linux提供了System Services方式啟動或關(guān)閉系統(tǒng)服務(wù)。如果用戶系統(tǒng)已經(jīng)安裝Samba服務(wù),則可以在System Services窗口中看到smb服務(wù)選項。在System Services中啟動Samba服務(wù)的過程如下:
- 打開System Services窗口,在Linux終端窗口中輸入setup命令,Linux出現(xiàn)Text Mode Setup Utility窗口。在Text Mode Setup Utility窗口中選中System Services菜單項。如圖2所示。
- 在System Services窗口選中smb菜單項即可。
圖2 System Services窗口
到這里為止,Samba服務(wù)器的準(zhǔn)備工作基本就完成了。接下來就是要通過Samba服務(wù)器實現(xiàn)Linux與Windows之間的互訪。
#p#
6、Linux和Windows文件互訪
Samba共享可以由SMB客戶在Windows或Linux平臺訪問。Windows訪問Linux系統(tǒng)共享文件一般通過網(wǎng)絡(luò)鄰居或Windows的IE瀏覽器;Linux訪問Windows系統(tǒng)下共享文件一般通過smbclient和smbmount命令實現(xiàn)。
(1) Windows客戶使用Linux系統(tǒng)共享文件
一個正確配置的Samba共享可以通過Windows網(wǎng)絡(luò)鄰居或Windows的IE瀏覽器訪問。其訪問路徑一般具有如下格式:
網(wǎng)上鄰居\整個網(wǎng)絡(luò)\工作組名\Linux機器名\Linux系統(tǒng)下目錄
如果有問題,最值得懷疑的是Windows還不知道Samba服務(wù)器、用戶和口令大小寫的問題以及明文和加密口令問題。如果是Windows還不知道Samba服務(wù)器,則在找到該計算機的Windows窗口刷新屏幕,等待幾分鐘或者重新引導(dǎo)Windows客戶。如果是用戶和口令大小寫的問題,則在[global]段中臨時將用戶名級和口令級設(shè)置足夠大,如100。如果是明文和加密口令問題則在[global]段中設(shè)置encrypt passwords=yes和smb passwdfile=/etc/smbpasswd。
(2)用smbclient工具訪問局域網(wǎng)上的Windows系統(tǒng)
在Linux系統(tǒng)下訪問局域網(wǎng)上其他系統(tǒng)(包括Windows系統(tǒng)和Linux系統(tǒng))的共享文件,有很多種不同的方式。下面我們先介紹smbclient工具。
用smbclient工具可以訪問局域網(wǎng)上的Windows系統(tǒng)的SMB共享。smbclient提供一個類似FTP的界面,允許與另一個運行SMB服務(wù)器的網(wǎng)絡(luò)共享的計算機進行文件傳輸。mbclient將另一個共享作為本地目錄加載。smbclient提供命令行選項查詢服務(wù)器可用的共享目錄或者交換文件。關(guān)于所有命令行選項的詳細信息,參考smbclient手冊頁。表1列出了smbclient工具最常用的一些命令及其功能。例如可使用如下命令列出計算機15.26.40.9上所有共享文件:
#smbclient –L 15.26.40.9
其中,- L參數(shù)要求列表輸出,15.26.40.9是欲訪問機器的IP地址,也可以使用任何可以解析為該IP地址的機器名。若要傳輸一個文件,必須首先使用以下命令連接到Samba服務(wù)器:
#smbclient //15.26.40.9/homes -U gong
其中,參數(shù)//15.26.40.9/homes指定另一臺計算機上的遠程服務(wù)。通常是一個文件系統(tǒng)目錄或者打印機。任何解析為該IP地址的名字都可以替換該IP地址。-U選項允許指定希望用于連接的用戶名。還有許多其他的smbclient命令配置,詳細的信息請參閱smbclient手冊頁。如果該用戶需要口令,則smbclient工具提示輸入口令,然后出現(xiàn)如下提示:
smb: \
\表示當(dāng)前工作目錄。下面列出smbclient的所有命令參數(shù)如表1所示:
表1 smbclient的參數(shù)及其含義
參 數(shù) |
含 義 |
?或help [命令] |
提供命令的幫助消息,當(dāng)不指定命令時提供一般的幫助 |
![shell命令] |
執(zhí)行指定的shell命令或者為用戶提供shell提示符 |
cd [目錄] |
更改服務(wù)器上的指定目錄(不是本地計算機)。如果不指定目錄,則smbclient報告當(dāng)前的工作目錄 |
lcd[目錄] |
在本地計算機上更改到指定的目錄。如果不指定目錄,則smb-client報告本地計算機上當(dāng)前的工作目錄 |
el[文件] |
如果用戶擁有權(quán)限,則刪除服務(wù)器上的指定文件。文件可以包含通配符 |
dir或ls[文件] |
列表顯示指定的文件 |
exit或quit |
退出smbclient程序 |
get |
獲得指定的遠程文件并在本地服務(wù)器上保存該文件。如果指定了本地名稱,則復(fù)制的文件以該文件名而不是遠程服務(wù)器上的名稱保存 |
mget[文件 |
復(fù)制所有指定的文件,包括所有匹配通配符的文件到本地計算機 |
md或mkdir[目錄] |
在遠程計算機上創(chuàng)建指定的目錄 |
rd或rmdir[目錄] |
在遠程計算機上刪除指定的目錄 |
put |
從本地計算機上復(fù)制指定的文件到服務(wù)器 |
mput[文件] |
從本地計算機上復(fù)制所有指定的文件到服務(wù)器 |
print[文件] |
在遠程計算機上打印指定的文件 |
queue |
顯示在遠程服務(wù)器上排隊的所有打印作業(yè) |
(3)用smbclient工具訪問局域網(wǎng)上的其他系統(tǒng)
為了訪問方便,可以使用smbmount命令允許將一個Samba共享加載為本地目錄。要實現(xiàn)該功能,在本地工作站創(chuàng)建一個/mnt/test目錄。使用root用戶運行以下命令:
#/usr/sbin/smbmount ‘//15.26.40.10/homes’ ‘/mnt/test’ –U gong
該命令應(yīng)在本地機器上運行,而且該機器應(yīng)已經(jīng)包含/mnt/test目錄。Samba服務(wù)器在IP地址為15.26.40.9的機器上,本地機器可以通過網(wǎng)絡(luò)可以訪問此服務(wù)器。注意任何解析為該IP地址的名字都可以替換該IP地址。在本地計算機上運行上述命令,以用戶gong登錄,將[homes]段中定義的共享加載到本地/mnt/test目錄。
要卸載該目錄,可作為root用戶運行下面的命令:
#smbumount /mnt/test
(4)用LinNeighborhood訪問局域網(wǎng)上其他系統(tǒng)的共享文件
LinNeighborhood基于GUI界面,可用于在Linux系統(tǒng)下瀏覽局域網(wǎng)上運行Windows操作系統(tǒng)的“網(wǎng)絡(luò)鄰居”或其他運行Samba的Linux系統(tǒng)共享文件。下面介紹LinNeighborhood的用法。
1)下載LinNeighborhood軟件包:首先到網(wǎng)上下載LinNeighborhood軟件包。一般情況下LinNeighborhood軟件包的提供形式是.tar.gz文件,現(xiàn)在的最新版本是0.6.5版,其文件名為LinNeighborhood-0.6.5.glibc-i386.tar.gz。下載后保存到某個目錄。這里假設(shè)用戶保存到/temp目錄。
2)解壓縮并解包文件:執(zhí)行下述命令可以完成文件的解壓縮和解包。
#cd /temp //切換目錄 #tar xvfz LinNeighborhood-0.6.5.glibc-i386.tar.gz //解壓縮
3)執(zhí)行程序:軟件不用任何設(shè)置,就可以直接執(zhí)行。若欲執(zhí)行LinNeighborhood,直接找到可執(zhí)行文件輸入LinNeighborhood命令即可。例如步驟(2)解壓縮解包后,可以輸入以下命令執(zhí)行程序:
//找到LinNeighborhood可執(zhí)行文件所在目錄,輸入可執(zhí)行文件名打開LinNeighborhood
#cd /temp/LinNeighborhood-0.6.5.glibc-i386 #./LinNeighborhood
打開程序出現(xiàn)如圖3所示界面。
以上就是Samba服務(wù)器的簡易使用說明。在Linux下實現(xiàn)資源共享還有其他幾種方法,我們將在接下來幾天為您一一分解。
作者介紹:李洋,信息安全專家,博士畢業(yè)于中科院計算所,ACM/IEEE會員。自2001年以來一直從事計算機網(wǎng)絡(luò)信息安全領(lǐng)域的研發(fā)工作,曾主持和參與多項國家重點項目以及信息安全系統(tǒng)和企業(yè)信息安全系統(tǒng)的研發(fā)工作。具有豐富的系統(tǒng)應(yīng)用、管理、安全及內(nèi)核的研發(fā)經(jīng)驗。他的博客:http://patterson.blog.51cto.com/
【編輯推薦】