[ 永遠的UNIX::UNIX技術資料的寶庫 ]   GB | BIG5

首頁 > 應用技術 > 其它 > 正文
Samba-HOWTO最新匯集--1. 如何安裝並測試Samba
本文出自: http://6bytes.com/meaculpa 編譯:meaculpa (2001-05-31 10:08:00)
Samba計劃文檔 (初稿)
Samba小組
編譯:meaculpa 

中文譯稿聲明: 

該文檔是Samba軟件的一部分,受GNU GPL保護,使用時請注意版權問題;由譯者水平有限,錯誤之處在所難免,希望各位讀者來信指正,由此產生的一切果,本人概不負責。 


--------------------------------------------------------------------------------


--------------------------------------------------------------------------------

概要
本文檔匯集了Samba文檔歷年來的HOWTOs。我試圖確保所有內容都是最新的,但有時一個人維護不了這大的項目。你可以在http://www.samba.org/的“Documentation”找到這份文檔的最新版本,有更新的話寄給jerry@samba.org。

幹杯,jerry


--------------------------------------------------------------------------------

第1章. 如何安裝並測試Samba
目錄表 
1. 如何安裝並測試Samba 
1.1. Step 0: 閱讀手冊頁 
1.2. Step 1: 編譯二進制 
1.3. Step 2: 所有關鍵步驟 
1.4. Step 3: 建立配置文件 
1.5. Step 4: 用testparm測試你的配置文件 
1.6. Step 5: 啟動smbd和nmbd進程 
1.6.1. Step 5a: 從inetd.conf啟動 
1.6.2. Step 5b. 可選法:以台進程啟動 
1.7. Step 6: 嘗試列出服務器可獲得之共享項 
1.8. Step 7: 嘗試從UNIX客戶端建立連接 
1.9. Step 8: 嘗試從DOS、WfWg、Win9x、WinNT、Win2k、OS/2及其它客戶端建立連接 
1.10. 如不工作咋辦? 
1.10.1. 診斷問題 
1.10.2. 范圍ID 
1.10.3. 選擇協議級別 
1.10.4. 從UNIX向PC客戶端進行打印 
1.10.5. 鎖定 
1.10.6. 映射用戶名 
1.10.7. 其它字符集 



1.1. Step 0: 閱讀手冊頁
Samba發布版中所帶的手冊頁包含了大量有用的信息,如果你不知道怎樣閱讀它們,可以試試下面的命令:

$ nroff -man smbd.8 | more

在Samba的網站http://www.samba.org可以找到其它的資源。


--------------------------------------------------------------------------------

1.2. Step 1: 編譯二進制
先運行source目錄中的./configure 程序。它會自動根據你的操作系統情況來對Samba進行配置,如果你有特殊要求可以運行:

root# ./configure --help

這樣就可以看到想要的特殊選項。然,再執行:

root# make

這樣就開始創建二進制程序。當編譯成功你就可以用:

root# make install

來安裝二進制程序和手冊頁了。還可以用下面的命令分別安裝二進制程序和/或手冊頁:

root# make installbin



root# make installman

注意,如果你正在對以前的版本進行升級,那原來老版本的二進制程序已經更名為帶“.old”擴展了。如果你發現當前版本有問題,可以用下面的命令退回到以前的版本:

root# make revert


--------------------------------------------------------------------------------

1.3. Step 2: 所有關鍵步驟
在這一步你必須為自己準備好一杯咖啡或其它刺激性的飲料。安裝過程有時很復雜,所以可能會需要這樣的東西。如果你以前安裝過Samba則可以跳過這一步。


--------------------------------------------------------------------------------

1.4. Step 3: 建立配置文件
在發布包的examples子目錄裡有一份配置文件的樣本。我建議你仔細閱讀這個文件,看看各選項在實際使用中是如何搭配的。所有選項的信息請參見手冊頁。

下面是最簡單實用的配置文件:

[global]
workgroup = MYGROUP

[homes]
guest ok = no
read only = no
 

