章 28. Samba

目錄

28.1. 術語
28.2. 啟動和停止 Samba
28.3. 設定 Samba 伺服器
28.4. 設定用戶端
28.5. 做為登入伺服器的 Samba
28.6. 含 Active Directory 的網路中之 Samba 伺服器
28.7. 更多資訊

摘要

使用 Samba 可以將 Unix 機器設定為 Mac OS X、Windows 以及 OS/2 機器的檔案與列印伺服器。Samba 已經是一個開發至完全成熟且相當複雜的產品。使用 YaST、SWAT (一種 Web 介面) 設定 Samba,或透過手動編輯組態檔的方式設定。

28.1. 術語

下列為 Samba 文件和 YaST 模組中常用的詞彙。

SMB 通訊協定

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

[Tip]IBM System z:NetBIOS 支援

IBM System z 僅支援經由 TCP/IP 的 SMB。在這些系統上不提供 NetBIOS 支援。

CIFS 通訊協定

CIFS (一般網際網路檔案系統) 通訊協定是 Samba 所支援的另一種通訊協定。CIFS 定義用於網路上的標準遠端檔案系統存取通訊協定,讓使用者群組可以透過網路分工合作和共享文件。

NetBIOS

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

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

Samba 伺服器

Samba 伺服器可為用戶端提供 SMB/CIFS 服務和 NetBIOS over IP 命名服務。對於 Linux 系統,Samba 伺服器有三種精靈可用:smbd (用於 SMB/CIFS 服務)、nmbd (用於命名服務) 及 winbind (用於驗証)。

Samba 用戶端

Samba 用戶端是透過 SMB 通訊協定,使用 Samba 伺服器所提供之 Samba 服務的系統。所有一般的作業系統 (例如 Mac OS X、Windows 以及 OS/2) 都支援 SMB 通訊協定。TCP/IP 通訊協定必須安裝在所有的電腦上。Samba 提供適用於不同 UNIX 類別的用戶端。就 Linux 而言,有一個 SMB 的核心模組,允許在 Linux 系統層級上整合 SMB 資源。您不必為 Samba 用戶端執行任何精靈。

共享

SMB 伺服器透過共享方式向用戶端提供資源。共享是指印表機和位在伺服器上的目錄及其子目錄。它是利用名稱來輸出,並且可藉由其名稱來存取。共用名稱可以設成任何名稱 它並不需要是輸出目錄的名稱。也會指定一個名稱給印表機。用戶端可以透過其名稱存取印表機。

DC

領域控制器 (DC) 是處理網域中帳戶的伺服器。進行資料複製時,可在一個網域中使用其他領域控制器。

28.2. 啟動和停止 Samba

您可以在開機時自動啟動 Samba 伺服器,也可以手動啟動或停止。啟動和停止原則是 YaST Samba 伺服器組態的一部分 (如 第 28.3.1 節「使用 YaST 設定 Samba 伺服器」 所述)。

若要使用 YaST 停止或啟動執行中的 Samba 服務,請使用系統+系統服務 (執行層級),然後檢查 winbind、smb 與 nmb。在指令行中使用 rcsmb stop && rcnmb stop 可停止 Samba 所需的服務,使用 rcnmb start && rcsmb start 可啟動這些服務;必要時,rcsmb 會參考 winbind 的結果。

28.3. 設定 Samba 伺服器

SUSE® Linux Enterprise Server 中的 Samba 伺服器可以兩種方式設定:使用 YaST 設定或手動設定。手動設定組態可以提供較詳細的設定,但是缺乏 YaST GUI 提供的方便性。

28.3.1. 使用 YaST 設定 Samba 伺服器

若要設定 Samba 伺服器,請啟動 YaST 並選取網路服務+Samba 伺服器

28.3.1.1. 初始的 Samba 組態

