实际上基于http://www.openldap.org/doc/admin24/slapdconf2.html说我可以将slapd.conf转换为cn = config格式。
为此,我尝试在服务器上创建slapd.conf文件,该文件具有像bellow一样的角色提供程序:
database bdb
suffix dc=mydomain,dc=org
rootdn cn=admin,dc=mydomain,dc=org
directory /var/lib/ldap/db
index objectclass,entryCSN,entryUUID eq
overlay syncprov
syncprov-checkpoint 100 10
syncprov-sessionlog 100
database config
rootpw mypassword
然后我尝试使用slaptest命令转换该文件,但是我收到了错误信息,如下面的信息:
$ slaptest -f slapd.conf -v
slapd.conf: line 2: <suffix> invalid DN 21 (Invalid syntax)
slaptest: bad configuration file
实际上我的后缀是绝对正确的,但为什么总是“无效的DN”
如何解决此错误?
答案 0 :(得分:10)
你现在可能已经解决了,但为了谷歌的利益......
您的后缀不绝对正确,因为它使用domainComponent属性“dc =”,但您尚未添加定义它的架构。因此,在完成之前,专有名称是未知的“无效DN”。
说明:在core.schema文件中(通常在/ etc / openldap / schemas /中,至少对于RedHat / CentOS RPMs),你可以找到它(还有更多需要的东西):
# RFC 1274 + RFC 2247
attributetype ( 0.9.2342.19200300.100.1.25
NAME ( 'dc' 'domainComponent' )
DESC 'RFC1274/2247: domain component'
EQUALITY caseIgnoreIA5Match
SUBSTR caseIgnoreIA5SubstringsMatch
SYNTAX 1.3.6.1.4.1.1466.115.121.1.26 SINGLE-VALUE )
通过将 this 添加到开头(假设文件位于此路径,根据需要进行调整),您需要执行此操作以将此架构文件包含到配置中:
include /etc/openldap/schema/core.schema
您可能还需要其他架构文件,但这将解决此错误。
答案 1 :(得分:1)
我的文件太少,我遇到了同样的问题,我添加了一些额外的细节并且可以正常工作
#slapd.conf
#schemas to use
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
#log
pidfile /var/run/openldap/slapd.pid
argsfile /var/run/openldap/slapd.args
########################################
##### dbm database definitions ####
########################################
database bdb
suffix dc=server,dc=com
rootdn cn=Manager,dc=server,dc=com
rootpw secret
#database directory
directory /var/lib/ldap
#end
根据this,您可能只会丢失pidfile位置,因为它在版本之间发生了变化,但最终还是会添加其余的。
答案 2 :(得分:0)
你应该在运行测试之前删除默认文件:
关于CentOS的例子:
rm -rf /etc/openldap/slapd.d/*
并且在数据库目录中,应该有一个DB_CONFIG文件
所有使用ldap-user-granted(chown ldap:ldap)
的档案在#schemas中包含此文件以使用
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/openldap.schema
include /etc/openldap/schema/dyngroup.schema