如果 posixAccount objectClass 不可用,如何使用 LDAP 向 CentOS7 进行身份验证?

如果 posixAccount objectClass 不可用,如何使用 LDAP 向 CentOS7 进行身份验证?

目的:使用 LDAP 对 CentOS7 进行身份验证

问题

1)无法找到用户

calling ldap_search_ext with 
[(&(uid=bla)(objectclass=posixAccount)(uid=*)(&(uidNumber=*)(!(uidNumber=0))))][dc=my-domain,dc=com]

2)未找到 posixAccount objectClass

问题

  1. 如何添加 objectClass posixAccount
  2. 如果找不到此 objectClass 类型,如何更改允许sssd此软件在 OpenLDAP 中查找用户并允许对 CentOS7 进行身份验证的查找?

综合的

1)sssd安装

2)在 CentOS7 上配置使用 sssd 的 ldap 身份验证

[root@controller ~]# authconfig --enablesssd --enablesssdauth --enablelocauthorize --update

3)启用 sssd 调试

/etc/sssd/sssd.conf

[domain/default]

autofs_provider = ldap
cache_credentials = True
krb5_realm = #
ldap_search_base = dc=my-domain,dc=com
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
ldap_uri = ldap://<ipaddress>/
ldap_tls_cacertdir = /etc/openldap/cacerts

debug_level = 9

4)使用 LDAP 测试登录

[root@controller ~]# id Manager
id: Manager: no such user

5)调试

/var/log/sssd/sssd_default.log

(Thu Jul  2 22:31:46 2015) [sssd[be[default]]] [sdap_search_user_next_base] (0x04
00): Searching for users with base [dc=my-domain,dc=com]
(Thu Jul  2 22:31:46 2015) [sssd[be[default]]] [sdap_print_server] (0x2000): Sear
ching <ipaddress>
(Thu Jul  2 22:31:46 2015) [sssd[be[default]]] [sdap_get_generic_ext_step] (0x040
0): calling ldap_search_ext with [(&(uid=bla)(objectclass=posixAccount)(uid=*)(&(
uidNumber=*)(!(uidNumber=0))))][dc=my-domain,dc=com].
(Thu Jul  2 22:31:46 2015) [sssd[be[default]]] [sdap_get_generic_ext_step] (0x100
0): Requesting attrs: [objectClass]

6)无法添加posixAccountobjectClass

在此处输入图片描述

答案1

您实际上并没有说明您的 LDAP 服务器是什么,或者您的 LDAP 目录中的用户是什么样的,但我会尽力回答。

目前,SSSD 仅支持 POSIX 帐户。这意味着服务器端的用户对象必须具有名称和数字 ID,或者数字 ID 必须从 Windows SID 推断出来。

实际的 objectClass 并不重要。您只需使用服务器使用的 objectClass 和包含 ID 的属性来配置 sssd.conf。请参阅了解man sssd-ldap更多详细信息,但您可能感兴趣的两个配置选项是ldap_user_uid_numberldap_user_object_class

如果服务器是 MSAD,则理想情况下应该使用id_provider=ad将 SID 映射到 ID 的算法。

相关内容