1.3. 直接连接到 AD
系统安全服务守护进程(SSSD)是推荐的组件,用于将 Red Hat Enterprise Linux (RHEL)系统与活动目录(AD)连接。您可以使用 POSIX ID 映射( SSSD 的默认设置)或者使用 AD 中定义的 POSIX 属性直接与 AD 集成。
在将您的系统加入 AD 前,请按照红帽知识库解决方案 Basic Prechecks Steps 中的步骤正确配置您的系统:RHEL 使用 'adcli'、'realm' 和 'net' 命令与活动目录结合。
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 正常工作。
流程
安装以下软件包:
# yum 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-common
realmd
系统使用 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
其它资源
-
您系统上的
realm (8)
和nmcli (1)
手册页
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 正常工作。
流程
安装以下软件包:
# yum install realmd oddjob oddjob-mkhomedir sssd adcli krb5-workstation
使用
realm join
命令和--automatic-id-mapping=no
选项,配置本地 RHEL 系统并禁用 POSIX ID 映射。realmd
套件自动编辑所有必要的配置文件。例如,对于名为ad.example.com
的域:# realm join --automatic-id-mapping=no ad.example.com
如果您已经加入某个域,您可以在 SSSD 中手动禁用 POSIX ID 映射:
-
打开
/etc/sssd/sssd.conf
文件: -
在 AD 域部分中,添加
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
其它资源
-
系统中的
sssd-ldap (8)
手册页
1.3.4. 使用 SSSD 连接到不同 AD 林中的多个域
您可以使用 Active Directory(AD)Managed Service Account(MSA)从不同的林访问 AD 域,其中它们之间没有信任。