跳至內容跳至頁面導覽:上一頁 [access key p]/下一頁 [access key n]
documentation.suse.com / SUSE Enterprise Storage 7 文件 / 操作和管理指南 / 存取叢集資料 / 透過 Samba 輸出 Ceph 資料
適用範圍 SUSE Enterprise Storage 7

24 透過 Samba 輸出 Ceph 資料

本章介紹如何透過 Samba/CIFS 共用輸出 Ceph 叢集中儲存的資料,以便您可從 Windows* 用戶端機器輕鬆存取這些資料。另外還介紹了有助於您將 Ceph Samba 閘道設定為加入到 Windows* 網域中的 Active Directory,以進行使用者驗證和授權的資訊。

注意
注意:Samba 閘道效能

由於用戶端與儲存區之間的額外網路躍程會導致通訊協定負擔增加並產生額外的延遲,因此與使用原生 Ceph 用戶端相比,透過 Samba 閘道存取 CephFS 可能會使應用程式效能大幅降低。

24.1 透過 Samba 共用輸出 CephFS

警告
警告:跨通訊協定存取

原生 CephFS 和 NFS 用戶端不受透過 Samba 獲取的檔案鎖定限制,反之亦然。如果透過其他方式存取 CephFS 支援的 Samba 共用路徑,則依賴跨通訊協定檔案鎖定的應用程式可能會出現資料損毀。

24.1.1 設定和輸出 Samba 套件

若要設定和輸出 Samba 共用,需要安裝以下套件: samba-cephsamba-winbind。若尚未安裝這些套件,請執行以下指令進行安裝:

cephuser@smb > zypper install samba-ceph samba-winbind

24.1.2 單一閘道範例

在輸出 Samba 共用的準備過程中,需要選擇用於充當 Samba 閘道的合適節點。該節點必須能存取 Ceph 用戶端網路,同時要有足夠的 CPU、記憶體和網路資源。

您可以透過 CTDB 和 SUSE Linux Enterprise High Availability Extension 提供容錯移轉功能。如需 HA 設定的詳細資訊,請參閱第 24.1.3 節 「設定高可用性」

  1. 請確定叢集中已存在一個正常運作的 CephFS。

  2. 在 Ceph 管理節點上建立一個特定於 Samba 閘道的金鑰圈,並將其複製到兩個 Samba 閘道節點:

    cephuser@adm > ceph auth get-or-create client.samba.gw mon 'allow r' \
     osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyring
    cephuser@adm > scp ceph.client.samba.gw.keyring SAMBA_NODE:/etc/ceph/

    使用 Samba 閘道節點的名稱取代 SAMBA_NODE

  3. 在 Samba 閘道節點上執行以下步驟。將 Samba 連同 Ceph 整合套件一併安裝:

    cephuser@smb > sudo zypper in samba samba-ceph
  4. 使用以下內容取代 /etc/samba/smb.conf 檔案的預設內容:

    [global]
      netbios name = SAMBA-GW
      clustering = no
      idmap config * : backend = tdb2
      passdb backend = tdbsam
      # disable print server
      load printers = no
      smbd: backgroundqueue = no
    
    [SHARE_NAME]
      path = CEPHFS_MOUNT
      read only = no
      oplocks = no
      kernel share modes = no

    在啟動具有核心 CephFS 共用組態的 Samba 之前,必須先掛接上面的 CEPHFS_MOUNT 路徑。請參閱第 23.3 節 「在 /etc/fstab 中掛接 CephFS」

    上面的共用組態使用 Linux 核心 CephFS 用戶端,這是出於效能原因建議使用的用戶端。做為替代方案,也可以使用 Samba vfs_ceph 模組與 Ceph 叢集通訊。以下指示僅適用於舊版,不建議用於新的 Samba 部署:

    [SHARE_NAME]
      path = /
      vfs objects = ceph
      ceph: config_file = /etc/ceph/ceph.conf
      ceph: user_id = samba.gw
      read only = no
      oplocks = no
      kernel share modes = no
    提示
    提示:Oplocks 和共用模式

    oplocks (也稱為 SMB2+ 租用) 可透過加速用戶端快取來提升效能,不過如果將其他 CephFS 用戶端 (例如核心 mount.ceph、FUSE 或 NFS Ganesha) 與 Samba 一併部署,該機制目前並不安全。

    如果由 Samba 專門處理所有 CephFS 檔案系統路徑存取,則可安全啟用 oplocks 參數。

    目前,在使用 CephFS vfs 模組執行的共用中,需要停用 kernel share modes,檔案處理才能正常運作。

    重要
    重要:允許存取

    Samba 可將 SMB 使用者和群組對應至本地帳戶。可以透過以下指令為本地使用者指定 Samba 共用存取的密碼:

    root # smbpasswd -a USERNAME

    對於成功的 I/O,共用路徑的存取控制清單 (ACL) 需要允許存取透過 Samba 連接的使用者。您可以透過 CephFS 核心用戶端暫時掛接,並對共用路徑使用 chmodchownsetfacl 公用程式來修改 ACL。例如,若要允許所有使用者進行存取,請執行以下指令:

    root # chmod 777 MOUNTED_SHARE_PATH

