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

OpenLDAP密码策略(ppolicy)对passwd命令生效但对ldappasswd命令失效的问题求助

OpenLDAP密码策略(ppolicy)对passwd命令生效但对ldappasswd命令失效的问题求助

我已经折腾这个问题快一周了,实在摸不着头脑,特来求助!

目前我配置的OpenLDAP已经能让passwd命令正常工作,用户可以从客户端修改自己的LDAP密码,而且ppolicy密码策略 overlay 也能正常生效:

$ passwd
Current Password:
New password:
BAD PASSWORD: The password is shorter than 8 characters
New password:
BAD PASSWORD: The password is a palindrome
New password:
BAD PASSWORD: The password is the same as the old one
passwd: Have exhausted maximum number of retries for service
passwd: password unchanged

但是用ldappasswd命令修改密码时,情况就不对了:它允许设置单字符密码、回文字符串,但唯独会阻止使用历史密码:

$ ldappasswd -H ldap://**** -x -D "uid=test,ou=Users,dc=***,dc=***,dc=***" -W -A -S
Old password:
Re-enter old password:
New password:
Re-enter new password:
Enter LDAP Password:
$
# 这里输入"a"作为密码完全没问题(这明显不符合策略要求)
$ ldappasswd -H ldap://**** -x -D "uid=test,ou=Users,dc=***,dc=***,dc=***" -W -A -S
Old password:
Re-enter old password:
New password:
Re-enter new password:
Enter LDAP Password:
Result: Constraint violation (19)
Additional info: Password is in history of old passwords
$
# 输入之前用过的"password"就被阻止了,这部分是正常的

我理想的状态是**passwd和ldappasswd都严格遵循配置的密码策略**。

下面是我的slapd配置里的访问规则(路径:/etc/ldap/slapd.d/cn=config/olcDatabase={1}mdb.ldif):

...
# manager是根绑定DN,密码存在/etc/ldap.secret里
olcAccess: {0}to attrs=userPassword,shadowLastChange by self write by dn.base="uid=manager,ou=Users,dc=***,dc=***,dc=***" write by anonymous auth by * none
olcAccess: {1}to * by * read by dn.base="uid=manager,ou=Users,dc=***,dc=***,dc=***" write
...

我自己猜测:passwd命令可能是用根DN(manager)绑定的,因为一旦移除manager账户的写权限,passwd就完全用不了了,但ldappasswd却不受影响。

有没有大佬能帮我分析下问题出在哪,怎么让ldappasswd也严格执行密码策略呀?

备注:内容来源于stack exchange,提问作者zmehall

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 16:24:33