1.3. 直接连接到 AD
系统安全服务守护进程(SSSD)是推荐的组件,来将 Red Hat Enterprise Linux (RHEL)系统与活动目录(AD)相连。您可以使用 POSIX ID 映射( SSSD 的默认设置)或者使用 AD 中定义的 POSIX 属性直接与 AD 集成。
在将您的系统加入 AD 之前,请按照红帽知识库解决方案 基本的预检查步骤:使用 'adcli'、'realm' 和 'net' 命令将 RHEL 与活动目录相连 中的步骤正确配置您的系统。
1.3.1. 用于与 AD 集成的选项:使用 POSIX 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 提供了选项,来使用 POSIX ID 映射或 AD 中的 POSIX 属性与 AD 集成。默认为使用 POSIX ID 映射。
1.3.2. 使用 POSIX ID 映射连接到 AD 复制链接链接已复制到粘贴板!
SSSD 使用 AD 用户的 SID ,在名为 POSIX ID 映射的过程中通过算法生成 POSIX ID。POSIX ID 映射在 AD 中的 SID 和 Linux 上的 ID 之间创建一个关联。
- 当 SSSD 检测到新的 AD 域时,它会为这个新域分配一个可用的 ID 范围。
- 当 AD 用户第一次登录到 SSSD 客户端机器时,SSSD 会在 SSSD 缓存中为用户创建一个条目,包括基于用户的 SID 和该域的 ID 范围的 UID。
- 由于 AD 用户的 ID 是以一致的方式从同一 SID 生成的,所以在登录到任何 RHEL 系统时,用户具有相同的 UID 和 GID。
当所有客户端系统都使用 SSSD 将 SID 映射到 Linux ID 时,映射是一致的。如果有些客户端使用不同的软件,请选择以下之一:
- 确定所有客户端都使用相同的映射算法。
- 使用 AD 中定义的显式 POSIX 属性。
如需更多信息,请参阅 sssd-ad 手册页中有关 ID 映射的 部分。
1.3.2.1. 使用 SSSD 发现并加入 AD 域 复制链接链接已复制到粘贴板!
按照以下流程发现 AD 域,并使用 SSSD 将 RHEL 系统连接到那个域。
先决条件
确保所需的端口已打开:
- 确保您为 DNS 使用 AD 域控制器服务器。
- 验证两个系统中的系统时间已被同步。这样可确保 Kerberos 正常工作。
流程
安装以下软件包:
# dnf install samba-common-tools realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation要显示特定域的信息,请运行
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-commonrealmd系统使用 DNS SRV 查找自动查找这个域中的域控制器。注意realmd系统可以发现 Active Directory 和 Identity Management 域。如果环境中存在这两个域,您可以使用--server-software=active-directory选项将发现结果限制为特定类型的服务器。使用
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
1.3.3. 使用 Active Directory 中定义的 POSIX 属性连接到 AD 复制链接链接已复制到粘贴板!
AD 可以创建并存储 POSIX 属性,如 uidNumber、gidNumber、UNIXHomeDirectory 或 loginShell。
使用 POSIX ID 映射时,SSSD 会创建新的 UID 和 GID,这将覆盖 AD 中定义的值。要保留 AD 定义的值,您必须在 SSSD 中禁用 POSIX ID 映射。
为获得最佳性能,请将 POSIX 属性发布到 AD 全局目录。如果全局目录中没有 POSIX 属性,SSSD 会直接连接到 LDAP 端口上的单个域控制器。
先决条件
确保所需的端口已打开:
- 确保您为 DNS 使用 AD 域控制器服务器。
- 验证两个系统中的系统时间已被同步。这样可确保 Kerberos 正常工作。
流程
安装以下软件包:
# dnf install realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation使用
realm join命令和--automatic-id-mapping=no选项,配置禁用了 POSIX ID 映射的本地 RHEL 系统。realmd套件自动编辑所有必需的配置文件。例如,对于名为ad.example.com的域:# realm join --automatic-id-mapping=no ad.example.com如果您已经加入一个域,您可以在 SSSD 中手动禁用 POSIX ID 映射:
-
打开
/etc/sssd/sssd.conf文件: -
在 AD domain 部分中,添加
ldap_id_mapping = false设置。 删除 SSSD 缓存:
rm -f /var/lib/sss/db/*重启 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
1.3.4. 使用 SSSD 连接到不同 AD 林中的多个域 复制链接链接已复制到粘贴板!
您可以使用 Active Directory (AD) 受管服务帐户 (MSA)从一个不同、直接没有信任的林访问 AD 域。
请参阅 使用受管服务帐户访问 AD。