1.5. 将 Samba 设置为 AD 域成员服务器


如果您正在运行 AD 或 NT4 域,请使用 Samba 将 Red Hat Enterprise Linux 服务器添加为域的成员,以便可以:

  • 访问其他域成员上的域资源
  • 对本地服务(如 sshd)验证域用户
  • 托管在服务器上的共享目录和打印机,以充当文件和打印服务器

1.5.1. 将 RHEL 系统添加到 AD 域中

Samba Winbind 是系统安全服务守护进程(SSSD)的一个替代方案,用于将活动目录(AD)与 Red Hat Enterprise Linux(RHEL)系统连接。您可以使用 realmd 将 RHEL 系统加入到 AD 域,来配置 Samba Winbind 。

先决条件

  • 主机使用 DNS 服务器来解析 AD 域。
  • 主机上的时间与 AD 中的时间同步,时区设置是正确的。

流程

  1. 如果您的 AD 需要弃用的 RC4 加密类型进行 Kerberos 验证,请在 RHEL 中启用对这些密码的支持:

    # update-crypto-policies --set DEFAULT:AD-SUPPORT
  2. 安装以下软件包:

    # dnf install realmd oddjob-mkhomedir oddjob samba-winbind-clients \
           samba-winbind samba-common-tools samba-winbind-krb5-locator krb5-workstation
  3. 要在域成员中共享目录或打印机,请安装samba 软件包:

    # dnf install samba
  4. 备份现有的/etc/samba/smb.conf Samba 配置文件:

    # mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
  5. 加入域。例如,要加入名为ad.example.com的域:

    # realm join --membership-software=samba --client-software=winbind ad.example.com

    使用上面的命令,realm工具会自动:

    • ad.example.com域中的成员创建/etc/samba/smb.conf文件
    • 将用于用户和组查找的winbind模块添加到/etc/nsswitch.conf文件中
    • 更新/etc/pam.d/目录中的可插拔验证模块(PAM)配置文件
    • 启动winbind服务,并使服务在系统引导时启动
  6. 可选:在 /etc/samba/smb.conf 文件中设置备用的 ID 映射后端或自定义 ID 映射设置。

详情请参阅 了解和配置 Samba ID 映射

  1. 验证winbind服务是否运行:

    # systemctl status winbind
    ...
       Active: active (running) since Tue 2018-11-06 19:10:40 CET; 15s ago
    重要

    要启用 Samba 来查询域用户和组信息,必须在启动smb之前运行winbind服务。

  2. 如果您安装了samba软件包来共享目录和打印机,请启用并启动smb服务:

    # systemctl enable --now smb
  3. 如果您要向活动目录验证本地登录,请启用 winbind_krb5_localauth 插件。请参阅 使用 MIT Kerberos 的本地授权插件

验证

  1. 显示 AD 用户的详情,如 AD 域中的 AD 管理员帐户:

    # getent passwd "AD\administrator"
    AD\administrator:*:10000:10000::/home/administrator@AD:/bin/bash
  2. 查询 AD 域中的域用户组成员:

    # getent group "AD\Domain Users"
        AD\domain users:x:10000:user1,user2
  3. 可选:验证在对文件和目录设置权限时,您是否可以使用域用户和组。例如,将/srv/samba/example.txt文件的所有者设置为AD\administrator,组设置为AD\Domain Users

    # chown "AD\administrator":"AD\Domain Users" /srv/samba/example.txt
  4. 验证 Kerberos 验证是否如预期正常工作:

    1. 对于 AD 域成员,为administrator@AD.EXAMPLE.COM主体获取一个ticket:

      # kinit administrator@AD.EXAMPLE.COM
    2. 显示缓存的 Kerberos ticket:

      # klist
      Ticket cache: KCM:0
      Default principal: administrator@AD.EXAMPLE.COM
      
      Valid starting       Expires              Service principal
      01.11.2018 10:00:00  01.11.2018 20:00:00  krbtgt/AD.EXAMPLE.COM@AD.EXAMPLE.COM
              renew until 08.11.2018 05:00:00
  5. 显示可用域:

    # wbinfo --all-domains
    BUILTIN
    SAMBA-SERVER
    AD

1.5.2. 使用 MIT Kerberos 的本地授权插件

winbind服务向域成员提供Active Directory用户。在某些情况下,管理员希望域用户能够对域成员上运行的本地服务(如SSH服务器)启用身份验证。当使用 Kerberos 来验证域用户时,启用winbind_krb5_localauth插件,通过winbind 服务将 Kerberos 主体正确映射到Active Directory帐户。

例如,如果Active Directory用户的sAMAccountName属性设置为EXAMPLE,并且用户尝试使用小写的用户名进行日志记录,Kerberos将返回大写的用户名。因此,条目不匹配,身份验证失败。

使用winbind_krb5_localauth插件时,帐户名称会被正确映射。请注意,这只适用于 GSSAPI 身份验证,不适用于获取初始票据授权票据(TGT)。

先决条件

  • Samba 配置为 Active Directory 的成员。
  • Red Hat Enterprise Linux 对 Active Directory 进行身份验证。
  • winbind服务在运行。