24.1.2.1 啟動 Samba 服務

使用以下指令可啟動或重新啟動獨立的 Samba 服務:

root # systemctl restart smb.service
root # systemctl restart nmb.service
root # systemctl restart winbind.service

若要確定會在開機時啟動 Samba 服務,請透過以下指令將其啟用:

root # systemctl enable smb.service
root # systemctl enable nmb.service
root # systemctl enable winbind.service
提示
提示:選擇性的 nmbwinbind 服務

如果不需要瀏覽網路共用,則無需啟用和啟動 nmb 服務。

僅當設定為 Active Directory 網域成員時才需要 winbind 服務。請參閱第 24.2 節 「加入 Samba 閘道和 Active Directory」

24.1.3 設定高可用性

重要
重要:不支援透明容錯移轉

儘管多節點 Samba + CTDB 部署比單節點部署的高可用性更佳 (請參閱第 24 章 「透過 Samba 輸出 Ceph 資料),但它並不支援用戶端透明容錯移轉。應用程式可能會在 Samba 閘道節點發生故障時出現短暫的中斷。

本節提供一個範例來展示如何設定 Samba 伺服器的雙節點高可用性組態。該設定需要 SUSE Linux Enterprise High Availability Extension。兩個節點分別名為 earth (192.168.1.1) 和 mars (192.168.1.2)。

如需 SUSE Linux Enterprise High Availability Extension 的詳細資料,請參閱 https://documentation.suse.com/sle-ha/15-SP1/

此外,使用兩個浮動的虛擬 IP 位址可讓用戶端連接到服務,而不管該服務在哪個實體節點上執行。192.168.1.10 用於透過 Hawk2 進行叢集管理,192.168.2.1 專門用於 CIFS 輸出。如此可讓日後能更輕鬆地套用安全性限制。