通過這樣的配置,服務器上的用戶只要用他們的賬號就可能通過服務器與自己的主目錄進行連接。(注意工作組也可以設置為Samba要加入的工作組名,請參見BROWSING.txt中的內容)

注意用make install不會安裝smb.conf文件,你需要自己建立這個文件。(可以從發布包的examples/子目錄裡拷嘛)

然把這個文件放到Makefile文件中指定的相應目錄裡(缺省查找/usr/local/samba/lib/目錄)。

關設置[homes]共享項的安全性請參考UNIX_SECURITY.txt文件。


--------------------------------------------------------------------------------

1.5. Step 4: 用testparm測試你的配置文件
用testparm程序測試smb.conf文件非常重要。如果testparm運行OK就會列出可裝載的服務項,否則會給出出錯信息。在繼續之前請確保它運行OK,並且服務項都符合要求。


--------------------------------------------------------------------------------

1.6. Step 5: 啟動smbd和nmbd進程
你必須選擇是以台進程方式還是從inetd裡啟動smbd和nmbd,注意二者只能選其一。要把它們放到inetd.conf,然由inetd根據需要來啟動;要從命令行或從/etc/rc.local裡以台進程方式啟動。參見手冊頁中有關的命令行選項,特別要注意的是啟動Samba的賬號,通常必須是root。

以台進程方式啟動smbd和nmbd的主要優勢是,對初始化連接請求的響應要更快一點,不過這並不是個太大的問題。


--------------------------------------------------------------------------------

1.6.1. Step 5a: 從inetd.conf啟動
注意:如果你用NIS或NIS+來分發服務映射表的話,就會與以下方法有所不同。

找到/etc/services中所定義的端口139/tcp。如沒有就把下面這行加進去:

netbios-ssn 139/tcp

類似的,還應該有如下這樣的端口137/udp定義:

netbios-ns 137/udp

接著編輯/etc/inetd.conf並加入下面這兩行:

netbios-ssn stream tcp nowait root /usr/local/samba/bin/smbd smbd
netbios-ns dgram udp wait root /usr/local/samba/bin/nmbd nmbd
 

各種UNIX版本中的/etc/inetd.conf其語法可能也不同。參考一下該文件中其它項目的格式。

注意:有些UNIX的/etc/services已經包含了諸如netbios_ns這樣的項目(小心下劃線)。你必須編輯/etc/services或者/etc/inetd.conf使它們一致。

注意:在很多系統上你必須使用smb.conf中的“interfaces”選項來指定系統接口的IP地址及掩碼。如果你不知道網絡的廣播地址,請以root身份運行ifconfig。nmbd會在運行時嘗試檢測廣播地址,但在有些系統上這樣做就會失敗。如有必要請參見“testing nmbd”部分獲得查找方法。

!!!警告!!!多數UNIX的inetd.conf只接受大約5個命令行參數。也就是說你不應該在選項和參數間用太多空格,或者使用一個腳本並讓它從inetd啟動。

接著重新啟動inetd,為此你只要給它發信HUP信號就可以了。如果你已安裝了一個以前版本的nmbd,那還需要把它殺一下。


--------------------------------------------------------------------------------

1.6.2. Step 5b. 可選法:以台進程啟動
要以台進程方式來啟動服務器,應該創建一個如下這樣的腳本,並起名為諸如startsmb。

  #!/bin/sh
/usr/local/samba/bin/smbd -D 
/usr/local/samba/bin/nmbd -D
 


然用chmod +x startsmb這個命令使它可執行。當然你可以手工運行startsmb或者從/etc/rc.local啟動。給nmbd和smbd各發一個殺進程信號就可以使它們停止運行。

注意:如果你用的是SVR4風格的init系統的話,可以改一下examples/svr4-startup這個腳本以使它適用你的系統。


--------------------------------------------------------------------------------

1.7. Step 6: 嘗試列出服務器可獲得之共享項
$ smbclient -L yourhostname