流程

编辑/etc/krb5.conf文件,并添加以下部分:

[plugins]
localauth = {
     module = winbind:/usr/lib64/samba/krb5/winbind_krb5_localauth.so
     enable_only = winbind
}

1.5.3. 在 Samba 客户端上启用证书自动注册

证书自动注册是活动目录(AD)证书服务的功能。此功能使用户和设备在没有用户交互的情况下为证书注册。管理员可以在本地服务中使用 AD 证书颁发机构(CA)发布的证书,而无需手动监控和更新证书,这可防止中断中断。

如果 AD 提供证书颁发机构(CA),并且 RHEL 主机是 AD 的成员,您可以在 RHEL 主机上启用证书自动注册。然后,Samba 从 AD 应用自动注册组策略,并将 certmonger 服务配置为请求和管理证书。

先决条件

  • Samba 配置为 AD 的成员
  • AD 中的 Windows 服务器具有安装了以下服务的 Active Directory 证书服务 服务器角色:

    • 证书颁发机构
    • 证书注册
    • 策略 Web 服务
  • 互联网信息服务(ISS)被配置为通过 HTTPS 提供证书自动注册功能。
  • ISS 使用 AD CA 发布的证书。
  • 证书注册服务支持 Kerberos 身份验证。
  • AD 中配置了用于证书自动注册的组策略对象(GPO)。

步骤

  1. 安装 samba-gpupdate 软件包:

    # dnf install samba-gpupdate
  2. /etc/samba/smb.conf 文件中附加以下设置:

    kerberos method = secrets and keytab
    sync machine password to keytab = "/etc/krb5.keytab:account_name:sync_spns:spn_prefixes=host:sync_kvno:machine_password", "/etc/samba/cepces.keytab:account_name:machine_password"
    apply group policies = yes

    Samba 配置中指定的设置包括以下配置:

    Kerberos 方法 = secret 和 keytab
    将 Samba 配置为使用 /var/lib/samba/private/secrets.tdb 文件,首先验证 Kerberos 票据,然后是 /etc/krb5.keytab 文件。
    将机器密码同步到 keytab = & lt;list_of_keytab_files_and_their_principals>
    定义 Samba 在这些文件中维护的 keytab 文件的路径和 Kerberos 主体。使用显示的值时,Samba 继续维护 /etc/krb5.keytab 系统 keytab,另外,一个 /etc/samba/cepces.keytab 文件,certmonger 使用的提交帮助程序用于向 CA 进行身份验证。
    应用组策略 = yes
    配置 winbind 服务,以间隔执行 gpupdate 命令。更新间隔为 90 分钟,以及 0 到 30 分钟之间的随机偏移。
  3. 创建 /etc/samba/cepces.keytab 文件:

    # net ads keytab create
  4. 编辑 /etc/cepces/cepces.conf 文件,并进行以下更改:

    1. [global] 部分中,将 server 变量设置为运行 CA 服务的 Windows 服务器的完全限定域名(FQDN):

      [global]
      server=win-server.ad.example.com
    2. [kerberos] 部分中,将 keytab 变量设置为 /etc/samba/cepces.keytab

      [kerberos]
      keytab=/etc/samba/cepces.keytab
  5. 启用并启动 certmonger 服务:

    # systemctl enable --now certmonger

    certmonger 服务从 CA 请求证书,并在证书过期前自动更新它们。

  6. 手动运行 samba-gpupdate,以确保组策略已从 AD 加载:

    # samba-gpupdate
  7. certmonger 服务将密钥和证书存储在以下目录中:

    • 私钥: /var/lib/samba/private/certs/
    • 签发的证书: /var/lib/samba/certs/

      现在,您可以在同一主机上的服务中使用密钥和证书。

  8. 可选:显示 certmonger 管理的证书:

    # getcert list
    Number of certificates and requests being tracked: 1.
    Request ID 'AD-ROOT-CA.Machine':
    	status: MONITORING
    	stuck: no
    	key pair storage: type=FILE,location='/var/lib/samba/private/certs/AD-ROOT-CA.Machine.key'
    	certificate: type=FILE,location='/var/lib/samba/certs/AD-ROOT-CA.Machine.crt'
    	CA: AD-ROOT-CA
    	issuer: CN=AD-ROOT-CA,DC=ad,DC=example,DC=com
    	subject: CN=rhel9.ad.example.com
    	issued: 2025-03-25 14:22:07 CET
    	expires: 2026-03-25 14:22:07 CET
    	dns: rhel9.ad.example.com
    	key usage: digitalSignature,keyEncipherment
    	eku: id-kp-clientAuth,id-kp-serverAuth
    	certificate template/profile: Machine
    	profile: Machine
    	pre-save command:
    	post-save command:
    	track: yes
    	auto-renew: yes

    默认情况下,Windows CA 使用 Machine 证书模板只发布证书。如果您在适用于此主机的 Windows CA 中配置了额外的模板,certmonger 会请求这些模板的证书,getcert 列表 输出还包括它们的条目。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部