以下程序說明範例安裝。https://documentation.suse.com/sle-ha/15-SP2/html/SLE-HA-all/art-sleha-install-quick.html 上提供了更多詳細資料。

  1. 在管理節點上建立一個特定於 Samba 閘道的金鑰圈,並將其複製到上述兩個節點上:

    cephuser@adm > ceph auth get-or-create client.samba.gw mon 'allow r' \
        osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyring
    cephuser@adm > scp ceph.client.samba.gw.keyring earth:/etc/ceph/
    cephuser@adm > scp ceph.client.samba.gw.keyring mars:/etc/ceph/
  2. SLE-HA 設定需要一個圍籬區隔裝置,以避免在使用中叢集節點變為未同步時出現電腦分裂情況。為此,您可以將 Ceph RBD 影像與 Stonith 區塊裝置 (SBD) 結合使用。如需更多詳細資料,請參閱 https://documentation.suse.com/sle-ha/15-SP2/html/SLE-HA-all/cha-ha-storage-protect.html#sec-ha-storage-protect-fencing-setup

    如果該影像尚不存在,請建立一個名為 rbd 的 RBD 池 (參閱第 18.1 節 「建立池」),並將其與 rbd 相關聯 (參閱第 18.5.1 節 「將池與應用程式關聯」)。然後建立一個名為 sbd01 的相關 RBD 影像:

    cephuser@adm > ceph osd pool create rbd
    cephuser@adm > ceph osd pool application enable rbd rbd
    cephuser@adm > rbd -p rbd create sbd01 --size 64M --image-shared
  3. 準備好 earthmars,以代管 Samba 服務:

    1. 繼續操作前,請確定已安裝下列套件: ctdbtdb-toolssamba

      root # zypper in ctdb tdb-tools samba samba-ceph
    2. 確定已停止並停用 Samba 和 CTDB 服務:

      root # systemctl disable ctdb
      root # systemctl disable smb
      root # systemctl disable nmb
      root # systemctl disable winbind
      root # systemctl stop ctdb
      root # systemctl stop smb
      root # systemctl stop nmb
      root # systemctl stop winbind
    3. 在所有節點上開啟防火牆的連接埠 4379。這是為了使 CTDB 能夠與其他叢集節點通訊。

  4. earth 上建立 Samba 的組態檔案。這些檔案稍後將自動同步到 mars

    1. /etc/ctdb/nodes 檔案中插入 Samba 閘道節點的私人 IP 位址清單。如需更多詳細資料,請參閱 ctdb 手冊頁 (man 7 ctdb)。

      192.168.1.1
      192.168.1.2
    2. 設定 Samba。在 /etc/samba/smb.conf[global] 區段中新增以下行。使用所選的主機名稱取代 CTDB-SERVER (叢集中的所有節點將顯示為一個使用此名稱的大節點,以方便操作)。另外,新增一個共用定義,以 SHARE_NAME 為例:

      [global]
        netbios name = SAMBA-HA-GW
        clustering = yes
        idmap config * : backend = tdb2
        passdb backend = tdbsam
        ctdbd socket = /var/lib/ctdb/ctdb.socket
        # disable print server
        load printers = no
        smbd: backgroundqueue = no
      
      [SHARE_NAME]
        path = /
        vfs objects = ceph
        ceph: config_file = /etc/ceph/ceph.conf
        ceph: user_id = samba.gw
        read only = no
        oplocks = no
        kernel share modes = no

      請注意,/etc/ctdb/nodes/etc/samba/smb.conf 檔案需要在所有 Samba 閘道節點上都相符。

  5. 安裝並開機 SUSE Linux Enterprise High Availability 叢集。

    1. earthmars 上註冊 SUSE Linux Enterprise High Availability Extension:

      root@earth # SUSEConnect -r ACTIVATION_CODE -e E_MAIL
      root@mars # SUSEConnect -r ACTIVATION_CODE -e E_MAIL
    2. 安裝 ha-cluster-bootstrap

      root@earth # zypper in ha-cluster-bootstrap
      root@mars # zypper in ha-cluster-bootstrap
    3. 透過 rbdmap.service 在兩個 Samba 閘道上對應 RBD 影像 sbd01

      編輯 /etc/ceph/rbdmap 並新增 SBD 影像的項目:

      rbd/sbd01 id=samba.gw,keyring=/etc/ceph/ceph.client.samba.gw.keyring

      啟用並啟動 rbdmap.service

      root@earth # systemctl enable rbdmap.service && systemctl start rbdmap.service
      root@mars # systemctl enable rbdmap.service && systemctl start rbdmap.service

      /dev/rbd/rbd/sbd01 裝置應在兩個 Samba 閘道上都可用。

    4. 啟始化 earth 上的叢集並讓 mars 加入它。

      root@earth # ha-cluster-init
      root@mars # ha-cluster-join -c earth
      重要
      重要

      在啟始化和加入叢集的過程中,會以互動方式詢問您是否使用 SBD。按一下 y 進行確認,然後將 /dev/rbd/rbd/sbd01 指定為儲存裝置的路徑。

  6. 檢查叢集的狀態。您應該會看到兩個節點都已新增至叢集中:

    root@earth # crm status
    2 nodes configured
    1 resource configured
    
    Online: [ earth mars ]
    
    Full list of resources:
    
     admin-ip       (ocf::heartbeat:IPaddr2):       Started earth
  7. earth 上執行以下指令,以設定 CTDB 資源:

    root@earth # crm configure
    crm(live)configure# primitive ctdb ocf:heartbeat:CTDB params \
        ctdb_manages_winbind="false" \
        ctdb_manages_samba="false" \
        ctdb_recovery_lock="!/usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper
            ceph client.samba.gw cephfs_metadata ctdb-mutex"
        ctdb_socket="/var/lib/ctdb/ctdb.socket" \
            op monitor interval="10" timeout="20" \
            op start interval="0" timeout="200" \
            op stop interval="0" timeout="100"
    crm(live)configure# primitive smb systemd:smb \
        op start timeout="100" interval="0" \
        op stop timeout="100" interval="0" \
        op monitor interval="60" timeout="100"
    crm(live)configure# primitive nmb systemd:nmb \
        op start timeout="100" interval="0" \
        op stop timeout="100" interval="0" \
        op monitor interval="60" timeout="100"
    crm(live)configure# primitive winbind systemd:winbind \
        op start timeout="100" interval="0" \
        op stop timeout="100" interval="0" \
        op monitor interval="60" timeout="100"
    crm(live)configure# group g-ctdb ctdb winbind nmb smb
    crm(live)configure# clone cl-ctdb g-ctdb meta interleave="true"
    crm(live)configure# commit
    提示
    提示:選擇性的 nmbwinbind 原始

    如果不需要瀏覽網路共用,則無需新增 nmb 原始。

    僅當設定為 Active Directory 網域成員時才需要 winbind 原始。請參閱第 24.2 節 「加入 Samba 閘道和 Active Directory」

    組態選項 ctdb_recovery_lock 中的二進位檔案 /usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper 中依如下順序包含以下參數:CLUSTER_NAMECEPHX_USERRADOS_POOLRADOS_OBJECT

    可附加一個額外的鎖定逾時參數來覆寫所用的預設值 (10 秒)。使用更高的值將會增加 CTDB 復原主節點的容錯移轉時間,然而使用更低的值可能會導致不正確地將復原主節點偵測為停機狀態,以致觸發翻動容錯移轉。

  8. 新增叢集化 IP 位址:

    crm(live)configure# primitive ip ocf:heartbeat:IPaddr2
        params ip=192.168.2.1 \
        unique_clone_address="true" \
        op monitor interval="60" \
        meta resource-stickiness="0"
    crm(live)configure# clone cl-ip ip \
        meta interleave="true" clone-node-max="2" globally-unique="true"
    crm(live)configure# colocation col-with-ctdb 0: cl-ip cl-ctdb
    crm(live)configure# order o-with-ctdb 0: cl-ip cl-ctdb
    crm(live)configure# commit

    如果 unique_clone_address 設定為 true,IPaddr2 資源代辦會向指定的位址新增一個複製品 ID,從而導致出現三個不同的 IP 位址。這些位址通常是不需要的,但有助於實現負載平衡。如需有關此主題的詳細資訊,請參閱 https://documentation.suse.com/sle-ha/15-SP2/html/SLE-HA-all/cha-ha-lb.html

  9. 檢查結果:

    root@earth # crm status
    Clone Set: base-clone [dlm]
         Started: [ factory-1 ]
         Stopped: [ factory-0 ]
     Clone Set: cl-ctdb [g-ctdb]
         Started: [ factory-1 ]
         Started: [ factory-0 ]
     Clone Set: cl-ip [ip] (unique)
         ip:0       (ocf:heartbeat:IPaddr2):       Started factory-0
         ip:1       (ocf:heartbeat:IPaddr2):       Started factory-1
  10. 從用戶端機器執行測試。在 Linux 用戶端上執行以下指令,確定是否可以將檔案複製到系統或從系統複製檔案:

    root # smbclient //192.168.2.1/myshare

