章 48. Samba

內容目錄

48.1. 設定伺服器
48.2. 做為登入伺服器的 Samba
48.3. 使用 YaST 設定 Samba 伺服器
48.4. 設定用戶端
48.5. 最佳化

摘要

使用 Samba,就可以將 Unix 機器設為 DOS、Windows 以及 OS/2 機器的檔案與列印伺服器。Samba 已經是一個開發至完全成熟且相當複雜的產品。除了說明基本功能,本章節還會介紹 Samba 組態的基本概念,並說明可在網路中設定 Samba 的 YaST 模組。

可在數位文件中取得更多有關 Samba 的資訊。如果已安裝 Samba,若要取得更多的線上文件與範例,請在指令列輸入 apropos samba 以顯示部分手冊頁面或直接瀏覽 /usr/share/doc/packages/samba 目錄。在 examples 子目錄中可以找到加備註的範例組態。(smb.conf.SuSE)。

隨附 samba 套件版本 3 的一些重要新功能包含:

[Tip]移轉至 Samba3

將 Samba 2.x 移至 Samba 3 時,有一些特殊的項目需要考慮。此主題的討論包含在「Samba HOWTO 文件集」中,裡面有整個章節專門討論它。在安裝 samba-doc 套件後,可以在 /usr/share/doc/packages/samba/Samba-HOWTO-Collection.pdf 中找到 HOWTO。

Samba 使用依據 NetBIOS 服務的 SMB 通訊協定 (伺服器訊息區塊)。由於來自 IBM、Microsoft 發行了此通訊協定的壓力,因此其他的軟體製造商可以建立對 Microsoft 領域網路的連線。使用 Samba 時,SMB 通訊協定就可以在 TCP/IP 通訊協定上運作,因此 TCP/IP 通訊協定必須安裝在所有的用戶端上。

NetBIOS 是用來進行機器之間通訊的軟體介面 (API)。在此提供了名稱服務。它允許連線至網路的機器保留自己的名稱。在保留後,就可以使用名稱來定址這些機器。在此沒有檢查名稱的中央程序。在網路上的任何機器都可以保留它所需的任何數量名稱,只要這些名稱尚未使用。現在可以針對不同的網路架構實行 NetBIOS 介面。有一個與網路硬體一起緊密運作的執行程序,稱為 NetBEUI,不過這通常稱為 NetBIOS。與 NetBIOS 一起執行的網路通訊協定是 Novell 的 IPX (經由 TCP/IP 的 NetBIOS) 與 TCP/IP。

經由 TCP/IP 所傳送的 NetBIOS 名稱,與 /etc/hosts 中所使用的名稱,或由 DNS 所定義的名稱完全不相同。NetBIOS 使用自己完全獨立的命名慣例。不過一般建議使用與 DNS 主機名稱相對應的名稱,如此可使管理較為輕鬆。Samba 預設是使用此對應名稱。

所有一般的作業系統 (例如 Mac OS X、Windows 以及 OS/2) 都支援 SMB 通訊協定。TCP/IP 通訊協定必須安裝在所有的電腦上。Samba 提供適用於不同 UNIX 類別的用戶端。就 Linux 而言,有一個 SMB 的核心模組,允許在 Linux 系統層次上整合 SMB 資源。

SMB 伺服器透過共用提供用戶端硬碟空間。共用包含伺服器上的目錄以及其子目錄。它是利用名稱來輸出,並且可藉由其名稱來存取。共用名稱可以設成任何名稱 它並不需要是輸出目錄的名稱。也會指定一個名稱給印表機。用戶端可以透過其名稱存取印表機。

48.1. 設定伺服器

如果您想要使用 Samba 做為伺服器,請安裝 samba。以 rcnmb start && rcsmb start 啟動 Samba 所需的服務,並以 rcsmb stop && rcnmb stop 停止它們。

Samba 的主要組態檔為 /etc/samba/smb.conf。這個檔案可以分成兩個邏輯部份。[global] 區段包含中央與全域設定值。[share] 區段包含個別檔案與印表機共用。利用此方法,就可以在 [global] 區段中以不同的方式或以全域方式設定關於共用的細節,它可以加強組態檔的結構透明化。

48.1.1. 全域區段

下列 [global] 區段的參數需要做一些調整,以符合網路設定的需求,讓其他機器可以透過 Windows 環境中的 SMB 存取 Samba 伺服器。

workgroup = TUX-NET

這一行是將 Samba 伺服器指定給工作群組。以網路環境中適當的工作群組取代 TUX-NET。除非您已將這個名稱指定給網路中的其他機器,否則 Samba 伺服器將會以其 DNS 名稱來顯示。如果沒有 DNS 名稱,請使用 netbiosname=MYNAME 設定伺服器名稱。如需關於此參數的詳細資訊,請參閱 mansmb.conf

os level = 2

此參數會觸發 Samba 伺服器是否嘗試變成其工作群組的 LMB (本地主要的瀏覽器)。請選擇一個非常低的值,以使現有的 Winodws 網路能避免設定不當的 Samba 伺服器所造成的任何問題。如需關於此重要主題的詳細資訊,請參閱套件文件中 textdocs 子目錄下的 BROWSING.txtBROWSING-Config.txt 檔案。

如果沒有其他的 SMB 伺服器在網路中 (例如,Windows NT 或 2000 伺服器),而且您想要 Samba 伺服器保留在本地環境中所存在的所有系統清單,請將 os level 設成更高的值 (例如,65)。接著就會將 Samba 伺服器選擇成本地網路的 LMB。