第一次啟動模組時,系統會啟動Samba 安裝對話方塊,提示您對伺服器管理進行一些基本設定。組態設定結束時,系統會提示您輸入 Samba 管理員密碼 (Samba root 使用者密碼)。之後再啟動該模組時,會顯示Samba 組態對話方塊。

Samba 安裝對話方塊包含兩個步驟與一些選擇性的詳細設定:

工作群組或網域名稱

工作群組或網域名稱 中選取現有的名稱,或輸入新的名稱,並按一下 下一步

Samba 伺服器類型

在下一步中,指定伺服器是應該做為主要網域控制器 (PDC)、備份網域控制器 (BDC) 還是根本不做為網域控制器。伺服器預設未設定為網域控制器。按下一步繼續。

如果不想繼續設定伺服器的詳細組態,請按一下確定確認。然後,在最後一個快顯方塊中設定Samba root 使用者密碼

之後可在Samba 組態對話方塊的啟動共享身分信任的網域LDAP 設定索引標籤中變更所有設定。

28.3.1.2. 進階 Samba 組態

第一次啟動 Samba 伺服器模組時,執行第 28.3.1.1 節「初始的 Samba 組態」 中所述的兩個初始步驟後,Samba 組態對話方塊會直接顯示。用此調整您的 Samba 伺服器組態。

編輯組態後,按一下確定儲存設定。

28.3.1.2.1. 啟動伺服器

啟動索引標籤中,設定 Samba 伺服器的啟動。若每次系統開機時都要啟動服務,請選取開機時。若要啟用手動啟動,請選擇手動。如需有關啟動 Samba 伺服器的詳細資訊,請參閱第 28.2 節「啟動和停止 Samba」

在此索引標籤中,您也可以開啟您的防火牆中的連接埠。若要執行此動作,請選取在防火牆中開啟埠。如果您有多個網路介面,請按一下防火牆詳細資訊,選取介面,並按一下確定來選取 Samba 服務的網路介面。

28.3.1.2.2. 共享

共享索引標籤中,決定要啟用的 Samba 共享。標籤中有一些預先定義的共同,如 home 和 printer。使用切換狀態以切換作用中非作用中。按一下新增可新增新的共享,按一下刪除可刪除選取的共享。

允許使用者共享自己的目錄許可的群組中的群組成員能與其他使用者共享自己的目錄。例如:users 針對本地範圍,DOMAIN\Users 針對網域範圍。使用者還必須確定檔案系統的許可權允許存取。請使用最多共享數限制可建立的共享總數。若要允許在沒有驗證的情況下存取使用者共享,請啟用允許訪客存取

28.3.1.2.3. 識別

身分索引標籤中,您可以決定主機關聯的網域 (基本設定),以及是否要在網路中使用替代的主機名稱 (NetBIOS 主機名稱)。也可以使用 Microsoft Windows 網際網路名稱服務 (WINS) 進行名稱解析。在這種情況下,請啟用使用 WINS 解析主機名稱,並決定是否透過 DHCP 取回 WINS 伺服器。若要設定進階全域設定或使用者驗證來源 (例如 LDAP 而非 TDB 資料庫),請按一下進階設定

28.3.1.2.4. 信任的網域

若要讓其他網域的使用者存取您的網域,請在信任的網域索引標籤中進行適當的設定。若要新增網域,請按一下新增。若要移除所選網域,請按一下移除

28.3.1.2.5. LDAP 設定

在索引標籤LDAP 設定中,您可決定 LDAP 伺服器是否使用驗證。若要測試 LDAP 伺服器的連接,請按一下測試連接。若要查看進階 LDAP 設定或使用者預設值,請按一下 進階設定

如需 LDAP 組態的詳細資訊,請參閱Chapter 4, LDAP—A Directory Service (↑Security Guide)。

28.3.2. 使用 SWAT 管理網頁

