LDAP用户无法使用passwd命令更改其密码

LDAP用户无法使用passwd命令更改其密码,ldap,passwd,Ldap,Passwd,我有一个基本的LDAP设置,没有配置SSL。用户可以登录,但不能使用passwd命令更改密码。我浏览了很多博客,但运气不好。我已禁用selinux和iptables 在此方面的任何帮助都将不胜感激 详情如下: 操作系统:CentOS6.5 LDAP版本:openldap-servers-2.4.23-34.el6_5.1.x86_64 客户端版本:openldap-clients-2.4.23-34.el6_5.1.x86_64 尝试更改密码时终端的输出: [servername ~]$ p

我有一个基本的LDAP设置,没有配置SSL。用户可以登录,但不能使用passwd命令更改密码。我浏览了很多博客,但运气不好。我已禁用selinux和iptables

在此方面的任何帮助都将不胜感激

详情如下:

  • 操作系统:CentOS6.5
  • LDAP版本:openldap-servers-2.4.23-34.el6_5.1.x86_64
  • 客户端版本:openldap-clients-2.4.23-34.el6_5.1.x86_64
尝试更改密码时终端的输出:

[servername ~]$ passwd
Changing password for user dkrishna.
Enter login(LDAP) password:
New password:
Retype new password:
LDAP password information update failed: Insufficient access
passwd: Authentication token manipulation error
下面是日志

==>/var/log/secure/var/log/messages我找到了解决方案:

在文件末尾添加以下两行:
oclDatabase\=\{2\}bdb.ldif

olcAccess: {0}to attrs=userPassword by self write by dn.base="cn=Manager,dc=domain,dc=com" write by anonymous auth by * none

olcAccess: {1}to * by dn.base="cn=Manager,dc=domain,dc=com" write by self write by * read

bye

在配置OCL数据库时,slapd.conf似乎已被弃用

请遵守《OCL配置指南》中的以下代码段:
“从您运行转换时起,slapd.conf文件是多余的。加载slapd时,会查找配置目录(默认slapd.d)并从那里读取其配置文件,并初始化OLC(cn=config)DIT。如果找不到slapd.d目录,则slapd会查找slapd.conf。”

非常感谢您的回复。工作得很有魅力!!尝试在slapd.conf文件上放置相同的规则并重新启动服务,但无效。但直接放在oclDatabase\={2}bdb.ldif文件中的相同规则有效。OCL=?Oracle类库,用于C++,Oracle数据库接口。
Oct  8 09:31:42  passwd: pam_ldap: ldap_modify_s Insufficient access
database config
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage
        by * none

database monitor
access to *
        by dn.exact="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" read
        by dn.exact="cn=admin,dc=tibbr,dc=com" read
        by * none

access to attrs=userPassword
        by self write
        by anonymous auth
        by users none

access to * by * read
olcAccess: {0}to attrs=userPassword by self write by dn.base="cn=Manager,dc=domain,dc=com" write by anonymous auth by * none

olcAccess: {1}to * by dn.base="cn=Manager,dc=domain,dc=com" write by self write by * read