如何在LDAP中配置正确的访问控制指令解决普通用户绑定失败问题
问题根因排查
你现有配置里olcDatabase={1}mdb,cn=config下的默认规则olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none已经允许匿名身份做绑定认证,正常情况下普通用户可以正常绑定,先排查两个基础问题:
- 用Apache Directory Studio给用户添加密码时,是否选择了LDAP兼容的哈希格式?如果选了服务端不支持的格式会直接导致绑定失败
- 绑定操作时填写的用户完整DN是否正确?比如用户在
ou=student,dc=domain,dc=fr下,完整DN应为uid=你的用户名,ou=student,dc=domain,dc=fr,不能仅填写uid字段
权限调整操作步骤
确认上述两点无问题后,可按以下步骤调整访问权限:
1. 编写修改权限的LDIF文件
新建名为modify-olcaccess.ldif的文件,写入以下内容:
dn: olcDatabase={1}mdb,cn=config changetype: modify replace: olcAccess olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * read olcAccess: {1}to attrs=shadowLastChange by self write by * read olcAccess: {2}to * by * read
提示:以上配置仅为调试阶段临时放开权限,学习测试完成后务必把第一条规则末尾的
by * read改回by * none,避免密码属性泄露风险
2. 执行ldapmodify应用配置
如果是在LDAP服务端本地操作,用root权限执行以下命令即可:
ldapmodify -Y EXTERNAL -H ldapi:/// -f modify-olcaccess.ldif
如果用管理员账号远程操作,执行以下命令:
ldapmodify -D "cn=admin,dc=domain,dc=fr" -w 你的管理员密码 -f modify-olcaccess.ldif
3. 验证配置生效
执行以下命令查看当前权限规则是否正确加载:
ldapsearch -Y EXTERNAL -H ldapi:/// -b olcDatabase={1}mdb,cn=config olcAccess
确认配置无误后重新尝试普通用户绑定即可。
补充注意
你粘贴的配置里olcRoot后出现了异常换行,正常配置应为olcRootDN: cn=admin,dc=domain,dc=fr,如果你的真实配置中确实存在该格式错误,需要先修正后再做其他操作,否则管理员账号权限会异常。
内容的提问来源于stack exchange,提问作者Wargal
相关产品推荐
相关产品推荐

