我们创建了一个主/从环境,其中一个 ldap 服务器定期复制另一个。所有条目均已正确复制,但未复制属性“userPass”。我们假设这是一个 ACL 问题,所以在主控端我们添加了
dn: olcDatabase={1}hdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {3}to attrs=userPassword by dn.base="cn=syncprov,dc=thedomain,dc=com" read
但 userPass 仍然丢失。
要逐步调试,这将很有帮助
是否有工具可以帮助我检查 ACL 问题?所以我可以冒充用户并检查属性?
服务器端的日志记录级别会显示 ACL 问题吗?
每当我们在从属端尝试 ldapmodify 更改时,它们都会被“影子上下文”拒绝,这很合乎逻辑,但是我们如何进行更改呢?我们是否必须从复制中排除 cn=config
既然从机端的任何更改都被拒绝了,那么我们如何完全停止复制模式呢?
您现在可以通过使用复制用户的凭据登录并确认
userPassword
在查询其他用户对象时显示该凭据来简单地检查 ACL 是否正确。例如用一个简单的
ldapsearch -D "cn=syncprov,dc=thedomain,dc=com" -w secret -p 389 -h server.example.com "cn=Heiner"
如果 ACL 正确,您应该能够看到 userPassword。
修复 ACL 不会自动开始将缺少的 userPassword 属性复制到您的从站。
(更改后的 ACL 不会修改原始用户帐户对象,尽管 cn=syncprov 现在可以在主服务器上看到一个额外的属性,这不是“新”属性,该帐户保持不变。而且由于复制只同步具有已更新没有任何反应。)
您将需要再次完全初始化从站,这次使用userPasswords。