24.1.3.1 重新啟動 HA Samba 資源

發生任何 Samba 或 CTDB 組態變更後,可能需要重新啟動 HA 資源才能使變更生效。可透過以下指令來實現:

root # crm resource restart cl-ctdb

24.2 加入 Samba 閘道和 Active Directory

您可以將 Ceph Samba 閘道設定為支援 Active Directory (AD) 的 Samba 網域成員。做為 Samba 網域成員,您可以針對來自輸出 CephFS 的檔案和目錄在本地存取清單 (ACL) 中使用網域使用者和群組。

24.2.1 準備 Samba 安裝

本節介紹在設定 Samba 自身之前,您需要執行的一些準備步驟。首先,您需要準備一個乾淨的環境,這樣有助於防止混淆,並可確認以前所安裝的 Samba 系統中的檔案未與新安裝的網域成員混用。

提示
提示:同步時鐘

所有 Samba 閘道節點的時鐘都需要與 Active Directory 網域控制器保持同步。時鐘誤差可能會導致驗證失敗。

確認沒有執行中的 Samba 或名稱快取程序:

cephuser@smb > ps ax | egrep "samba|smbd|nmbd|winbindd|nscd"

如果輸出列出了任何 sambasmbdnmbdwinbinddnscd 程序,請將其停止。