用上面這個命令,就可以得到一份服務器上可獲得的共享項列表,不然的話就是設置上出了什問題。注意,這個方法也可以用查看其它LanManager客戶端(如WfWg)可獲得的共享信息。

如果選用了用戶級安全,則Samba會在列出共享列表前要求你輸入口令。詳情請參見smbclient的手冊頁。(你可以在命令行上加入選項-U%來強迫它列出共享列表,但對非Samba服務器就不能這做了。)


--------------------------------------------------------------------------------

1.8. Step 7: 嘗試從UNIX客戶端建立連接
$ smbclient //yourhostname/aservice

命令中的yourhostname應該是安裝了smbd程序的主機名。而aservice就是在smb.conf文件中定義了的服務項。如果在smb.conf中定義了[homes]段的話可以試著用你的用戶名來連接。例如,如果你的UNIX主機是bambi,而你的用戶名是fred的話,該命令就應該是:

$ smbclient //bambi/fred


--------------------------------------------------------------------------------

1.9. Step 8: 嘗試從DOS、WfWg、Win9x、WinNT、Win2k、OS/2及其它客戶端建立連接
要裝載磁盤的話:

C:\WINDOWS\> net use d: \\servername\service

要打印的話:

C:\WINDOWS\> net use lpt1: \\servername\spoolservice

C:\WINDOWS\> print filename

至此,你已經安裝成功,否則請向我匯報bug!


--------------------------------------------------------------------------------

1.10. 如不工作咋辦?
如果你萬事不順並開始考慮“是誰寫了這一大堆的垃圾”的話,我建議你再做一次step 2(或多次),直到你平靜下來。

然你可以去讀一下DIAGNOSIS.txt和FAQ。如果還是卡住的話請試一下郵件列表和新聞組(詳情參見README)。Samba已經在世界上數千個站點成功安裝,所以可能已經有人已經遇到並解決了你的問題。你還可以到WWW站點去查一下Samba-digest發布的消息。

當你修正了什問題,請給我發回更新的文檔或源代碼,以方便來人。


--------------------------------------------------------------------------------

1.10.1. 診斷問題
如果你有安裝方面的問題請參考DIAGNOSIS.txt,看看能否找到該問題。


--------------------------------------------------------------------------------

1.10.2. 范圍ID
缺省情況下Samba會用一個空的范圍ID。這樣的話,所有的windows機器也必須有一個空范圍ID。如果你真想用非空的范圍ID,就需要在nmbd、smbd和smbclient命令中使用-i 選項,不過這樣一來所有的機器都必須具有相同的設定。不推薦使用范圍ID。


--------------------------------------------------------------------------------

1.10.3. 選擇協議級別
SMB協議有很多別名,現在Samba支持5種,它們分別是CORE、COREPLUS、LANMAN1、LANMAN2和NT1。

你可以在smb.conf文件中選擇支持最高級的協議。缺省為NT1,對大多數站點來說這是最合適的。

以前一些版本的Samba必須使用COREPLUS,現在已經修正了這種限制,而且已經不太需要使用低LANMAN1的協議了。保留COREPLUS只是兼容一些少數情況,如WfWg要在該協議中保持口令的大小寫格式,而在LANMAN1、LANMAN2或NT1下所有的口令在被發送前都轉換為大寫,所以在某些情況下你可能要強制使用“password level=”選項。

使用LANMAN2和NT1主要的好處是支持一些客戶的長文件名(如smbclient、Windows NT或Win95)。

詳情請參見smb.conf(5)手冊頁。

注意:如要支持打印隊列報表,則在WfWg下必須用TCP/IP作為缺省協議。如果在有些系統上把NetBEUI作為缺省的話,就會打斷打印隊列報表,這大概是WfWg的一個bug。


--------------------------------------------------------------------------------

1.10.4. 從UNIX向PC客戶端進行打印
要從一台UNIX主機使用smb服務器上的打印機,就需要編譯smbclient程序。然還需要安裝“smbprint”腳本。詳情請閱讀smbprint的使用說明。

