我想向我继承的 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 具有足够的(write
,manage
)权限,则最好尝试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
该文件。