如果您之前在此主機上執行過 Samba 安裝,請移除 /etc/samba/smb.conf 檔案。另外,請移除所有 Samba 資料庫檔案 (例如 *.tdb*.ldb 檔案)。若要列出包含 Samba 資料庫的目錄,請執行以下指令:

cephuser@smb > smbd -b | egrep "LOCKDIR|STATEDIR|CACHEDIR|PRIVATE_DIR"

24.2.2 確認 DNS

Active Directory (AD) 使用 DNS 來尋找網域控制器 (DC) 和服務 (例如 Kerberos)。因此,AD 網域成員和伺服器需要能夠解析 AD DNS 區域。

確認已正確設定 DNS 且正向和反向尋找均可正確解析,例如:

cephuser@adm > nslookup DC1.domain.example.com
Server:         10.99.0.1
Address:        10.99.0.1#53

Name:   DC1.domain.example.com
Address: 10.99.0.1
cephuser@adm > 10.99.0.1
Server:        10.99.0.1
Address:	10.99.0.1#53

1.0.99.10.in-addr.arpa	name = DC1.domain.example.com.

24.2.3 解析 SRV 記錄

AD 使用 SRV 記錄尋找服務 (例如 Kerberos 和 LDAP)。若要確認能否正確解析 SRV 記錄,請使用 nslookup 互動外圍程序,例如:

cephuser@adm > nslookup
Default Server:  10.99.0.1
Address:  10.99.0.1

> set type=SRV
> _ldap._tcp.domain.example.com.
Server:  UnKnown
Address:  10.99.0.1

_ldap._tcp.domain.example.com   SRV service location:
          priority       = 0
          weight         = 100
          port           = 389
          svr hostname   = dc1.domain.example.com
domain.example.com      nameserver = dc1.domain.example.com
dc1.domain.example.com  internet address = 10.99.0.1

24.2.4 設定 Kerberos

Samba 支援 Heimdal 和 MIT Kerberos 後端。若要對網域成員設定 Kerberos,請在您的 /etc/krb5.conf 檔案中進行以下設定:

[libdefaults]
	default_realm = DOMAIN.EXAMPLE.COM
	dns_lookup_realm = false
	dns_lookup_kdc = true

上面的範例為 DOMAIN.EXAMPLE.COM 領域設定了 Kerberos。我們不建議在 /etc/krb5.conf 檔案中設定任何進一步的參數。如果您的 /etc/krb5.conf 中包含 include 行,則您必須移除此行,否則該檔案將無法運作。

24.2.5 解析本地主機名稱

當您將主機加入網域中時,Samba 會嘗試在 AD DNS 區域中註冊其主機名稱。為此,net 公用程式需要能夠使用 DNS 或 /etc/hosts 檔案中的正確項目來解析主機名稱。

若要確認您的主機名稱解析正確,請使用 getent hosts 指令:

cephuser@adm > getent hosts example-host
10.99.0.5      example-host.domain.example.com    example-host

主機名稱和 FQDN 不得解析為 127.0.0.1 IP 位址,或與網域成員的 LAN 介面上所用 IP 位址不同的任何 IP 位址。如果未顯示輸出或主機解析為錯誤的 IP 位址,而您未在使用 DHCP,請在 /etc/hosts 檔案中設定正確的項目:

127.0.0.1      localhost
10.99.0.5      example-host.samdom.example.com    example-host
提示
提示:DHCP 和 /etc/hosts

