我在为 openLDAP 设置管理组时遇到问题。
我刚刚转到 olcconfig 并设置了以下 ldif:
dn: olcDatabase={1}mdb,cn=config
changetype: modify
add: olcAccess
olcAccess: {3}to dn.subtree="dc=mysite,dc=com"
by group(s)/groupOfNames/member="cn=admin,ou=group,dc=mysite,dc=com" manage
我尝试通过sudo ldapadd -D "cn=diradmin,dc=mysite,dc=com" -f admin.ldif -W -x
diradmin 为根 dn 来添加此项。当我执行此操作时,我得到:
modifying entry "olcDatabase={1}mdb,cn=config"
ldap_modify: Insufficient access (50)
我读过几个不同的教程,但不明白为什么会发生这种情况。有人能帮忙找出可能的原因吗(甚至指出一个好的教程!)。
谢谢。
- - - 编辑 - - -
我现在已经尝试过:sudo ldapadd -Y EXTERNAL -H ldapi:/// -f admin.ldif
以下是我的错误:
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
modifying entry "olcDatabase={1}mdb,cn=config"
ldap_modify: Insufficient access (50)
答案1
为了更新olcAccess
您的属性,dc=mysite,dc=com
您实际上需要cn=config
数据库的权限。
您尝试使用的根 DN 仅适用于更新数据库中的对象dc=mysite,dc=com
,它没有/不应该具有数据库的权限cn=config
。
我不知道您是如何生成配置的,但看起来您至少需要olcAccess: to * by dn.base="gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth" manage by * none
在olcDatabase={0}config,cn=config
对象上添加类似的东西。这样您就可以使用EXTERNAL
另一个答案中提到的身份验证来应用您原来的 LDIF 更改。
如果你没有配置允许你更新数据库的任何 ACL,cn=config
那么你可以尝试接受的答案这个问题编辑通常位于/etc/ldap/slapd.d
或下的数据库文件/etc/openldap/slapd.d
。
答案2
我不是任何方面的专家,但我认为这可能是您一开始设置配置时出现的问题,这需要更多的配置数据来进行故障排除,但如果您想应用 LDIF,则可以使用 EXTERNAL 身份验证技巧绕过 bind-dn:
ldapadd -Y EXTERNAL -H ldapi:/// -f <filename>
然后阅读这个旧线程,看看它是否能帮助您解决问题:https://www.openldap.org/lists/openldap-technical/201306/msg00220.html