搜索

1.3. 直接连接到 AD

download PDF

系统安全服务守护进程 (SSSD) 是推荐的组件,用于将 Red Hat Enterprise Linux (RHEL) 系统与 Active Directory (AD) 连接。本节论述了如何使用 ID 映射( SSSD 默认使用)或者使用 POSIX 属性直接与 AD 集成。

1.3.1. 用于与 AD 集成的选项: 使用 ID 映射或 POSIX 属性

Linux 和 Windows 系统为用户和组群使用不同的标识符:

  • Linux 使用 用户 ID(UID)和 组群 ID(GID)。请参阅 配置基本系统设置 中的 管理用户和组帐户简介。Linux UID 和 GID 符合 POSIX 标准。
  • Windows 使用安全 ID (SID)。
重要

将 RHEL 系统连接到 AD 后,您可以使用 AD 用户名和密码进行身份验证。不要创建名称与 Windows 用户相同的 Linux 用户,因为重复名称可能会导致冲突并中断身份验证过程。

要以 AD 用户身份验证 RHEL 系统,您必须分配了 UID 和 GID。SSSD 提供了使用 ID 映射或 POSIX 属性与 AD 集成的选项。默认是使用 ID 映射。

为 AD 用户自动生成新的 UID 和 GID

SSSD 可以使用 AD 用户的 SID 在名为 ID 映射的过程中以算法生成 POSIX ID。ID 映射会在 AD 中的 SID 和 Linux 中的 ID 之间创建一个映射。

  • 当 SSSD 检测到新的 AD 域时,它会为这个新域分配一个可用的 ID 范围。
  • 当 AD 用户第一次登录到 SSSD 客户端机器时,SSSD 会在 SSSD 缓存中为用户创建一个条目,包括基于用户的 SID 和该域的 ID 范围的 UID。
  • 由于 AD 用户的 ID 是以一致的方式从同一 SID 生成的,所以用户在登录到任何 Red Hat Enterprise Linux 系统时都有相同的 UID 和 GID。

请参阅使用 SSSD 发现并加入 AD 域

注意

当所有客户端系统都使用 SSSD 将 SID 映射到 Linux ID 时,映射是一致的。如果有些客户端使用不同的软件,请选择以下之一:

  • 确定所有客户端都使用相同的映射算法。
  • 使用 AD 中定义的显式 POSIX 属性。

使用 AD 中定义的 POSIX 属性

AD 可以创建并存储 POSIX 属性,如 uidNumbergidNumberUNIXHomeDirectoryloginShell

当使用上述 ID 映射时,SSSD 会创建新的 UID 和 GID,这将覆盖 AD 中定义的值。要保留 AD 定义的值,必须在 SSSD 中禁用 ID 映射。

请参阅使用 Active Directory 中定义的 POSIX 属性连接到 AD

1.3.2. 使用 SSSD 发现并加入 AD 域

按照以下流程发现 AD 域,并使用 SSSD 将 RHEL 系统连接到那个域。

先决条件

  • 确保 AD 域控制器上的以下端口已打开,并可以被 RHEL 主机访问。

    表 1.1. 使用 SSSD 将 Linux 系统直接集成到 AD 所需的端口
    服务端口协议备注

    DNS

    53

    UDP 和 TCP

     

    LDAP

    389

    UDP 和 TCP

     

    Samba

    445

    UDP 和 TCP

    对于 AD 组策略对象 (GPO)

    Kerberos

    88

    UDP 和 TCP

     

    Kerberos

    464

    UDP 和 TCP

    kadmin 用来设置和更改密码

    LDAP 全局目录

    3268

    TCP

    如果使用了 id_provider = ad 选项

    NTP

    123

    UDP

    可选

  • 确保您为 DNS 使用 AD 域控制器服务器。
  • 验证两个系统中的系统时间已被同步。这样可确保 Kerberos 正常工作。

