You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在sssd.conf中调整LDAP搜索过滤规则,移除uidNumber条件?

问题描述

我们计划通过SSSD实现LDAP认证,当前sssd.conf配置如下:

[sssd]
config_file_version = 2
services = nss, pam
domains = test.de

[domain/test.de]
id_provider = ldap
auth_provider = ldap
chpass_provider = ldap
enumerate = true
ldap_schema = rfc2307bis
ldap_uri = ldaps://192.168.7.1:636, ldaps://192.168.7.2:636
ldap_search_base = ou=users, o=data
ldap_user_search_base = ou=users, o=data
ldap_user_object_class = posixAccount
ldap_user_name = uid
ldap_tls_reqcert = never
cache_credentials = true
ldap_default_bind_dn = cn=ldap-clienttest,ou=sa,o=data
ldap_default_authtok_type = password
ldap_default_authtok = pawsd
debug_level = 9

调试用户搜索时发现,SSSD生成的LDAP查询语句包含uidNumber相关过滤条件:

[(&(uid=testuser)(objekctclass=posixAccount)(uid=*)(&(uidNumber=*)(!(uidNumber=0))))][ou=users, o=data]

该查询返回结果为0;但移除uidNumber条件后的查询语句:

(&(uid=testuser)(objekctclass=posixAccount)(uid=*))

可得到正确结果。请问如何避免使用uidNumber相关过滤条件?

解决方法

要让SSSD不再自动添加uidNumber相关的过滤条件,有两种直接的配置方式:

  • 自定义用户搜索过滤规则,覆盖SSSD默认生成的条件
  • 显式告知SSSD不检查uidNumber属性

方式一:自定义用户过滤规则

在[domain/test.de]配置段中添加ldap_user_filter参数,指定你需要的查询条件:

[domain/test.de]
# 保留原有配置...
ldap_user_filter = (&(uid=%u)(objectClass=posixAccount))
# 保留原有配置...

%u会被SSSD自动替换为当前查询的用户名,保证查询的动态性。

方式二:禁用uidNumber属性检查

同样在[domain/test.de]配置段中添加空值的ldap_user_uid_number参数:

[domain/test.de]
# 保留原有配置...
ldap_user_uid_number = 
# 保留原有配置...

这个配置会让SSSD跳过对uidNumber属性的校验,不再在查询中添加相关过滤条件。

生效步骤

修改配置后,需要重启SSSD服务使设置生效:

systemctl restart sssd

内容的提问来源于stack exchange,提问作者manuel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 06:42:35