Ldap 修复系统日志中的多个slap\u全局\u控件:无法识别的控件

Ldap 修复系统日志中的多个slap\u全局\u控件:无法识别的控件,ldap,slapd,Ldap,Slapd,在使用LDAP进行用户身份验证的debian 8服务器上(安装了slapd、libpam ldapd和nslcd),每次系统需要在LDAP中查找用户信息时(如键入id[用户名],或设置文件夹权限等),我都会在syslog中多次收到以下消息 此控件显然是deref控件。我找不到关于它的任何信息,除了它在多个服务器上存储LDAP数据库时很有用。在我的机器上从来都不是这样。我从来没有在任何地方有意识地激活过控制 这使得系统在某些情况下非常缓慢,例如,当用户导入脚本正在运行并导入大量用户时 当用户导入运

在使用LDAP进行用户身份验证的debian 8服务器上(安装了slapd、libpam ldapd和nslcd),每次系统需要在LDAP中查找用户信息时(如键入id[用户名],或设置文件夹权限等),我都会在syslog中多次收到以下消息

此控件显然是deref控件。我找不到关于它的任何信息,除了它在多个服务器上存储LDAP数据库时很有用。在我的机器上从来都不是这样。我从来没有在任何地方有意识地激活过控制

这使得系统在某些情况下非常缓慢,例如,当用户导入脚本正在运行并导入大量用户时

当用户导入运行时,此消息每秒可能出现大约100次。当在终端中只输入一次“id[username]”时,此消息在syslog中出现大约10次

进一步调查显示,nslcd可能与这种行为有关。在调试模式下运行nslcd时,可以看到以下选项用于连接LDAP服务器:

nslcd: [e8944a] <group=3000> DEBUG: ldap_initialize(ldapi:///localhost)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_rebind_proc()
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [e8944a] <group=3000> DEBUG: ldap_simple_bind_s(NULL,NULL) (uri="ldapi:///localhost")
nslcd:[e8944a]调试:ldap\U初始化(ldapi:///localhost) nslcd:[e8944a]调试:ldap\u set\u rebind\u proc() nslcd:[e8944a]调试:ldap_设置_选项(ldap_选项_协议_版本,3) nslcd:[e8944a]调试:ldap\u设置\u选项(ldap\u选项\u删除,0) nslcd:[e8944a]调试:ldap\u设置\u选项(ldap\u选项\u时间限制,0) nslcd:[e8944a]调试:ldap\u设置\u选项(ldap\u选项\u超时,0) nslcd:[e8944a]调试:ldap\u设置\u选项(ldap\u选项\u网络\u超时,0) nslcd:[e8944a]调试:ldap_设置_选项(ldap_选择_引用,ldap_选择_打开) nslcd:[e8944a]调试:ldap设置选项(ldap选择重新启动,ldap选择打开) nslcd:[e8944a]调试:ldap\u简单\u绑定(NULL,NULL)(uri=”ldapi:///localhost") 所以这里似乎禁用了DEREF,但是我的slapd配置根本没有关于DEREF的信息,也许这就是导致问题的原因

如何避免有关无法识别控件的多条消息

ldap\u set\u选项(ldap\u OPT\u DEREF,0)

这是处理搜索操作期间的一个选项。这是好的,它被禁用(默认情况下)。但这与此无关

正如您已经发现的,“1.3.6.1.4.1.4203.666.5.16”是所谓的OID。此控件可在搜索请求中使用,以允许服务器从搜索找到的条目引用的条目返回数据

根据您的数据,在数据库中启用覆盖slapo deref有助于加快速度,但会导致数据传输多次(例如,如果用户是多个组的成员)

似乎这只能在编译nss pam ldapd(又称nslcd)时关闭

但这不是你的主要表现问题。您应该考虑使用NSCD(名称服务缓存恶魔)。否则,对nslcd的每个NSS请求将导致远程发送LDAP搜索请求


您也可以考虑使用SSSD,因为它具有内部缓存体系结构,其优点和缺点。YMMV.

导入ppolicy.schema没有帮助,消息在syslog中以相同的速率出现。
nslcd: [e8944a] <group=3000> DEBUG: ldap_initialize(ldapi:///localhost)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_rebind_proc()
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_PROTOCOL_VERSION,3)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_DEREF,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_TIMELIMIT,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_TIMEOUT,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_NETWORK_TIMEOUT,0)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_REFERRALS,LDAP_OPT_ON)
nslcd: [e8944a] <group=3000> DEBUG: ldap_set_option(LDAP_OPT_RESTART,LDAP_OPT_ON)
nslcd: [e8944a] <group=3000> DEBUG: ldap_simple_bind_s(NULL,NULL) (uri="ldapi:///localhost")