跳到内容跳到页面导航:上一页 [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_NODE 替换为 Samba 网关节点的名称。

  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 一起部署,该机制目前并不安全。

    如果所有 CephFS 文件系统路径访问都专由 Samba 处理,则可安全启用 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