如何解决OPEN LDAP中的LDAP错误代码19:pwdFailureTime不允许用户修改
解决LDAP错误码19:pwdFailureTime不允许用户修改的问题
错误码19属于LDAP的约束违反(constraint violation),核心问题是pwdFailureTime是由LDAP服务器密码策略模块自动维护的属性,普通操作账号甚至部分管理员没有直接修改它的权限——你之前只修改pwdAccountLockedTime,但没处理权限或关联的策略配置,所以报错依旧。
以下是具体解决步骤:
确认操作账号的权限
检查你用来解锁账号的LDAP账号是否拥有pwdFailureTime、pwdAccountLockedTime这两个属性的写权限。在Apache Directory Studio中,查看目标用户条目的ACLs(访问控制列表),确保操作账号被允许对这两个属性执行修改/删除操作。通过标准解锁流程操作,而非手动改属性
多数LDAP服务器(比如Apache Directory Server、带ppolicy插件的OpenLDAP)都有内置的账号解锁逻辑,正确操作方式:- 在Apache Directory Studio中找到被锁定的用户条目,右键选择「Modify Entry」
- 添加修改项:选中
pwdAccountLockedTime属性,操作类型选「Delete」,提交修改 - 部分服务器会自动清除
pwdFailureTime,如果无法手动删除该属性,不用强行操作——服务器会在解锁后重置失败时间记录
检查LDAP服务器的密码策略配置
登录LDAP服务器管理后台或查看配置文件,确认密码策略是否限制了pwdFailureTime的修改权限:- 比如OpenLDAP的
ppolicy模块中,pwdAllowUserChange是否仅允许修改密码,禁止修改失败时间类属性 - 确保策略没有限制管理员账号对这些属性的操作权限
- 比如OpenLDAP的
命令行工具验证(可选)
用ldapmodify工具执行解锁操作(替换占位符为你的实际信息):
创建unlock.ldif文件:dn: uid=lockeduser,ou=users,dc=example,dc=com changetype: modify delete: pwdAccountLockedTime - delete: pwdFailureTime执行命令:
ldapmodify -x -D cn=admin,dc=example,dc=com -W -f unlock.ldif如果执行时提示
pwdFailureTime无法删除,说明服务器策略限制,只需保留删除pwdAccountLockedTime的命令即可。
内容的提问来源于stack exchange,提问作者Premchand Singh
相关产品推荐
相关产品推荐