另外還有一個具有同樣功能的SYSV風格腳本smbprint.sysv,它也有使用說明。


--------------------------------------------------------------------------------

1.10.5. 鎖定
有時鎖定會產生一些麻煩。

SMB服務器要實現兩種類型的鎖定。第一種是“記錄鎖定record locking”,它允許一個客戶鎖定一個打開文件的一段字節;第二種就是“拒絕模式deny modes”(譯者注:也稱“共享模式”),它在打開文件時指定的。

Samba使用UNIX系統調用fcntl()來支持“記錄鎖定”。而通常實現的方法是用rpc來調用服務器上運行的rpc.lockd進程。不幸的是rpc.lockd實現問題太多了,特別是要與其他版本進行對話的情況。rpc.lockd崩潰並不是什稀罕事兒。

還有一個問題是,把PC客戶端產生的32位鎖定請求轉換為多數UNIX所支持的31位請求。但很多PC應用程序(典型的如OLE2應用)使用字節范圍(其中最高位為標志位)的方式進行工作。Samba嘗試通過轉換來支持這類應用程序,並且這樣的轉換被証明是相當成功的。

嚴格意義上的SMB服務器應該在每次讀寫被調用文件之前檢查其鎖定情況。但fcntl()按上述方式來工作速度可能比較慢,而且會使rpc.lockd過載。當然這幾乎也是不必要的,如果鎖定對客戶來說非常重要的話,他們應該在讀寫之前獨立生成鎖定調用。缺省情況下,Samba只在客戶明確要求時才生成鎖定調用,但如果你設置了“strict locking = yes”選項的話,它會在每次讀寫時生成鎖定調用。

你還可以使用“locking = no”完全禁止記錄鎖定。用那些不支持或不需要鎖定的共享項(如cdrom)。此時,Samba會向客戶端返回一個偽造的代碼。

第二種鎖定叫“拒絕模式”。它是在應用程序打開文件並決定允許的訪問類型時設置的。客戶端可以請求的模式有DENY_NONE、DENY_READ、DENY_WRITE或DENY_ALL。另外還有特殊兼容模式DENY_FCB和DENY_DOS。

在那些負載沉重的、執行共享模式代碼很慢的服務器上,可以用“share modes = no”選項禁止共享模式。如果你的操作系統支持的話,可以使用共享內存加快共享模式的執行,詳情參見Makefile文件中的FAST_SHARE_MODES選項。


--------------------------------------------------------------------------------

1.10.6. 映射用戶名
要映射PC及UNIX服務器的用戶名,可以去看一下smb.conf中“username map”選項。詳情參見smb.conf的手冊頁。


--------------------------------------------------------------------------------

1.10.7. 其它字符集
如果文件名使用重音字符(如德語、法語或斯堪的納維亞語)有問題,那最好去看一下smb.conf中的“valid chars”選項以及examples目錄中的validchars軟件包。


(http://www.fanqiang.com)
    進入【UNIX論壇

相關文章
巧配samba實現WIN2000和Linux文件共享 (2001-12-23 08:30:00)
Samba的圖形化配置工具-SWAT (2001-10-01 07:00:00)
Samba的三種典型配置 (2001-09-30 13:05:00)
如何利用Samba實現Linux與Windows98的資源共享 (2001-09-30 09:05:00)
Samba的簡介 (2001-09-30 08:05:01)
Samba 和 Windows 的密碼處理認証方式 (2001-09-30 07:05:00)
RedHat6.2服務器配置方案大全--第三章 DHCP,第四章 Samba (2001-09-28 09:00:00)
中文man手冊:smbstatus - 報告當前samba的聯接狀態 (2001-09-22 13:05:00)
中文man手冊:make_smbcodepage - 為Samba創建代碼頁文件 (2001-09-21 08:00:00)
尋找Linux下的網絡鄰居(圖形工具:gnomba,Tk Samba,xSMBrowser,LinNeighborhood) (2001-08-24 09:00:00)

===更多相關===
 

★  樊強制作 歡迎分享  ★