如果您在使用 DHCP,請檢查 /etc/hosts 是否僅包含「127.0.0.1」行。如果仍然有問題,請聯絡 DHCP 伺服器的管理員。

如果您需要新增機器主機名稱的別名,請將別名新增至以機器 IP 位址開頭的行的末尾,切勿新增至「127.0.0.1」行。

24.2.6 設定 Samba

本節描述有關您需要在 Samba 組態中包含的特定組態選項的資訊。

Active Directory 網域成員資格主要透過在 /etc/samba/smb.conf[global] 區段中設定 security = ADS 以及相應的 Kerberos 領域和 ID 對應參數進行設定。

[global]
  security = ADS
  workgroup = DOMAIN
  realm = DOMAIN.EXAMPLE.COM
  ...

24.2.6.1 選擇 winbindd 中用於 ID 對應的後端

如果您需要讓您的使用者使用不同的登入外圍程序和/或 Unix 主目錄路徑,或者讓他們在任何地方都使用相同的 ID,您需要使用 winbind「ad」後端並將 RFC2307 屬性新增至 AD 中。

重要
重要:RFC2307 屬性和 ID 編號

建立使用者或群組時,系統不會自動新增 RFC2307 屬性。

DC 上找到的 ID 編號 (3000000 範圍內的編號) 不是 RFC2307 屬性,Unix 網域成員上將不會使用該編號。如果您需要在任何地方都使用相同的 ID 編號,請將 uidNumbergidNumber 屬性新增至 AD 中,並在 Unix 網域成員上使用 winbind「ad」後端。如果您決定將 uidNumbergidNumber 屬性新增至 AD 中,請不要使用 3000000 範圍內的編號。

如果您的使用者僅將 Samba AD DC 用於驗證目的,而不會在其上儲存資料或登入其中,則您可使用 winbind「rid」後端。如此,系統會依據 Windows* RID 來計算使用者和群組 ID。如果您在每個 Unix 網域成員上的 smb.conf 中都使用相同的 [global] 區段,您將會獲得相同的 ID。如果您使用「rid」後端,則不需要向 AD 新增任何內容,系統將會忽略 RFC2307 屬性。使用「rid」後端時,請在 smb.conf 中設定 template shelltemplate homedir 參數。它們是全域設定,會為所有使用者設定相同的登入外圍程序和 Unix 主目錄路徑 (RFC2307 屬性則不同,可用來設定個別的 Unix 主目錄路徑和外圍程序)。

如果您需要讓您的使用者和群組在任何地方都使用相同的 ID,但只需要為他們設定相同的登入外圍程序和相同的 Unix 主目錄路徑,還可使用另一種方法來設定 Samba。您可以透過使用 winbind「ad」後端並在 smb.conf 中使用範本行來實現此目的。使用此方法時,您僅需將 uidNumbergidNumber 屬性新增至 AD 中。

提示
提示:有關 ID 對應後端的更多資訊

如需可用 ID 對應後端的更多詳細資訊,請參閱下列相關手冊頁:man 8 idmap_adman 8 idmap_ridman 8 idmap_autorid

24.2.6.2 設定使用者和群組 ID 範圍

決定好使用哪個 winbind 後端後,您需要在 smb.conf 中設定 idmap config 選項來指定要使用的範圍。依預設,Unix 網域成員上保留有多個使用者和群組 ID 區塊:

表 24.1︰ 預設使用者和群組 ID 區塊
ID範圍
0-999本地系統使用者和群組。
從 1000 開始本地 Unix 使用者和群組。
從 10000 開始DOMAIN 使用者和群組。

依據上述範圍,您不應將「*」或「DOMAIN」範圍設定為 999 以內,因為它們會與本地系統使用者和群組發生衝突。您還應為任何本地 Unix 使用者和群組留出餘地,因此將 idmap config 範圍設定為從 3000 開始是不錯的折衷方法。

您需要確定「DOMAIN」可能會增長到多大,並決定是否打算建立任何受信任的網域。然後,便可依如下所示來設定 idmap config 範圍:

表 24.2︰ ID 範圍
領域範圍
*3000-7999
DOMAIN10000-999999
TRUSTED1000000-9999999

