目的:使用 LDAP 对 CentOS7 进行身份验证
问题
1)无法找到用户
calling ldap_search_ext with
[(&(uid=bla)(objectclass=posixAccount)(uid=*)(&(uidNumber=*)(!(uidNumber=0))))][dc=my-domain,dc=com]
2)未找到 posixAccount objectClass
问题
- 如何添加 objectClass
posixAccount
? - 如果找不到此 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)无法添加posixAccount
objectClass
答案1
您实际上并没有说明您的 LDAP 服务器是什么,或者您的 LDAP 目录中的用户是什么样的,但我会尽力回答。
目前,SSSD 仅支持 POSIX 帐户。这意味着服务器端的用户对象必须具有名称和数字 ID,或者数字 ID 必须从 Windows SID 推断出来。
实际的 objectClass 并不重要。您只需使用服务器使用的 objectClass 和包含 ID 的属性来配置 sssd.conf。请参阅了解man sssd-ldap
更多详细信息,但您可能感兴趣的两个配置选项是ldap_user_uid_number
和ldap_user_object_class
。
如果服务器是 MSAD,则理想情况下应该使用id_provider=ad
将 SID 映射到 ID 的算法。