跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Linux Enterprise Server 文件 / 管理指南 / 服務 / Samba
適用範圍 SUSE Linux Enterprise Server 12 SP5

29 Samba

使用 Samba,就可以將 Unix 機器設定為 macOS、Windows 以及 OS/2 機器的檔案與列印伺服器。Samba 已經是一個開發至完全成熟且相當複雜的產品。使用 YaST 或手動編輯組態檔案來設定 Samba。

29.1 術語

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

SMB 通訊協定

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

提示
提示:IBM Z:NetBIOS 支援

IBM 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 服務的系統。常用作業系統 (例如 Windows 和 macOS) 都支援 SMB 通訊協定。TCP/IP 通訊協定必須安裝在所有的電腦上。Samba 提供適用於不同 Unix 類別的用戶端。就 Linux 而言,有一個 SMB 的核心模組,允許在 Linux 系統層級上整合 SMB 資源。您不必為 Samba 用戶端執行任何精靈。

共享

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

DC

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

29.2 安裝 Samba 伺服器

若要安裝 Samba 伺服器,請啟動 YaST 並選取軟體 › 軟體管理。選擇檢視 › 模式,然後選取檔案伺服器。請確認安裝所需套件,完成此安裝程序。

29.3 啟動和停止 Samba

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

在指令行中,使用 systemctl stop smb nmb 可停止 Samba 所需的服務,使用 systemctl start nmb smb 則可啟動這些服務。smb 服務會視需要處理 winbind

提示
提示:winbind

winbind 是一項獨立服務,同樣也是以單獨的 samba-winbind 套件提供。

29.4 設定 Samba 伺服器

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

29.4.1 使用 YaST 設定 Samba 伺服器

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

29.4.1.1 初始的 Samba 組態

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

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

工作群組或網域名稱

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

Samba 伺服器類型

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

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

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

29.4.1.2 進階 Samba 組態

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

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

29.4.1.2.1 啟動伺服器

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

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

29.4.1.2.2 共享

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

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

29.4.1.2.3 識別

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

29.4.1.2.4 信任的網域

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

29.4.1.2.5 LDAP 設定

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

如需 LDAP 組態的詳細資訊,請參閱Chapter 5, LDAP—A Directory Service

29.4.2 手動設定伺服器

如果您想要使用 Samba 做為伺服器,請安裝 samba。Samba 的主要組態檔為 /etc/samba/smb.conf。這個檔案可以分成兩個邏輯部份。[global] 區段包含中央與全域設定值。以下預設區段包含個別檔案與印表機共享︰

  • [homes]

  • [profiles]

  • [users]

  • [groups]

  • [Printers]

  • [print$]

透過此方法,您可以設定不同的共用選項,或在 [global] 區段設定全域共用選項,這使得組態檔案更容易理解。

29.4.2.1 全域區段

應該修改 [global] 區段的以下參數,以符合網路設定的要求,從而讓其他機器能在 Windows 環境中透過 SMB 存取 Samba 伺服器。

workgroup = WORKGROUP

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

os level = 20

此參數會觸發 Samba 伺服器是否嘗試變成其工作群組的 LMB (本地主要的瀏覽器)。為了避免現有 Windows 網路因 Samba 伺服器設定不當而中斷,應選擇非常低的值,如 2。如需此主題的詳細資訊,可參閱《Samba 3 Howto》的「Network Browsing」(網路瀏覽) 一章;如需《Samba 3 Howto》的詳細資訊,請參閱第 29.9 節 「更多資訊」

如果網路中沒有其他的 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 檔案中同時啟用。

29.4.2.2 共享

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

[cdrom]

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

範例 29.1︰ CD-ROM 共用
[cdrom]
       comment = Linux CD-ROM
       path = /media/cdrom
       locking = No
[cdrom]comment

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

path = /media/cdrom

path 會輸出 /media/cdrom 目錄。

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

[homes]

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