流程

  1. 安装以下软件包:

    # dnf install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
  2. 要显示特定域的信息,请运行 realm discover 并添加您要发现的域名称:

    # realm discover ad.example.com
    ad.example.com
      type: kerberos
      realm-name: AD.EXAMPLE.COM
      domain-name: ad.example.com
      configured: no
      server-software: active-directory
      client-software: sssd
      required-package: oddjob
      required-package: oddjob-mkhomedir
      required-package: sssd
      required-package: adcli
      required-package: samba-common

    realmd 系统使用 DNS SRV 查找自动查找这个域中的域控制器。

    注意

    realmd 系统可以发现 Active Directory 和 Identity Management 域。如果环境中存在这两个域,您可以使用 --server-software=active-directory 选项将发现结果限制为特定类型的服务器。

  3. 使用 realm join 命令配置本地 RHEL 系统。realmd 套件自动编辑所有必需的配置文件。例如,对于名为 ad.example.com 的域:

    # realm join ad.example.com

验证步骤

  • 显示 AD 用户详情,如管理员用户:

    # getent passwd administrator@ad.example.com
    administrator@ad.example.com:*:1450400500:1450400513:Administrator:/home/administrator@ad.example.com:/bin/bash

其他资源

  • 请参阅 realm(8) 手册页。
  • 请参阅 nmcli(1) 手册页。

1.3.3. 使用 Active Directory 中定义的 POSIX 属性连接到 AD

为获得最佳性能,请将 POSIX 属性发布到 AD 全局目录。如果全局目录中没有 POSIX 属性,SSSD 会直接连接到 LDAP 端口上的单个域控制器。

先决条件

  • 确保 RHEL 主机上的以下端口已为 AD 域控制器打开并可以被访问。

    表 1.2. 使用 SSSD 将 Linux 系统直接集成到 AD 所需的端口
    服务端口协议备注

    DNS

    53

    UDP 和 TCP

     

    LDAP

    389

    UDP 和 TCP

     

    Kerberos

    88

    UDP 和 TCP

     

    Kerberos

    464

    UDP 和 TCP

    kadmin 用来设置和更改密码

    LDAP 全局目录

    3268

    TCP

    如果使用了 id_provider = ad 选项

    NTP

    123

    UDP

    可选

  • 确保您为 DNS 使用 AD 域控制器服务器。
  • 验证两个系统中的系统时间已被同步。这样可确保 Kerberos 正常工作。

流程

  1. 安装以下软件包:

    # dnf install realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
  2. 使用 realm join 命令及 --automatic-id-mapping=no 选项,配置本地 RHEL 系统并禁用 ID 映射。realmd 套件自动编辑所有必需的配置文件。例如,对于名为 ad.example.com 的域:

    # realm join --automatic-id-mapping=no ad.example.com
  3. 如果您已经加入某个域,可以在 SSSD 中手动禁用 ID 映射:

    1. 打开 /etc/sssd/sssd.conf 文件:
    2. 在 AD domain 部分中,添加 ldap_id_mapping = false 设置。
    3. 删除 SSSD 缓存:

      rm -f /var/lib/sss/db/*
    4. 重启 SSSD:

      systemctl restart sssd

SSSD 现在使用 AD 中的 POSIX 属性,而不是在本地创建它们。

注意

您必须在 AD 中的用户配置了相关的 POSIX 属性(uidNumber, gidNumber, unixHomeDirectory, 和 loginShell)。

验证步骤

  • 显示 AD 用户详情,如管理员用户:

    # getent passwd administrator@ad.example.com
    administrator@ad.example.com:*:10000:10000:Administrator:/home/Administrator:/bin/bash

其他资源

  • 有关 ID 映射和 ldap_id_mapping 参数的详情,请查看 sssd-ldap(8) man page。

1.3.4. 使用 SSSD 连接到不同 AD 林中的多个域

您可以使用 Active Directory (AD) 受管服务帐户 (MSA)从一个不同、直接没有信任的林访问 AD 域。

请参阅使用受管服务帐户访问 AD

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.