第 12 章 将身份验证从 nslcd 迁移到 SSSD
12.1. 将 RHEL 客户端从 nslcd 迁移到 SSSD
由于 nss-pam-ldapd
软件包已从 RHEL 中删除,因此红帽建议迁移到 SSSD
及其 ldap
提供程序,它取代了 nslcd
服务的功能。以下流程描述了如何配置 SSSD
,以便在之前配置为使用 nss-pam-ldap
身份验证配置的客户端上来验证 LDAP 用户。
先决条件
- 您的 RHEL 客户端是 RHEL 8 或 RHEL 9。
-
您之前已将 RHEL 客户端配置为使用
nslcd
服务认证到 LDAP 目录服务器。 - LDAP 目录服务使用 RFC-2307 中定义的模式。
流程
备份当前的身份验证配置:
# authselect apply-changes -b --backup=ldap-configuration-backup
安装
SSSD
软件包:# yum install sssd-ldap sssd-ad sssd-client \ sssd-common sssd-common-pac \ sssd-krb5 sssd-krb5-common
停止并禁用
nslcd
和nscd
服务:# systemctl stop nslcd nscd # systemctl disable nslcd nscd
使用
SSSD
配置身份验证:# authselect select sssd with-mkhomedir --force
为
SSSD
配置文件设置必要的所有权和权限:# chown root:root /etc/sssd/sssd.conf # chmod 600 /etc/sssd/sssd.conf
-
打开
/etc/sssd/sssd.conf
文件进行编辑。 输入以下配置,将
example.com
和dc=example,dc=com
等值替换为适合您环境的值:[sssd] config_file_version = 2 services = nss, pam domains = EXAMPLE.COM debug_level = 6 [domain/EXAMPLE.COM] id_provider = ldap auth_provider = ldap ldap_uri = ldap://server.example.com/ ldap_search_base = dc=example,dc=com ldap_default_bind_dn = CN=binddn,DC=example,DC=com ldap_default_authtok_type = password ldap_default_authtok = <bind_account_password> cache_credentials = True
注意您可能需要在
SSSD
配置中指定 LDAP 模式:如果您在目录服务器中使用 RFC-2307bis 模式,请在
[domain/EXAMPLE.COM]
部分中添加以下行:ldap_schema = rfc2307bis
如果您使用微软目录服务器服务器,请在
[domain/EXAMPLE.COM]
部分中添加以下行,以启用基于 LDAP 的身份验证:ldap_schema = ad
如果您需要 Kerberos 身份验证,红帽建议使用
realm
命令将 RHEL 客户端加入到 AD 域中,该命令会自动配置SSSD
服务。启用并启动
SSSD
服务:# systemctl enable sssd # systemctl start sssd
验证
确保您可以检索有关 LDAP 用户的信息:
# id ldapuser uid=100424(ldapuser) gid=100424(ldapuser) groups=100424(ldapuser) # getent passwd ldapuser ldapuser:*: 100424: 100424:User, LDAP:/home/ldapuser:/bin/bash
确保您可以以 LDAP 用户身份登录:
# ssh -l ldapuser localhost ldapuser@localhost's password: Last login: Tue Dec 07 19:34:35 2021 from localhost -sh-4.2$
如果您需要使用 nslcd
和 nscd
恢复初始的 LDAP 配置,请使用以下命令:
# authselect backup-restore=ldap-configuration-backup # systemctl stop sssd && systemctl disable sssd # systemctl start nslcd nscd # systemctl enable nslcd nscd