FreeBSD連載(66):安裝samba

2000年1月7日 13:42 王波

配置和使用Samba

  FreeBSD下實現SMB/CIFS協議的軟體為samba ── 一個可以運行在很多種Unix系統中的 著名自由軟體,它使得Unix對外如同一個Lan Manager伺服器,向Windows客戶提供檔案和打印服務。 Samba的目前版本為2.0,在FreeBSD下可以通過Packages Collection或Ports Collection進 行安裝。

  samba的主頁為http://samba.org,包括有大量samba的資源。

  雖然SMB協議主要用於Microsoft網路,但samba的出現與其無關。它是作者Andrew Tridgell 試圖在一台Sun工作站上完成DEC Pathworks功能的嘗試,以完成他的其他研究工作。Pathworks 是另一個基於SMB的伺服器。那時Andrew Tridgell對SMB和NetBIOS一無所知,但通過 分析DOS客戶端和Pathworks的行為,他完成了Samba的最初版本。此後隨著越來越多的人加入Samba的 開發,Microsft也公開了SMB的文檔,Samba也越來越完善。使用Samba的使用者一般都會使用過Windows NT等其他SMB伺服器,根據他們的經驗,Samba伺服器的性能要超過其他的各種SMB伺服器,包括Windows NT。

  samba軟體的主要組成部分有:

  smbd:這就是samba的SMB伺服器,它使用SMB協議與客戶連接,完成事實上的用戶認証、權限管理和 檔案共享任務﹔

  nmbd:提供NetBIOS名字服務的守護進程,可以幫助客戶定位伺服器和域,如同Windows NT上 的WINS伺服器﹔

  smb.conf:是samba的配置檔案,在FreeBSD中它被放在/usr/local/etc目錄中 。

  swat:是一個Samba專用的WWW伺服器,用於通過客戶瀏覽器配置samba,提供了對Samba的圖 形配置界面﹔

  smbclient:是一個簡單的SMB客戶程序,用於訪問其他SMB電腦共享的檔案或打印資源,例如Windows95 或NT電腦,它的操作和ftp類似。

  smbprint:一個shell腳本,它使用smbclient向Windows電腦上共享出的印表機上 發送要打印的文檔。

  nmblookup:用於查詢NetBIOS名字的命令行工具。

  • 安裝samba

當使用Packages Collection安裝了Samba之後,將自動安裝一個啟動腳本samba.sh.sample到/usr/local/etc/rc.d目錄中,可以將其更名為samba.sh,用於電腦啟動時自動啟動samba伺服器smbd和nmbd。但要啟動samba,還需要更改/usr/local/etc/目錄下的配置檔案smb.conf,安裝程序將自動安裝一個樣例檔案smb.conf.default,可以將其復制為smb.conf檔案,然後再進行修改。

# pkg_add samab-2.0.2.tgz
# cd /usr/local/etc
# cp smb.conf.default smb.conf
# cd rc.d
# cp samba.sh.sample samba.sh
# sh samba.sh
Samba

  為了正常使用samba,必須對smb.conf進行配置,可以直接編輯配置檔案,或者使用圖形設置界面進行 設置。由於samba是一個非常流行的SMB伺服器,因此存在多種圖形界面的配置程序,samba2.0本身提供的 swat就是其中的一種,它作為一個Web伺服器,可以通過WWW瀏覽器來配置smb.conf。但是即使能通過圖形界 面進行設置,但手工編輯smb.conf仍然是最基本的設置方式。

  如同上面的執行命令中所顯示的,預設的smb.conf就正常啟動samba伺服器,只是預設配置並不一定適 合用戶的具體設置情況。例如域(或工作組)名字預設為MYGROUP,而實際網路中則不一定使用這個名字。下面的命令 使用Samba提供的smbclient客戶程序,查看預設smb.conf啟動的samba伺服器的設置。

# smbclient -L localhost -U%
Added interface ip=202.102.245.60 bcast=202.102.245.255 nmask=255.255.255.0
Domain=[MYGROUP] OS=[Unix] Server=[Samba 2.0.2]

        Sharename      Type      Comment
        ---------      ----      -------
        IPC$           IPC       IPC Service (Samba Server)
        ascii          Printer   lj5gray-a4-ascii-mono
        lp2            Printer   lj5gray-a4-auto-mono
        lj5gray-a4-ra  Printer   lj5gray auto raw
        wb             Disk      Home Directories

        Server               Comment
        ---------            -------
        fbsdsrv              Samba Server

        Workgroup            Master
        ---------            -------
        MYGROUP 

  從這個輸出結果可以看出,預設使用的工作組為MYGROUP,提供共享的資源有IPC$,用戶個人目錄wb, 以及系統中存在的多個印表機資源。samba使用電腦的hostname生成它NetBIOS名字fbsdsrv。

  最一般的情況下,只需要將工作組名字改動為與具體網路使用的名字相一致,就能使得使用Windows電腦的 客戶正常訪問samba伺服器了,用戶在登錄Windows的時候,使用自己在samba所在的Unix伺服器上的用 戶名和密碼登錄,那麼就可以訪問samba伺服器上自己的個人目錄及印表機資源了。

  FreeBSD將Samba的文檔安裝到/usr/local/share/doc/samba目錄下,一些 設置檔案的例子被安裝到/usr/local/share/examples/samba目錄下,這些文檔和例子對於 理解SMB協議,正確設置Samba都是非常重要的參考資料。

  • 啟動samba方式

啟動samba的基本方法是使用Package中提供的shell程序 ── 安裝在/usr/local/etc/rc.d目錄下的samba.sh。這個程序將會以守護進程的方式啟動smbd和nmbd兩個守護進程(啟動時使用-D參數)。這樣在電腦啟動時就能自動啟動samba伺服器。

除了直接啟動之外,還可以使用超級伺服器inetd來啟動samba,這時inetd.conf中應該包括以下行:

netbios-ssn    stream    tcp  nowait  	root /usr/local/sbin/smbd     smbd

netbios-ns dgram udp wait root /usr/local/sbin/nmbd nmbd

  其中netbios-ssn和netbios-ns是在/etc/services中定義的兩個用於NetBIOS 的端口,一個用於NetBIOS會話管理,一個用於NetBIOS名字解析。當這兩個端口就被inetd占據之 後,使用上面啟動腳本或直接啟動smbd和nmbd就無法成功。但由於inetd效率較低,啟動伺服器較慢,這種配置 只適合偶爾共享自己的檔案的電腦,不適合會被頻繁訪問的檔案/打印伺服器。

  當使用samba.sh啟動samba之後(或者使用inetd來啟動samba),就可以從Windows 客戶機的網路鄰居中發現這個FreeBSD伺服器。或者使用net use命令直接訪問伺服器。

  由於一般在Windows中沒有配置WINS伺服器,那麼就可能會出現名字解析的問題。為了幫助進行名字解析 ,可以在Windows的lmhosts檔案中增加samba伺服器的NetBIOS名字和IP配置,幫助Windows 解析名字。或者使用samba作為NBNS伺服器。

  samba在/var/log下留下了大量的訪問日誌檔案,日誌檔案的名字在smb.conf中定義。通常日 志檔案以log開頭,以用戶名或電腦的NetBIOS為後綴,例如一台電腦NetBIOS名字為cca,那麼它訪 問這台伺服器的日誌檔案就為log.cca。