另一種管理 Samba 伺服器的工具是 SWAT (Samba Web Administration Tool,Samba 網頁管理工具)。它提供簡單的網頁介面,以用於設定 Samba 伺服器。若要使用 SWAT,請在網頁瀏覽器中開啟 http://localhost:901,並以 root 使用者的身分登入。如果您沒有特殊的 Samba root 帳戶,請使用系統的 root 帳戶。

[Note]啟用 SWAT

安裝 Samba 伺服器後,並不會啟用 SWAT。若要啟動 SWAT,請在 YaST 中開啟 網路服務+網路服務 (xinetd),啟用網路服務組態,選取表格中的 swat,並按一下 切換狀態 (開啟或關閉)

28.3.3. 手動設定伺服器

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

28.3.3.1. 全域區段

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

workgroup = TUX-NET

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

os level = 20

此參數會觸發 Samba 伺服器是否嘗試變成其工作群組的 LMB (本地主要的瀏覽器)。對於 Samba 3 版本系列,通常不需要覆寫預設設定 (20)。選擇一個極小值 (例如 2) 可以讓現有的 Winodws 網路免受因 Samba 伺服器設定不當而造成的任何干擾。有關此重要主題的詳細資訊,可參閱《Samba 3 Howto》中的「Network Browsing」(網路瀏覽) 一章;如需有關《Samba 3 Howto》的詳細資訊,請參閱第 28.7 節「更多資訊」

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

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

wins supportwins server

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

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

28.3.3.2. 共享

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

[cdrom]

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

範例 28.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]

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

範例 28.2. [homes] 共享