當變更此設定值時,請小心地考慮這個值將會如何影響現有的 Windows 網路環境。首先請在獨立的網路中或在一天中非重要的時間測試變更。

wins support 與 wins server

若要將 Samba 伺服器整合至含有主動 WINS 伺服器的現有 Windows 網路中,請啟用 wins server 選項,並將其值設為該 WINS 伺服器的 IP 位址。

如果您的 Windows 機器已連線至獨立的子網路中,而且應該要能夠看到彼此,則需要設定 WINS 伺服器。若要將 Samba 伺服器變成像這樣的 WINS 伺服器,請設定 wins support = Yes 選項。請確定網路中只有一個 Samba 伺服器啟用了這個設定值。wins serverwins support 選項絕不能在 smb.conf 檔案中同時啟用。

48.1.2. 共用

下列範例說明如何將 CD-ROM 光碟機與使用者目錄 (homes) 開放給 SMB 用戶端使用。

[cdrom]

若要避免不小心將 CD-ROM 光碟機開放成共用,請以備註符號停用這些行 (在此例中為分號)。請在第一個資料欄中移除分號,以便和 Samba 共用 CD-ROM 光碟機。

範例 48.1. CD-ROM 共用

;[cdrom]
;       comment = Linux CD-ROM
;       path = /media/cdrom
;       locking = No
[cdrom] and comment

[cdrom] 這個項目是在網路上所有的 SMB 用戶端都可以看到的共用名稱。可以另外再加入一個 comment,以進一步描述共用。

path = /media/cdrom

path 會輸出 /media/cdrom 目錄。

利用限制非常嚴格的預設組態,就可以將這種共用只開放給出現在此系統上的使用者共用。如果這個共用應該開放每個人使用,請將 guest ok = yes 加入組態。這個設定值可以將讀取權限開放給網路上的每個人使用。建議您處理此參數時必須極為小心。這將會在 [global] 區段中套用更多此參數的使用。

[homes]

[home] 共用在這裏特別重要。如果使用者擁有 Linux 檔案伺服器以及其自己主目錄的有效帳戶與密碼,就可以連線到主目錄。

範例 48.2. 主目錄共用

[homes]
	comment = Home Directories
	valid users = %S
	browseable = No
	read only = No
	create mask = 0640
	directory mask = 0750
[homes]

只要沒有其他的共用,使用共用的使用者名稱連線至 SMB 伺服器,就會使用 [homes] 共用指示來動態產生共用。共用的產生名稱是使用者名稱。

valid users = %S

只要成功地建立連線,就會以共用的具體名稱取代 %S[homes]共用,永遠為使用者名稱。因此,使用者共用的存取權限僅限於使用者。

browseable = No

這個設定值讓共用在網路環境變成無形的。

read only = No

根據預設,Samba 會利用 read only = Yes 參數,以禁止寫入任何輸出共用的權限。若要開放共用為可寫入的,請設定 read only = No 的值,這與 writeable = Yes 同義。

create mask = 0640

以 MS Windows NT 為基礎的系統將無法理解 UNIX 權限的概念,因此在建立檔案時,它們將無法指定權限。create mask 參數可以定義指定給新建立檔案的存取權限。這只會套用至可寫入的共用。實際上,這個設定值表示擁有者具有讀取與寫入權限,而擁有者的主要群組成員則具有讀取權限。valid users = %S 可以在即使群組具有讀取權限時禁止讀取權限。若想要使群組具有讀取或寫入權限,請停用 valid users = %S 一行。

48.1.3. 安全性層級

SMB 通訊協定是源自於 DOS 與 Windows 並直接考慮安全性的問題。每個共用存取權都以密碼保護。SMB 具有三個檢查權限的可能方法:

共用層級安全性 (安全性 = 共用):

每個共用都必須指定密碼。每個知道此密碼的人員都具有該共用的存取權。

使用者層級安全性 (安全性 = 使用者):

這個變化引用了使用者對 SMB 的概念。每個使用者都必須以自己的密碼註冊伺服器。在註冊後,伺服器可以視使用者名稱將存取權授與個別輸出的共用。

伺服器層級安全性 (安全性 = 伺服器):

對其用戶端而言,Samba 會模擬在使用者層級模式中工作。不過,它會將所有的密碼查詢傳遞給另一個將會處理驗證的使用者層級模式伺服器。這個設定值將需要另一個參數 (password server =)。

共用、使用者以及伺服器層級安全性之間的差異會套用至整個伺服器。因為無法針對伺服器組態的個別共用提供共用層級的安全性,並針對其他的共用提供使用者層級的安全性。然而,您可以針對系統上每個設定的 IP 位址執行個別的 Samba 伺服器。

在「Samba HOWTO 文件集」中可以找到關於此主題的詳細資訊。至於在一個系統上的多個伺服器,請注意 interfacesbind interfaces only 選項。

[Tip]提示

如需進行 Samba 伺服器的簡單管理工作,也可以使用 swat 程式。它提供簡單的網頁介面,以便於設定 Samba 伺服器。在網頁瀏覽器中,開啟 http://localhost:901 並以 root 的使用者身份登入。然而,必須同時在 /etc/xinetd.d/samba/etc/services 檔案中啟動 swat。若要這麼做,請在 /etc/xinetd.d/samba 中,編輯 disable 一行,將它設為 disable = no。在 man 頁面中提供了關於 swat 的詳細資訊。