範例 29.2︰ [homes] 共享
[homes]
        comment = Home Directories
        valid users = %S
        browseable = No
        read only = No
        inherit acls = Yes
[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 一行。

警告
警告:不要與 Samba 共用 NFS 掛接

與 Samba 共用 NFS 掛接可能導致資料遺失,並且不支援這樣做。請直接在檔案伺服器上安裝 Samba,或者考慮使用替代方式,例如 iSCSI

29.4.2.3 安全性層級

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

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

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

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 選項。

29.5 設定用戶端

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

29.5.1 使用 YaST 設定 Samba 用戶端

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

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

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

29.6 做為登入伺服器的 Samba

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

範例 29.3︰ 在 smb.conf 中的全域區段
[global]
    workgroup = WORKGROUP
    domain logons = Yes
    domain master = Yes

需要準備符合 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

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

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

若要加入 AD 網域,請執行下列步驟︰

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

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

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

    決定 Windows 網域成員
    圖 29.1︰ 決定 Windows 網域成員
  4. 核取同時使用 SMB 資訊進行 Linux 驗證,以在伺服器上使用 SMB 來源進行 Linux 驗證。

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

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

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

提示
提示:身分對應

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

29.8 進階主題

本部分介紹用於管理 Samba 套裝軟體中用戶端部分與伺服器部分的進階方法。

29.8.1 Btrfs 上的透明檔案壓縮

Samba 允許用戶端針對 Btrfs 檔案系統中的共用遠端操作檔案與目錄壓縮旗標。Windows 檔案總管可讓使用者透過檔案 › 內容 › 進階對話方塊來標識要進行透明壓縮的檔案/目錄︰

Windows 檔案總管進階屬性對話方塊
圖 29.2︰ Windows 檔案總管進階屬性對話方塊

帶有壓縮旗標的檔案將以透明方式進行壓縮,當使用者存取或修改這些檔案時,基礎檔案系統會將其解壓縮。這通常可以節省儲存容量,不過,在存取檔案時會造成額外的 CPU 負擔。除非新檔案和目錄是使用 FILE_NO_COMPRESSION 選項建立的,否則,它們會繼承父目錄的壓縮旗標。

Windows 檔案總管以不同的顯示區分壓縮檔案/目錄和未壓縮檔案/目錄︰

列有壓縮檔案的 Windows 檔案總管目錄
圖 29.3︰ 列有壓縮檔案的 Windows 檔案總管目錄

啟用 Samba 共用壓縮的方法有兩種,一種是手動將以下內容

vfs objects = btrfs

新增至 /etc/samba/smb.conf 中的共用組態,另一種是使用 YaST︰網路服務 › Samba 伺服器 › 新增,然後核取使用 Btrfs 功能

如需 Btrfs 上壓縮功能的一般綜覽,請參閱第 1.2.2.1 節 「掛接壓縮的 Btrfs 檔案系統」

29.8.2 快照

快照也稱為陰影副本,是指某個檔案系統子磁碟區在某個特定時間點的狀態副本。在 Linux 中,使用 Snapper 工具來管理這些快照。Btrfs 檔案系統或簡易佈建的 LVM 磁碟區支援快照。Samba 套裝軟體支援透過伺服器端和用戶端的 FSRVP 通訊協定管理遠端快照。

29.8.2.1 先前版本

Samba 伺服器上的快照可以做為檔案或目錄的先前版本公開給遠端 Windows 用戶端。

若要在 Samba 伺服器上啟用快照,必須符合以下條件︰

  • SMB 網路共用存放在 Btrfs 子磁碟區上。

  • SMB 網路共用路徑中包含相關的 snapper 組態檔案。可以使用以下指令建立 snapper 檔案

    snapper -c <cfg_name> create-config /path/to/share

    如需有關 snapper 的詳細資訊,請參閱第 7 章 「使用 Snapper 進行系統復原和快照管理

  • 必須允許相關使用者存取快照目錄樹。如需詳細資訊,請參閱 vfs_snapper 手冊頁 (man 8 vfs_snapper) 的PERMISSIONS (許可權) 部分。

若要支援遠端快照,需要修改 /etc/samba/smb.conf 檔案。若要完成此操作,您可以選取YaST › 網路服務 › Samba 伺服器,或者使用以下指令手動增強相關的共用區段

vfs objects = snapper

請注意,您需要重新啟動 Samba 服務後,對 smb.conf 所做的手動變更才能生效︰

systemctl restart nmb smb
在啟用快照的情況下新增 Samba 共用
圖 29.4︰ 在啟用快照的情況下新增 Samba 共用

經過設定後,可以透過 Windows 檔案總管中某個檔案或目錄之以前的版本索引標籤存取由 snapper 針對 Samba 共用路徑建立的快照。

Windows 檔案總管中的以前的版本索引標籤
圖 29.5︰ Windows 檔案總管中的以前的版本索引標籤

29.8.2.2 遠端共用快照

依預設,只能在 Samba 伺服器本地透過 snapper 指令行公用程式或者使用 snapper 時間線功能來建立和刪除快照。

可將 Samba 設定為使用檔案伺服器遠端 VSS 通訊協定 (File Server Remote VSS Protocol,FSRVP) 來處理來自遠端主機的共用快照建立和刪除要求。

除了第 29.8.2.1 節 「先前版本」中所述的組態和先決條件以外,還需要在 /etc/samba/smb.conf 中設定以下全域組態︰

[global]
rpc_daemon:fssd = fork
registry shares = yes
include = registry

然後,FSRVP 用戶端 (包括 Samba 的 rpcclient 以及 Windows Server 2012 的 DiskShadow.exe) 便可以指示 Samba 為指定的共用建立或刪除快照,並將該快照公開為新共用。

29.8.2.3 使用 rpcclient 從 Linux 遠端管理快照

samba-client 套件中有一個 FSRVP 用戶端,它可以遠端要求 Windows/Samba 伺服器建立並公開指定共用的快照。然後,您可以使用 SUSE Linux Enterprise Server 中的現有工具掛接公開的共用,並備份其檔案。向伺服器發出的要求將使用 rpcclient 二進位檔案傳送。

範例 29.4︰ 使用 rpcclient 要求 Windows Server 2012 共用快照

EXAMPLE 網域中管理員的身分連接到 win-server.example.com 伺服器︰

# rpcclient -U 'EXAMPLE\Administrator' ncacn_np:win-server.example.com[ndr64,sign]
Enter EXAMPLE/Administrator's password:

檢查 SMB 共用是否對 rpcclient 可見︰

rpcclient $> netshareenum
netname: windows_server_2012_share
remark:
path:   C:\Shares\windows_server_2012_share
password:       (null)

檢查 SMB 共用是否支援建立快照︰

rpcclient $> fss_is_path_sup windows_server_2012_share \
UNC \\WIN-SERVER\windows_server_2012_share\ supports shadow copy requests

要求建立共用快照︰

rpcclient $> fss_create_expose backup ro windows_server_2012_share
13fe880e-e232-493d-87e9-402f21019fb6: shadow-copy set created
13fe880e-e232-493d-87e9-402f21019fb6(1c26544e-8251-445f-be89-d1e0a3938777): \
\\WIN-SERVER\windows_server_2012_share\ shadow-copy added to set
13fe880e-e232-493d-87e9-402f21019fb6: prepare completed in 0 secs
13fe880e-e232-493d-87e9-402f21019fb6: commit completed in 1 secs
13fe880e-e232-493d-87e9-402f21019fb6(1c26544e-8251-445f-be89-d1e0a3938777): \
share windows_server_2012_share@{1C26544E-8251-445F-BE89-D1E0A3938777} \
exposed as a snapshot of \\WIN-SERVER\windows_server_2012_share\

確認伺服器是否已公開快照共用︰

rpcclient $> netshareenum
netname: windows_server_2012_share
remark:
path:   C:\Shares\windows_server_2012_share
password:       (null)

netname: windows_server_2012_share@{1C26544E-8251-445F-BE89-D1E0A3938777}
remark: (null)
path:   \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy{F6E6507E-F537-11E3-9404-B8AC6F927453}\Shares\windows_server_2012_share\
password:       (null)

嘗試刪除快照共用︰

rpcclient $> fss_delete windows_server_2012_share \
13fe880e-e232-493d-87e9-402f21019fb6 1c26544e-8251-445f-be89-d1e0a3938777
13fe880e-e232-493d-87e9-402f21019fb6(1c26544e-8251-445f-be89-d1e0a3938777): \
\\WIN-SERVER\windows_server_2012_share\ shadow-copy deleted

確認伺服器是否已移除快照共用︰

rpcclient $> netshareenum
netname: windows_server_2012_share
remark:
path:   C:\Shares\windows_server_2012_share
password:       (null)

29.8.2.4 使用 DiskShadow.exe 從 Windows 遠端管理快照

您也可以在充當用戶端的 Windows 環境中管理 Linux Samba 伺服器上 SMB 共用的快照。Windows Server 2012 提供了 DiskShadow.exe 公用程式,該公用程式可以如第 29.8.2.3 節 「使用 rpcclient 從 Linux 遠端管理快照」中所述的 rpcclient 那樣管理遠端共用。請注意,首先您需要妥善設定 Samba 伺服器。

以下範例程序說明了如何設定 Samba 伺服器,使 Windows Server 用戶端能夠管理其共用的快照。請注意,EXAMPLE 是在測試環境中使用的 Active Directory 網域, fsrvp-server.example.com 是 Samba 伺服器的主機名稱,/srv/smb 是 SMB 共享的路徑。

程序 29.1︰ Samba 伺服器組態設定詳細說明
  1. 透過 YaST 加入到 Active Directory 網域。 相關資訊,請參閱第 29.7 節 「含 Active Directory 的網路中之 Samba 伺服器」

  2. 確定「使用中網域 DNS」項目正確無誤︰

    fsrvp-server:~ # net -U 'Administrator' ads dns register \
    fsrvp-server.example.com <IP address>
    Successfully registered hostname with DNS
  3. /srv/smb 位置建立 Btrfs 子磁碟區

    fsrvp-server:~ # btrfs subvolume create /srv/smb
  4. 為路徑 /srv/smb 建立 snapper 組態檔案

    fsrvp-server:~ # snapper -c <snapper_config> create-config /srv/smb
  5. 建立路徑為 /srv/smb 的新共用,並啟用 YaST 的公開快照核取方塊。確定將以下片段新增到 /etc/samba/smb.conf 中的 global 部分,如第 29.8.2.2 節 「遠端共用快照」中所述︰

    [global]
     rpc_daemon:fssd = fork
     registry shares = yes
     include = registry
  6. 使用 systemctl restart nmb smb 重新啟動 Samba

  7. 設定 snapper 許可權︰

    fsrvp-server:~ # snapper -c <snapper_config> set-config \
    ALLOW_USERS="EXAMPLE\\\\Administrator EXAMPLE\\\\win-client$"

    確定也允許任何 ALLOW_USERS 瀏覽 .snapshots 子目錄。

    fsrvp-server:~ # snapper -c <snapper_config> set-config SYNC_ACL=yes
    重要
    重要:路徑逸出

    請注意「\」逸出!請逸出兩次,以確定 /etc/snapper/configs/<snapper_config> 中儲存的值逸出一次。

    "EXAMPLE\win-client$" 對應於 Windows 用戶端電腦帳戶。對此帳戶進行驗證後,Windows 將發出初始 FSRVP 要求。

  8. 授予 Windows 用戶端帳戶必要的權限︰

    fsrvp-server:~ # net -U 'Administrator' rpc rights grant \
    "EXAMPLE\\win-client$" SeBackupPrivilege
    Successfully granted rights.

    不需要對 "EXAMPLE\Administrator" 使用者執行上一條指令,因為已授予該使用者權限。

程序 29.2︰ 執行 Windows 用戶端設定和 DiskShadow.exe
  1. 開機 Windows Server 2012 (範例主機名稱為 WIN-CLIENT)。

  2. 就像在 SUSE Linux Enterprise Server 上一般,加入到同一個 Active Directory 網域 EXAMPLE。

  3. 重新開機。

  4. 開啟 Powershell。

  5. 啟動 DiskShadow.exe,然後開始執行備份程序︰

    PS C:\Users\Administrator.EXAMPLE> diskshadow.exe
    Microsoft DiskShadow version 1.0
    Copyright (C) 2012 Microsoft Corporation
    On computer:  WIN-CLIENT,  6/17/2014 3:53:54 PM
    
    DISKSHADOW> begin backup
  6. 指定每次程式離開、重設或重新開機時要保留的陰影副本︰

    DISKSHADOW> set context PERSISTENT
  7. 檢查指定的共用是否支援快照,然後建立一個快照︰

    DISKSHADOW> add volume \\fsrvp-server\sles_snapper
    
    DISKSHADOW> create
    Alias VSS_SHADOW_1 for shadow ID {de4ddca4-4978-4805-8776-cdf82d190a4a} set as \
     environment variable.
    Alias VSS_SHADOW_SET for shadow set ID {c58e1452-c554-400e-a266-d11d5c837cb1} \
     set as environment variable.
    
    Querying all shadow copies with the shadow copy set ID \
     {c58e1452-c554-400e-a266-d11d5c837cb1}
    
     * Shadow copy ID = {de4ddca4-4978-4805-8776-cdf82d190a4a}     %VSS_SHADOW_1%
        - Shadow copy set: {c58e1452-c554-400e-a266-d11d5c837cb1}  %VSS_SHADOW_SET%
        - Original count of shadow copies = 1
        - Original volume name: \\FSRVP-SERVER\SLES_SNAPPER\ \
          [volume not on this machine]
        - Creation time: 6/17/2014 3:54:43 PM
        - Shadow copy device name:
          \\FSRVP-SERVER\SLES_SNAPPER@{31afd84a-44a7-41be-b9b0-751898756faa}
        - Originating machine: FSRVP-SERVER
        - Service machine: win-client.example.com
        - Not exposed
        - Provider ID: {89300202-3cec-4981-9171-19f59559e0f2}
        - Attributes:  No_Auto_Release Persistent FileShare
    
    Number of shadow copies listed: 1
  8. 完成備份程序︰

    DISKSHADOW> end backup
  9. 建立快照後,嘗試將它刪除,並驗證刪除結果︰

    DISKSHADOW> delete shadows volume \\FSRVP-SERVER\SLES_SNAPPER\
    Deleting shadow copy {de4ddca4-4978-4805-8776-cdf82d190a4a} on volume \
     \\FSRVP-SERVER\SLES_SNAPPER\ from provider \
    {89300202-3cec-4981-9171-19f59559e0f2} [Attributes: 0x04000009]...
    
    Number of shadow copies deleted: 1
    
    DISKSHADOW> list shadows all
    
    Querying all shadow copies on the computer ...
    No shadow copies found in system.

29.9 更多資訊

Samba 文件包含在 samba-doc 套件中,預設不會安裝該套件。您可以使用 zypper install samba-doc 來安裝。在指令行中輸入 apropos samba 可顯示一些手冊頁,或者流覽 /usr/share/doc/packages/samba 目錄可取得更多的線上文件与範例。examples 子目錄中提供了一個帶有備註的範例組態 (smb.conf.SUSE)。另一個可以查看 Samba 相關資訊的檔案是 /usr/share/doc/packages/samba/README.SUSE

由 Samba 團隊提供的《Samba  HOWTO》(請參閱 https://wiki.samba.org) 包含了疑難排解一節。除此之外,文件的第五部份提供檢查組態的逐步指南。