访问权限不足,无法使用外部SASL身份validation编辑OpenLDAP cn = config

我想添加一个架构到我已经inheritance的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) 

关于相同外部SASLauthentication问题的邮件列表的讨论使我相信我需要“将SASL EXTERNAL标识映射到cn=config rootdn”。 我将如何做到这一点?

在试图解决这个问题的时候,我创build了一个类似的虚拟机,并安装了Ubuntu回购版的slapd。 外部SASL请求像上面那样工作。 我试图比较两个系统之间的cn=config设置,但未能确定任何明显的线索来执行此任务。 生产数据库最初是在Gentoo上运行的。 我将它迁移到了Ubuntu,并愉快地编辑帐户并使用它。 但是,我一直无法修改configuration数据库,因为在迁移过程中转换为cn=config格式。

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

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

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

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

如果没有,你可以这样做:

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

但是你应该在那个文件里修改CRC32