高健智 E-mail:gau@mail1.tmtc.edu.tw
NT最令人感到方便的特色莫過於『網路上的芳鄰』的檔案分享功能,有了這項功能後,使得辦公室、校園裡資料的傳遞與分享得以落實。以往在Linux的世界裡其實也有NFS可以在Unix Like的作業系統下做檔案分享,但是與Windows作業環境的整合還是缺乏溝通的橋樑。
自從Samba Server出現後,非但建立了Linux與Windows環境的溝通管道,也可以做為Print Server提供Win98/NT遠端連線列印;若是使用Samba Server搭配Apache Web Server,可在Win98/NT環境下藉由『網路上的芳鄰』登入Linux主機裡使用者的個人帳號放置網頁目錄,有了這項功能,編輯個人網頁就如同在本機操作一般方便。除此之外,Samba Server也可以完全取代NT PDC(Primary Domain Controler)成為NT網域主控者管理NT網域機群,當然,Samba也可以將目錄、檔案分享給其他Unix Like、Mac、OS/2的機器使用,應用層面可以說是相當廣闊,更令人驚訝的是Samba Server也可做為WNS Server,若配合DHCP Server更可以管理大型NT網域,想想!這個集合眾多優點的伺服器,是不是會對不同機種的作業系統工作環境在整合上有著極大的助益呢?
您可將Samba 定位為一套功能極為強大的檔案伺服器軟體,所謂檔案伺服器就是將檔案伺服主機上的目錄分享出來,讓您可以透過網路對分享出來的目錄裡的檔案,做執行、讀取、寫入等動作。基本上NT的網域是使用Netbios做電腦命名服務,使用廣播封包來偵測網路上有哪些電腦、哪些目錄提供資源分享,而Samba與UNIX主機間的溝通(如目錄、檔案分享)是透過TCP/IP協定達成任務,Samba若要與NT網域做溝通,透過TCP/IP當然是行不通的,只好也使用Netbios對NT網域做廣播,讓windows機器能夠認識它,進而成為NT網域成員;因此Samba是使用smbd Daemon透過TCP/IP聯繫Unix Like主機,而使用nmbd Daemon透過Netbios對NT網域做聯繫,也就是說Samba使用兩種機制達成資源分享的目的。
註:smbd Daemon主要用來處理檔案分享和列印分享服務;nmbd Daemon則用來處理wins名稱解析服務及NT Browser Service(即網路上的芳鄰)。
要使用Samba Server相當容易,在安裝好Redhat+Cle的Server套件後,只要設定好工作群組,啟動Samba Server後就可以正常運作,您可以立即在 Windows 95/98/NT 下的『網路上的芳鄰』裡看到執行Samba服務的Linux 主機名稱。
注意:Samba 目前發展到2.0 版本,若您想安裝或昇級最新RPM版本的Samba Server,請到下列URL位址下載:
ftp://163.21.236.26/works/rpms/ samba-2.0.5a-12.i386.rpm
再使用root身分利用rpm指令做升級安裝即可:
# rpm -Uvh samba-2.0.5a-12.i386.rpm
若您想在一開機時讓系統自動啟動Samba Server,請使用Linuxconf做設定,步驟如下:
安裝好Samba後若要立即啟動服務,請如下步驟啟動:
若沒有意外的話,您應該可以看到系統啟動smbd、nmbd兩個Daemon。
Samba 所使用的通訊協定是 Tcp/Ip ,因此當您欲使用Samba 做為檔案伺服主機時,請確定 Client 端的 Windows 95/98/NT 也安裝了TCP/IP協定。
【基本組織架構】
Samba的組織結構相當簡單,您只要對 /etc/samba.conf 組態檔做設定即可,以往您必須懂得samba的指令才能設定組態檔,不過這種方式已經過時了,因為設定samba組態可透過web模式做設定(利用SWAT),也可使用linuxconf做設定,不過建議您還是使用linuxconf做設定會最簡潔易懂。
※注意:當您安裝完Samba套件後,也立即擁有以下的Samba工具:
【工作群組】
Samba Server的使用觀念是使用網路上的工作群組,而Samba主機就是網路工作群組上的成員之一。在NT網域裡登入NT網域需要輸入使用者名稱、密碼及指定的登入網域,對Samba而言,則是輸入使用者名稱、密碼及工作群組,而使用者名稱及密碼可設定與登入linux的帳號、密碼相同,或自訂登入Samba Server的密碼。
當您將Samba Server設定為網域主控者時,假設Samba工作群組名稱為mygroup,那麼網域(NT網域)內就不可以有NT PDC存在,此時請將網域內所有機器的工作群組名稱皆取名為mygroup,如此一來,Samba Server將管理mygroup群組所有的機器。當您在Win98/NT登入Samba Server工作群組後,利用『網路上的芳鄰』即可使用個人帳號目錄及共用的分享目錄。
當您將Samba Server設定為網域獨立伺服主機時,只需要將Samba的工作群組設定為NT網域名稱,即可將Samba主機加入NT網域。若您在Win98/NT登入NT網域後(必須在Linux主機上有此帳號),利用『網路上的芳鄰』即可使用個人帳號目錄及共用的分享目錄。若您是使用administrator身分登入NT PDC主機,除了利用『網路上的芳鄰』外還需提供登入Samba Server的帳號及密碼才可使用個人帳號目錄及共用的分享目錄。
總而言之,一但以windows95/98/NT登入Samba Server後,您就可以使用『網路上的芳鄰』對分享的檔案做讀取、搬移、複製、刪除等動作,當然您可在Samba主機上對分享的檔案做權限管理,相信您現在大致已了解Samba是如何的易於使用。
【連線方式】
若您設定使用「Redhat Linux主機的帳號與密碼做為登入Samba Server的帳號與密碼」時,由於win95OSR2之前版本及NT SP3之前版本的密碼機制是不加密的純文字密碼,當登入Samba Server時可傳送不加密的純文字密碼給Samba,因而輕易認證登入。
而win98及NT SP3之後版本的密碼機制是屬於加過密的密碼,當登入Samba Server時所傳送的是加密的密碼給Samba,因而無法認證登入,此時,您必須為需要登入Samba Server的使用者帳號,利用smbpasswd這個工具程式建立登入Samba的密碼,當windows系列Client端登入Samba時,就可接受加過密的密碼做為認證,不過此時就無需使用「Redhat Linux主機的帳號與密碼做為登入Samba Server的帳號與密碼」,因為您已為使用者建立屬於登入Samba的密碼。您必須注意的是:登入Samba的使用者帳號必須是已存在於/etc/passwd檔內的Linux系統帳號,唯有如此,才能確保能使用個人帳號目錄。
五、Samba的基本組態設定
設定Samba的組態檔最基本可分為三個階段:Server基本設定、使用者home目錄的設定、目錄分享設定。至於「共用列表機設定」則是當您有需要時再做設定。若是在Samba 的組態設定檔/etc/smb.conf檔裡做設定,則是針對[global]、[homes]、[分享目錄]三大項目做設定。
【Server基本設定】
設定Samba的組態,必須先從主機基本設定開始,一般而言只要設定「工作群組」、「網域主控者」、「linux和samba使用相同的帳號與密碼」等幾個項目就夠了,請依如下步驟設定:
※ 注意:若是將Samba設定為獨立伺服器,則無須設定此項。
※ 若是在etc/smb.conf檔裡做設定,則是在[global]項目裡設定如下:
[global]
workgroup = MYGROUP ;不分大小寫
unix password sync = Yes
domain master = yes
【使用者home目錄的設定】
所謂的使用者home目錄是指,以使用者帳號登入Samba Server後個人所擁有的帳號目錄,如:以帳號root登入後,內定的個人目錄是 /root。一般而言,對「使用者home目錄的設定」著重於是否將此個人目錄分享出來及設定存取的權限,其餘項目大抵上是無需設定,請依如下步驟設定:
※ 注意:若您選擇了「Public access」、「Writable」兩個選項,並不代表所有的使用者皆有權利對您所分享的home目錄下的檔案具有寫入權,還得視檔案原來在Linux下的權限設定,例如,檔案權限為rwxr-xr-x(chmod 755),表示只有擁有者具可寫入權,此點務必留意。
※ 若是在etc/smb.conf檔裡做設定,則是在[homes]項目裡設定如下:
[homes]
browseable = yes
writable = yes
public = yes
【目錄分享設定】
使用Samba最大的用途當然是將特定的目錄分享出去,分享目錄的原則不外乎是讀寫權限及分享對象,把握此原則就可很迅速的設定好分享目錄,請依如下步驟設定:
1. 啟動linuxconf。
2. 按一下「Config」、「Server tasks」。
3. 按一下「Samba file server」、「Disk shares」。
4. 請在「Share name」欄位裡輸入欲分享出去目錄的名稱,如:public1,隨意命名無任何講究。
5. 在「Comment/description」欄位裡輸入對欲分享出去目錄的簡單敘述,如:share works,隨意描寫無任何講究。
6. 在「Directory to export」欄裡輸入實際欲分享出去目錄的絕對路徑,如:/works,並且務必選擇「This share is enabled」選項。
7. 選擇「Public access」選項,可將 /works目錄分享給全部使用者讀取,但記得也要選擇「Browsable」選項才能生效。
8. 若要讓/works目錄分享給全部使用者能做寫入動作,請選擇「Writable」選項,就不在「write list」欄裡輸入特定的寫入對象。
※ 若是在etc/smb.conf檔裡做設定,則是自行輸入[works]項目,並設定如下:
[works]
comment = share works
browseable = yes
path = /works
public = yes
writable = yes
事實上,設定Samba並不容易,上述步驟僅針對一般的使用管理做設定,若您想使用Samba 的進階用法,請參考 /usr/doc/samba-2.0.5a/docs目錄下的說明文件:
【不加密的連線】
由於Samba內定的接受密碼機制屬於純文字密碼,當您設定好Samba Server 端後,此時若Client 端是 Windows 95 OSR2之前的版本或是Win NT SP3之前的版本,恭喜您,在登入本機時(假設使用kao帳號),直接使用『網路上的芳鄰』即可看「home」、「kao」、「works」三個分享目錄,這是因為Client傳送純文字密碼到Server端做為認證。
若Client 端是 Windows 95 OSR2以後的版本或是Win NT SP3以後的版本,因為Client傳送加密密碼到Samba Server端做為認證,則需設定為純文字密碼才可以與Samba Server連線。您必須使用『登入記錄編輯器』(regedit)對連線密碼形式做設定:
HKEY_LOCAL_MACHINE
System
CurrentControlSet
Services
VxD
VNETSUP
※注意:若是NT SP3以後的版本,則設定如下:
「HKEY_LOCAL_MACHINE」、「SYSTEM」、CurrentControlSet」、「Services」、「Rdr」、「Parameters」、"EnablePlainTextPassword"=dword:00000001
若是Windows 2000,則設定如下:
「HKEY_LOCAL_MACHINE」、「SYSTEM」、「CurrentControlSet」、「Services」、「LanmanWorkStation」、「Parameters」、"EnablePlainTextPassword"=dword:00000001
重新開機後,請使用 Linux 的帳號登入Windows 95/98/NT/2000後,開啟『網路上的芳鄰』就可以看到Samba預設的群組『MYGROUP』。
※注意:分享目錄works其實就是對應到/works目錄,kao則是個人帳號目錄。works目錄在網路芳鄰裡的使用方式,如同NT所分享出來的目錄一般,您可對此目錄裡的資料做讀取、寫入、搬移,相當的便利。
【加密的連線】
使用純文字密碼登入Samba的好處是:可享用現成的Linux帳號與密碼,但卻失去了安全性,此時您可採用加密的密碼登入Samba。為了讓Samba能對加密的密碼做認證,除了在基本設定裡需選擇「Encrypted password required」外,還需要使用smbpasswd為每一帳號建立samba密碼,其步驟如下:
當您做了如上設定後,Client 端是 Windows 95 OSR2以後的版本或是Win NT SP3以後的版本或是windows 2000,則不需要對registry的密碼項目做純文字密碼設定,直接就可登入Samba Server。
若是在/etc/smb.conf檔裡的[global]項目設定加密,如下所示:
encrypt passwords = yes
※注意:使用smbpasswd -a username之前,請先確定/etc/passwd檔裡存在username帳號。
smbpasswd -d username:停用username帳號
smbpasswd -e username:啟用username帳號
※註:samba的密碼檔是 /etc/smbpasswd,而系統的密碼檔是 /etc/ passwd,兩者的欄位形式與密碼欄加密方式皆不相同,請勿混淆,下列展示smbpasswd檔裡的欄位形式。
A B C D E
root:0:570CE399DA1412AB............:[U ]:LCT-3812D026:
kao:500:AAD3B435B51404E......9C0:[U ]:LCT-38243ABD:A欄:Samba使用者帳號
B欄:使用者帳號ID
C欄:加過密的密碼欄
D欄:使用狀態,U為使用中,DU為停用
E欄:最後更新時間
【使用SWAT做設定】
您除了可使用smb.conf檔及linuxconf對Samba做設定外,您也可以使用Swat以Web方式對Samba做設定,請以如下步驟設定:
swat 901/tcp
若不存在請加入。這是宣告Swat服務使用901 Port做TCP傳輸。
swat stream tcp nowait.400 root /usr/sbin/swat swat
;這是宣告以何種協定啟動swat
http://localhost:901/,如:http://192.168.1.16:901/
(主機網域名稱或IP Address)
使用『Samba Web設定』的這支程式特稱為『SWAT』,利用『SWAT』對Samba做設定似乎很相當好用,『SWAT』裡有相當清楚的操作說明及範例,讀者可自行參閱。由於『SWAT』是附屬於Samba裡,在SWAT裡所提供的設定項目,幾乎包括了所有Samba所提供的功能,設定項目之細是初學者所難以掌控,再則利用『SWAT』對Samba Server做設定,會嚴重影響利用Linuxconf對Samba所做的設定值,兩者所產生的smb.conf組態檔不太相容,因此建議讀者先對Samba有相當程度的了解後再使用『SWAT』,並且不使用Swat與Linuxconf做交互設定。
Swat可對Samba做極細緻的設定
※ 注意:無論是使用linuxconf或SWAT對Samba做設定,其實都是修改/etc/smb.conf Samba組態檔,您也可以使用Samba的專用指令在smb.conf檔裡做設定,例如下列所示:
【將Samba做為WINS Server】
Samba最大的功用除了做file Server外,還可以做Wins Server。Wins Server最大的好處是可在NT網域內做名稱解析,傳統上在Internet上做FQDN(Full Quality Domain Name)與IP address之間的轉換是藉由DNS做解析,但在區域網路裡尤其是NT網域,當您使用NT的Wins Server與NT的DNS做配搭時,假設有一台主機名稱叫做asp,所屬領域是test.edu.tw,IP位址是192.168.1.16,目前此部主機尚未在DNS上註冊,但是在DNS上啟動正反查都可藉由Wins解析,當您使用nslookup查詢asp主機時,您會發現可解析出192.168.1.16,並且觀察DNS上正查區域內,DNS自動將asp以A資源紀錄指定IP 192.168.1.16,而反查區域內,DNS自動將16.1.168.192.in-addr.arpa指到asp.test.edu.tw,這就是Wins的好處。
以往在NT網域內使用DNS+Wins Server可免去在DNS上登錄主機記錄,若再搭配DHCP Server那麼連Client端主機的IP也免輸入,一切由DHCP Server分配動態IP,再由DNS+Wins Server自動登錄主機FQDN與IP解析關係,這個簡單、易用組織網域的方法,如今也可以由NT DNS+Linux下的Samba+Linux下的DHCP來取代,因為Samba可擔任Wins Server或指定Wins Server做網域名稱解析。假設目前欲做wins+dhcp的linux主機IP為192.168.1.16,其設定方式如下:
*以下設定Samba為Wins Server
*以下設定Linux DHCP Server使用Wins 做名稱解析
設定完成後,您可使用nmblookup 查詢名稱解析,假設目前有一主機其名稱為asp,使用動態分配IP連線,所配得的IP位址是192.168.1.30,那麼當您使用nmblookup asp做名稱查詢時,則出現下列畫面:
[root@fortop kao]# nmblookup asp
192.168.1.30 asp<00>
若在使用asp主機上使用Winipcfg觀察IP資訊,您會發現一切將呈現令人滿意的結果:
當然,使用NT DNS+DHCP+WINS除了可分配動態IP外,『網路上的芳鄰』、區域內主機FQDN與IP的對應關係皆可正常運作。
Samba除了可做為File、Wins Server外,還可做為Printer Server,設定方法其為簡單:
* 接下來設定win95/98/NT Client端
您會發現有了Samba後,NT所具備的優點似乎皆被取代了!
NT對分享出的目錄可針對特定群組、使用者做權限管理,同樣的,Samba也能做到,並且能夠更精細的權限管理。在Samba裡對於目錄的管理可區分為『使用者帳號目錄』與『共享目錄』,『使用者帳號目錄』是在Samba的「Defaults」項目裡做設定,『共享目錄』則是在Samba的「Disk shares」項目裡做設定,其設定方式是不一樣的。
首先就以「Defaults」項目為例,說明如何做Samba存取控制:
再以「Disk shares」項目為例,說明如何做Samba存取控制:
Samba除了提供Server方面的服務外,也可以充當Samba Client端登入其他Samba Server或win 95/98/NT所分享出來的目錄,要享用這些網路上的分享資源並不難,只要使用smbclient這支程式就可輕易達成目的,使用smbclient登入其他主機的用法如下:
A B C
# smbclient //redhat/works -U kao
Password:
smb: \>A:所要登入的主機名稱,NT網域內的主機名稱。
B:欲登入的主機所分享出來的目錄名稱。
C:-U username,欲登入主機的使用者帳號
當您執行smbclient該行指令後,接著smbclient會詢問您登入主機的使用者帳號密碼,輸入完密碼若正確即可出現 smb: \>提示符號,表示已登入資源分享主機的目錄裡。或許您會覺得有點納悶,一般win95/98/NT所分享出來的資源是直接分享出來,何來登入的帳號及密碼,那麼smbclient後所輸入的帳號及密碼是從何而來的?事實上,由於目前的Samba Server是NT網域上的一員,只要您使用Linux的帳號即可登入,甚至您乾脆使用如下方式登入主機:
# smbclient //redhat/works
Password:
smb: \>
也就是說不輸入使用者名稱,當出現Password:時,直接按一下[Enter] 鍵即可登入win95/98/NT所分享出來的目錄,但這對於登入其他 Samba Server是行不通的,您還是得乖乖的輸入使用者帳號及密碼。
一但您以smbclient登入其他提供資源分享的主機後,在此文字模式下,您可使用類似ncftp的指令下載、上載檔案或目錄,請輸入help查看可使用的smbclient指令:
smb: \> help
ls dir du lcd cd
pwd get mget put mput
rename more mask del open
rm mkdir md rmdir rd
prompt recurse translate lowercase print
printmode queue cancel quit q
exit newer archive tar blocksize
tarmode setmode help ? !
smb: \>
下面列舉幾個常用的smbclient指令:
下列以Samclient登入Win95 book主機的net32目錄為例,對smbclient的文字模式與實際的//book/net32做一比較
若您想要知道目前Samba的連線狀態,您可以使用smbstatus工具或是linuxconf裡Samba file server的smbstatus觀察連線狀態,如下圖所示:
而testparm這個工具則可讓您測試smb.conf組態檔定義是否正確,如下圖所示:
testprns工具則可讓您測試定義在printcap檔裡的列表機,如:
# testprns lp
看了本文之後,相信您對Samba應該有了一些概念,的確,Samba是個相當強悍的Server,本文所介紹的Samba功能還未用到全部功能的3/4。在組織網域內的機群時,別忘了Samba+dhcp+NT DNS可幫您有效、快速的完成任務,下期將為您詳細介紹Dhcp Server。
1. http://www.samba.org:samba組織。
2. /usr/doc/samba-2.0.5a/docs/:Samba文件目錄及windows的registry。
3. /usr/doc/samba-2.0.5a/docs/manpages:Samba各類工具的man 文件。
4. /usr/doc/samba-2.0.5a/docs/textdocs:Samba各類工具的text形式文件。
5. /usr/doc/samba-2.0.5a/examples:Samba組態檔設定範例。