24 透過 Samba 輸出 Ceph 資料 #
本章介紹如何透過 Samba/CIFS 共用輸出 Ceph 叢集中儲存的資料,以便您可從 Windows* 用戶端機器輕鬆存取這些資料。另外還介紹了有助於您將 Ceph Samba 閘道設定為加入到 Windows* 網域中的 Active Directory,以進行使用者驗證和授權的資訊。
由於用戶端與儲存區之間的額外網路躍程會導致通訊協定負擔增加並產生額外的延遲,因此與使用原生 Ceph 用戶端相比,透過 Samba 閘道存取 CephFS 可能會使應用程式效能大幅降低。
24.1 透過 Samba 共用輸出 CephFS #
原生 CephFS 和 NFS 用戶端不受透過 Samba 獲取的檔案鎖定限制,反之亦然。如果透過其他方式存取 CephFS 支援的 Samba 共用路徑,則依賴跨通訊協定檔案鎖定的應用程式可能會出現資料損毀。
24.1.1 設定和輸出 Samba 套件 #
若要設定和輸出 Samba 共用,需要安裝以下套件: samba-ceph 和 samba-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 節 「設定高可用性」。
請確定叢集中已存在一個正常運作的 CephFS。
在 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.keyringcephuser@adm >
scp
ceph.client.samba.gw.keyring SAMBA_NODE:/etc/ceph/使用 Samba 閘道節點的名稱取代 SAMBA_NODE。
在 Samba 閘道節點上執行以下步驟。將 Samba 連同 Ceph 整合套件一併安裝:
cephuser@smb >
sudo zypper in samba samba-ceph使用以下內容取代
/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 核心用戶端暫時掛接,並對共用路徑使用
chmod
、chown
或setfacl
公用程式來修改 ACL。例如,若要允許所有使用者進行存取,請執行以下指令:root #
chmod 777 MOUNTED_SHARE_PATH
24.1.2.1 啟動 Samba 服務 #
使用以下指令可啟動或重新啟動獨立的 Samba 服務:
root #
systemctl restart smb.serviceroot #
systemctl restart nmb.serviceroot #
systemctl restart winbind.service
若要確定會在開機時啟動 Samba 服務,請透過以下指令將其啟用:
root #
systemctl enable smb.serviceroot #
systemctl enable nmb.serviceroot #
systemctl enable winbind.service
nmb
和 winbind
服務
如果不需要瀏覽網路共用,則無需啟用和啟動 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 上提供了更多詳細資料。
在管理節點上建立一個特定於 Samba 閘道的金鑰圈,並將其複製到上述兩個節點上:
cephuser@adm >
ceph
auth get-or-create client.samba.gw mon 'allow r' \ osd 'allow *' mds 'allow *' -o ceph.client.samba.gw.keyringcephuser@adm >
scp
ceph.client.samba.gw.keyringearth
:/etc/ceph/cephuser@adm >
scp
ceph.client.samba.gw.keyringmars
:/etc/ceph/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 rbdcephuser@adm >
ceph osd pool application enable rbd rbdcephuser@adm >
rbd -p rbd create sbd01 --size 64M --image-shared準備好
earth
和mars
,以代管 Samba 服務:繼續操作前,請確定已安裝下列套件: ctdb、 tdb-tools及 samba。
root #
zypper
in ctdb tdb-tools samba samba-ceph確定已停止並停用 Samba 和 CTDB 服務:
root #
systemctl disable ctdbroot #
systemctl disable smbroot #
systemctl disable nmbroot #
systemctl disable winbindroot #
systemctl stop ctdbroot #
systemctl stop smbroot #
systemctl stop nmbroot #
systemctl stop winbind在所有節點上開啟防火牆的連接埠
4379
。這是為了使 CTDB 能夠與其他叢集節點通訊。
在
earth
上建立 Samba 的組態檔案。這些檔案稍後將自動同步到mars
。在
/etc/ctdb/nodes
檔案中插入 Samba 閘道節點的私人 IP 位址清單。如需更多詳細資料,請參閱 ctdb 手冊頁 (man 7 ctdb
)。192.168.1.1 192.168.1.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 閘道節點上都相符。
安裝並開機 SUSE Linux Enterprise High Availability 叢集。
在
earth
和mars
上註冊 SUSE Linux Enterprise High Availability Extension:root@earth #
SUSEConnect
-r ACTIVATION_CODE -e E_MAILroot@mars #
SUSEConnect
-r ACTIVATION_CODE -e E_MAIL安裝 ha-cluster-bootstrap :
root@earth #
zypper
in ha-cluster-bootstraproot@mars #
zypper
in ha-cluster-bootstrap透過
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.serviceroot@mars #
systemctl enable rbdmap.service && systemctl start rbdmap.service/dev/rbd/rbd/sbd01
裝置應在兩個 Samba 閘道上都可用。啟始化
earth
上的叢集並讓mars
加入它。root@earth #
ha-cluster-init
root@mars #
ha-cluster-join
-c earth重要在啟始化和加入叢集的過程中,會以互動方式詢問您是否使用 SBD。按一下
y
進行確認,然後將/dev/rbd/rbd/sbd01
指定為儲存裝置的路徑。
檢查叢集的狀態。您應該會看到兩個節點都已新增至叢集中:
root@earth #
crm
status 2 nodes configured 1 resource configured Online: [ earth mars ] Full list of resources: admin-ip (ocf::heartbeat:IPaddr2): Started earth在
earth
上執行以下指令,以設定 CTDB 資源:root@earth #
crm
configurecrm(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 smbcrm(live)configure#
clone
cl-ctdb g-ctdb meta interleave="true"crm(live)configure#
commit
提示:選擇性的nmb
和winbind
原始如果不需要瀏覽網路共用,則無需新增
nmb
原始。僅當設定為 Active Directory 網域成員時才需要
winbind
原始。請參閱第 24.2 節 「加入 Samba 閘道和 Active Directory」。組態選項
ctdb_recovery_lock
中的二進位檔案/usr/lib64/ctdb/ctdb_mutex_ceph_rados_helper
中依如下順序包含以下參數:CLUSTER_NAME、CEPHX_USER、RADOS_POOL 和 RADOS_OBJECT。可附加一個額外的鎖定逾時參數來覆寫所用的預設值 (10 秒)。使用更高的值將會增加 CTDB 復原主節點的容錯移轉時間,然而使用更低的值可能會導致不正確地將復原主節點偵測為停機狀態,以致觸發翻動容錯移轉。
新增叢集化 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-ctdbcrm(live)configure#
order
o-with-ctdb 0: cl-ip cl-ctdbcrm(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。檢查結果:
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從用戶端機器執行測試。在 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"
如果輸出列出了任何 samba
、smbd
、nmbd
、winbindd
或 nscd
程序,請將其停止。
如果您之前在此主機上執行過 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
/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 屬性。
DC 上找到的 ID 編號 (3000000 範圍內的編號) 不是 RFC2307 屬性,Unix 網域成員上將不會使用該編號。如果您需要在任何地方都使用相同的 ID 編號,請將 uidNumber
和 gidNumber
屬性新增至 AD 中,並在 Unix 網域成員上使用 winbind「ad」後端。如果您決定將 uidNumber
和 gidNumber
屬性新增至 AD 中,請不要使用 3000000 範圍內的編號。
如果您的使用者僅將 Samba AD DC 用於驗證目的,而不會在其上儲存資料或登入其中,則您可使用 winbind「rid」後端。如此,系統會依據 Windows* RID 來計算使用者和群組 ID。如果您在每個 Unix 網域成員上的 smb.conf
中都使用相同的 [global]
區段,您將會獲得相同的 ID。如果您使用「rid」後端,則不需要向 AD 新增任何內容,系統將會忽略 RFC2307 屬性。使用「rid」後端時,請在 smb.conf
中設定 template shell
和 template homedir
參數。它們是全域設定,會為所有使用者設定相同的登入外圍程序和 Unix 主目錄路徑 (RFC2307 屬性則不同,可用來設定個別的 Unix 主目錄路徑和外圍程序)。
如果您需要讓您的使用者和群組在任何地方都使用相同的 ID,但只需要為他們設定相同的登入外圍程序和相同的 Unix 主目錄路徑,還可使用另一種方法來設定 Samba。您可以透過使用 winbind「ad」後端並在 smb.conf
中使用範本行來實現此目的。使用此方法時,您僅需將 uidNumber
和 gidNumber
屬性新增至 AD 中。
如需可用 ID 對應後端的更多詳細資訊,請參閱下列相關手冊頁:man 8 idmap_ad
、man 8 idmap_rid
和 man 8 idmap_autorid
。
24.2.6.2 設定使用者和群組 ID 範圍 #
決定好使用哪個 winbind 後端後,您需要在 smb.conf
中設定 idmap config
選項來指定要使用的範圍。依預設,Unix 網域成員上保留有多個使用者和群組 ID 區塊:
ID | 範圍 |
---|---|
0-999 | 本地系統使用者和群組。 |
從 1000 開始 | 本地 Unix 使用者和群組。 |
從 10000 開始 | DOMAIN 使用者和群組。 |
依據上述範圍,您不應將「*」或「DOMAIN」範圍設定為 999 以內,因為它們會與本地系統使用者和群組發生衝突。您還應為任何本地 Unix 使用者和群組留出餘地,因此將 idmap config
範圍設定為從 3000 開始是不錯的折衷方法。
您需要確定「DOMAIN」可能會增長到多大,並決定是否打算建立任何受信任的網域。然後,便可依如下所示來設定 idmap config
範圍:
領域 | 範圍 |
---|---|
* | 3000-7999 |
DOMAIN | 10000-999999 |
TRUSTED | 1000000-9999999 |
24.2.6.3 將網域管理員帳戶對應至本地 root
使用者 #
Samba 可讓您將網域帳戶對應至本地帳戶。透過此功能,您可以用不同於用戶端上要求執行操作的帳戶的使用者身分在網域成員的檔案系統上執行檔案操作。
將網域管理員對應至本地 root
帳戶屬於選擇性操作。請僅在網域管理員需要能夠使用 root
許可權在網域成員上執行檔案操作時設定該對應。請注意,將 Administrator 對應至 root
帳戶後,其便不能以「Administrator」身分登入 Unix 網域成員。
若要將網域管理員對應至本地 root
帳戶,請執行以下步驟:
將以下參數新增至
smb.conf
檔案的[global]
區段:username map = /etc/samba/user.map
建立包含以下內容的
/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
項目新增至 NSSshadow
資料庫中。這樣做可能會導致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