[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 的值,這與 writable = Yes 同義。

create mask = 0640

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

28.3.3.3. 安全性層級

為了提高安全性,每個共享存取權都以密碼保護。SMB 提供下列幾種權限檢查方式︰

共享層級安全性 (安全性 = 共享)

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

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

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

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

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

ADS 層級安全性 (安全性 = ADS)

在這種模式下,Samba 在 Active Directory 環境中以網域成員的身分執行。要以此模式作業,執行 Samba 的機器需要安裝與設定 Kerberos。您必須讓使用 Samba 的機器加入 ADS 領域。可使用 YaST 的 Windows 網域成員模組完成此操作。

網域層級安全性 (安全性 = 網域)

僅在機器已加入到 Windows NT 網域時,此模式才會正常工作。Samba 將嘗試驗證使用者名稱與密碼,方法是將其傳送至 Windows NT 主網域或備份網域控制器。這與 Windows NT 伺服器用來驗證的方法相同。需要將加密密碼參數設定為 yes

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

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

28.4. 設定用戶端

用戶端只能透過 TCP/IP 存取 Samba 伺服器。NetBEUI 與透過 IPX 的 NetBIOS 無法與 Samba 一起使用。

28.4.1. 使用 YaST 設定 Samba 用戶端

設定 Samba 用戶端以存取 Samba 或 Windows 伺服器上的資源 (檔案或印表機)。在網路服務+Windows 網域成員對話方塊中輸入 NT 或 Active Directory 網域或工作群組。如果您啟用了Linux 驗證也使用 SMB 資訊,則使用者驗證將會在 Samba、NT 或 Kerberos 伺服器上執行。

按一下進階設定可以指定進階組態選項。例如,使用安裝伺服器目錄表格可設定在驗證時自動掛接伺服器主目錄。這樣,當使用者的主目錄在 CIFS 上託管時,他們便可以存取這些目錄。如需詳細資料,請參閱 pam_mount man 頁面。

完成所有設定之後,在對話方塊中進行確認以完成組態設定。

28.5. 做為登入伺服器的 Samba

在以 Windows 用戶端為主的網路中,通常會建議使用者只註冊一個有效的帳戶與密碼。在以 Windows 為基礎的網路中,這個任務是由主要網域控制器 (PDC) 來處理。您可以使用已設定為 PDC 的 Windows NT 伺服器,但也可借助 Samba 伺服器完成此任務。在 smb.conf[global] 區段中必須編輯的項目如 範例 28.3 「在 smb.conf 中的全域區段」 所示。

範例 28.3. 在 smb.conf 中的全域區段

[global]
    workgroup = TUX-NET
    domain logons = Yes
    domain master = Yes

如果使用加密密碼進行驗證,則 Samba 伺服器必須能夠處理這些密碼。在 [global] 區段中的 encrypt passwords = yes 項目可以啟用此功能 (加上 Samba 版本 3,現在這個是預設值)。除此之外,必須準備符合 Winodws 加密格式的使用者帳戶與密碼。此操作可使用指令 smbpasswd -a name 來完成。使用下列指令為電腦建立網域帳戶 (Windows 網域概念所需):

useradd hostname\$
smbpasswd -a -m hostname

使用 useradd 指令,就會加上貨幣符號。當使用 -m 參數時,smbpasswd 指令就會自動插入這個符號。加備註的組態範例 (/usr/share/doc/packages/Samba/examples/smb.conf.SuSE) 包含一些設定,可讓此任務自動執行。

add machine script = /usr/sbin/useradd -g nogroup -c "NT Machine Account" \
-s /bin/false %m\$
     

為確保 Samba 可正確執行此程序檔,請選擇擁有所需之管理員權限的 Samba 使用者,並將其新增至 ntadmin 群組。這樣就可以透過下列指令將 Domain Admin 狀態指定給此 Linux 群組內的所有使用者:

net groupmap add ntgroup="Domain Admins" unixgroup=ntadmin

如需有關此主題的詳細資訊,請參閱《Samba 3 HOWTO》(/usr/share/doc/packages/samba/Samba3-HOWTO.pdf) 的第 12 章。

28.6. 含 Active Directory 的網路中之 Samba 伺服器

若您同時執行 Linux 伺服器與 Windows 伺服器,您可建立兩個獨立的驗證系統與網路,或將兩部伺服器透過一個中央驗證系統連接到一個網路。由於 Samba 可與 Active Directory 網域共同運作,因此您可將 SUSE Linux Enterprise Server 加入 Active Directory (AD) 中。

加入現有 AD 領域的動作可以在安裝期間進行,也可以後來藉由在安裝好的系統中使用 YaST 啟動 SMB 使用者驗證來進行。安裝時加入網域的說明可在第 6.16.1.7 節「使用者驗證方式」 (第 6 章「使用 YaST 安裝」, ↑部署指南 ) 中找到。

若要在運作中的系統加入 AD 網域,請執行下列步驟:

  1. root 身份登入並啟動 YaST。

  2. 啟動網路服務+Windows 網域成員

  3. Windows 領域成員畫面的領域或工作群組中輸入要加入的領域。

    圖形 28.1. 決定 Windows 網域成員

    決定 Windows 網域成員

  4. 核取Linux 驗證也使用 SMB 資訊,以在 SUSE Linux Enterprise Server 上使用 SMB 來源進行 Linux 驗證。

  5. 按一下確定,並在出現提示時確認要加入網域。

  6. 為 Windows 管理員提供 AD 伺服器上的密碼,並按一下確定

    您的伺服器現在已可使用 Active Directory 網域控制器上的所有驗證資料。

[Tip]

如果環境中含有多個 Samba 伺服器,則建立的 UID 和 GID 不一致。分配給使用者的 UID 與使用者首次登入的順序有關,這會導致 UID 在不同伺服器之間出現衝突。要解決此問題,您需要使用身分映射。請參閱 https://www.samba.org/samba/docs/man/Samba-HOWTO-Collection/idmapper.html,以取得詳細資料

28.7. 更多資訊

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

《Samba 3 HOWTO》由 Samba 團隊提供,包含疑難排解一節。除此之外,文件的第五部份提供檢查組態的逐步指南。安裝 samba-doc 套件後,可以在 /usr/share/doc/packages/samba/Samba3-HOWTO.pdf 中找到《Samba 3 HOWTO》。


SUSE Linux Enterprise Server 管理指南 11 SP4