没有足够的权限使用外部 SASL 身份验证编辑 OpenLDAP cn=config

没有足够的权限使用外部 SASL 身份验证编辑 OpenLDAP cn=config

我想向我继承的 OpenLDAP 数据库添加一个模式。

ldapadd -vY EXTERNAL -H ldapi:/// -f schema.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
...
adding new entry "cn=openssh-lpk,cn=schema,cn=config"
ldap_add: Insufficient access (50)

关于同一邮件列表的讨论外部 SASL 身份验证问题让我相信我需要“将 SASL EXTERNAL 身份映射到 rootdn cn=config”。我该如何实现这一点?

在尝试解决此问题时,我创建了一个类似的 VM 并从 Ubuntu 存储库安装了 slapd。像上面这样的外部 SASL 请求开箱即用。我尝试比较cn=config两个系统之间的设置,但未能找到执行此任务的任何明显线索。生产数据库最初在 Gentoo 上运行。我将其迁移到 Ubuntu,并一直愉快地编辑帐户并使用它。但是,自从在cn=config迁移期间转换为格式以来,我一直无法修改配置数据库。

答案1

确保数据库有一个olcAccess属性{0}config/etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif)如下所示:

olcAccess: {0}to * 
 by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage 
 by * break

在 Ubuntu 的默认配置中,这是olcAccess配置数据库的唯一条目。如果您有更多条目,请确保我提到的条目是第一个(即{0}),其他条目紧随其后({1}等等{2})。否则,其他条目之一可能会匹配,分配太低的权限并停止遍历列表。

如果该列表中还有其他用户/DN 具有足够的(writemanage)权限,则最好尝试LDIF使用ldapmodify该用户/DN 的文件来修改 olcAccess。

如果失败了,你可以这样做:

sudo service slapd stop
sudo sensible-editor /etc/ldap/slapd.d/cn\=config/olcDatabase\=\{0\}config.ldif
sudo service slapd start

但之后您应该修复CRC32该文件。

相关内容