我正在从另一台服务器导入 OpenLDAP 数据库,导入时,一些用户出现一些错误,问题是不是mozillaAbPersonAlpha
有效的objectClass
。
#!ERROR [LDAP Error Code 21 - objectClass: value #3 invalid per syntax]
...
dn: uid=somedude,cn=Whatever,dc=test,dc=com
sn: Some Dude
givenName: Dude
mail: [email protected]
mozillaCustom1: Engineering
l: Somewhere
objectClass: inetOrgPerson
objectClass: top
objectClass: person
objectClass: mozillaAbPersonAlpha
uid: somedude
cn: Some Dude
据我所知,我安装的 OpenLDAP 似乎缺少一个架构mozillaABPersonAlpha。
但是我该如何安装这个模式呢?
编辑:服务器正在使用新的配置后端,因此没有任何slapd.conf
文件。相反,有一个/etc/slapd.d/
目录,其目录名称很奇怪(例如/etc/slapd.d/cn=config/
)。
在这种情况下我该如何添加新模式?
答案1
我回答自己的问题是因为我想知道如何在使用新slapd.d/dynamic/cn=config
后端时解决问题,而且我不想回到原来的slapd.conf
方法。(据我所知,几乎没有人这样做)
当我尝试使用“ldapadd”添加新模式时,我总是收到以下错误:
ldapadd -H ldap://whatever.test.com -D "cn=admin,dc=whatever,dc=test,dc=com" -x -W -f mozillaabpersonalpha.ldif
ldap_add: Insufficient access (50)
因此,BindDN
我使用的 没有该权限。我需要设置 ACL 或使用 进行rootDN
该操作。
我不知道为什么,但在配置slapd
debian 软件包时,它允许我为我的 DIT 创建管理员帐户,但它没有提到rootDN
。经过一番浏览,我发现了这个博客rootDN
这解释了如何在使用模式时设置密码cn=config
。
因此,编辑该文件/etc/ldap/slapd.d/cn=config/olcDatabase\=\{0\}config.ldif
并添加以下内容:
olcRootDN: cn=admin,cn=config
olcRootPW: mypassword
我必须重新启动 slapd 才能使更改生效(这应该不是必需的,但是……)。为了测试它,我运行了以下命令:
ldapwhoami -H ldap://whatever.test.com -D "cn=admin,cn=config" -x -w mypassword
成功了!下一步是mozillaAbPersonAlpha
使用以下命令加载 ldif 格式的架构ldapadd
:
ldapadd -H ldap://whatever.test.com -D "cn=admin,cn=config" -x -w mypassword -f mozillaabpersonalpha.ldif
响应成功
adding new entry "cn=mozillaabpersonalpha,cn=schema,cn=config"
最后,现在可以添加一个依赖于mozillaABPersonAlpha
架构的用户。例如,该文件newuser.ldif
包含以下内容:
dn: uid=somedude,cn=Whatever,dc=test,dc=com
sn: Some Dude
givenName: Dude
mail: [email protected]
mozillaCustom1: Engineering
l: Somewhere
objectClass: inetOrgPerson
objectClass: top
objectClass: person
objectClass: mozillaAbPersonAlpha
uid: somedude
cn: Some Dude
现在将其添加到新目录(不使用帐户rootDN
)就可以了:
ldapadd -H ldap://whatever.test.com -D "cn=admin,dc=whatever,dc=test,dc=com" -x -W -f usertest.ldif
Enter LDAP Password:
adding new entry "uid=somedude,cn=SomeGroup,cn=whatever,dc=test,dc=com
答案2
答案3
在您的 slapd.conf(5) 文件中将会有(一些?)“include”语句:
include /etc/openldap/schema/core.schema
您需要下载架构文件并将其与已存在的其余文件一起放入 schema/ 目录中(将所有内容放在一个位置更简单),然后更改配置以包含它。然后重新启动 OpenLDAP。