24.2.6.3 將網域管理員帳戶對應至本地 root 使用者

Samba 可讓您將網域帳戶對應至本地帳戶。透過此功能,您可以用不同於用戶端上要求執行操作的帳戶的使用者身分在網域成員的檔案系統上執行檔案操作。

提示
提示:對應網域管理員 (選擇性)

將網域管理員對應至本地 root 帳戶屬於選擇性操作。請僅在網域管理員需要能夠使用 root 許可權在網域成員上執行檔案操作時設定該對應。請注意,將 Administrator 對應至 root 帳戶後,其便不能以「Administrator」身分登入 Unix 網域成員。

若要將網域管理員對應至本地 root 帳戶,請執行以下步驟:

  1. 將以下參數新增至 smb.conf 檔案的 [global] 區段:

    username map = /etc/samba/user.map
  2. 建立包含以下內容的 /etc/samba/user.map 檔案:

    !root = DOMAIN\Administrator
重要
重要

使用「ad」ID 對應後端時,請不要為網域管理員帳戶設定 uidNumber 屬性。如果為網域管理員帳戶設定了該屬性,其值會覆寫 root 使用者的本地 UID「0」,因而會導致對應失敗。

如需更多詳細資料,請參閱 smb.conf 手冊頁 (man 5 smb.conf) 中的 username map 參數。

24.2.7 加入 Active Directory 網域

若要將主機加入 Active Directory,請執行以下指令:

cephuser@smb > net ads join -U administrator
Enter administrator's password: PASSWORD
Using short domain name -- DOMAIN
Joined EXAMPLE-HOST to dns domain 'DOMAIN.example.com'

24.2.8 設定名稱服務參數

若要使網域使用者和群組可供本地系統使用,您需要啟用名稱服務參數 (NSS) 程式庫。在 /etc/nsswitch.conf 檔案中,將 winbind 項目附加到以下資料庫:

passwd: files winbind
group:  files winbind
重要
重要:需考量的要點
  • files 項目指定為這兩個資料庫的第一個來源。這可讓 NSS 在查詢 winbind 服務之前,先從 /etc/passwd/etc/group 檔案中尋找網域使用者和群組。

  • 不要將 winbind 項目新增至 NSS shadow 資料庫中。這樣做可能會導致 wbinfo 公用程式失敗。

  • 不要在本地 /etc/passwd 檔案中使用與網域中相同的使用者名稱。

24.2.9 啟動服務

在組態發生變更後,依據第 24.1.2.1 節 「啟動 Samba 服務」第 24.1.3.1 節 「重新啟動 HA Samba 資源」中所述重新啟動 Samba 服務。

24.2.10 測試 winbindd 連接性

24.2.10.1 傳送 winbindd ping

若要驗證 winbindd 服務能否連接至 AD 網域控制器 (DC) 或主要網域控制器 (PDC),請輸入以下指令:

cephuser@smb > wbinfo --ping-dc
checking the NETLOGON for domain[DOMAIN] dc connection to "DC.DOMAIN.EXAMPLE.COM" succeeded

如果前一條指令失敗,請確認 winbindd 服務正在執行,且正確設定了 smb.conf 檔案。

24.2.10.2 尋找網域使用者和群組

您可以使用 libnss_winbind 程式庫尋找網域使用者和群組。例如,若要尋找網域使用者「DOMAIN\demo01」,請執行以下指令:

cephuser@smb > getent passwd DOMAIN\\demo01
DOMAIN\demo01:*:10000:10000:demo01:/home/demo01:/bin/bash

若要尋找網域群組「Domain Users」,請執行以下指令:

cephuser@smb > getent group "DOMAIN\\Domain Users"
DOMAIN\domain users:x:10000:

24.2.10.3 為網域使用者和群組指定檔案許可權

利用名稱服務參數 (NSS) 程式庫,您可以在指令中使用網域使用者帳戶和群組。例如,若要將檔案的擁有者設定為「demo01」網域使用者,並將群組設定為「Domain Users」網域群組,請輸入以下指令:

cephuser@smb > chown "DOMAIN\\demo01:DOMAIN\\domain users" file.txt