我必须创建一个开发服务器来镜像客户的 LDAP 安装。客户给了我一个以以下内容开头的 db.ldif 文件
cn: cn=Subschema
ldapSyntaxes: ( 1.3.6.1.1.16.1 DESC 'UUID' )
ldapSyntaxes: ( 1.3.6.1.1.1.0.1 DESC 'RFC2307 Boot Parameter' )
ldapSyntaxes: ( 1.3.6.1.1.1.0.0 DESC 'RFC2307 NIS Netgroup Triple' )
ldapSyntaxes: ( 1.3.6.1.4.1.1466.115.121.1.52 DESC 'Telex Number' )
ldapSyntaxes: ( 1.3.6.1.4.1.1466.115.121.1.50 DESC 'Telephone Number' )
ldapSyntaxes: ( 1.3.6.1.4.1.1466.115.121.1.49 DESC 'Supported Algorithm' X-BINAR
Y-TRANSFER-REQUIRED 'TRUE' X-NOT-HUMAN-READABLE 'TRUE' )
ldapSyntaxes: ( 1.3.6.1.4.1.1466.115.121.1.45 DESC 'SubtreeSpecification' )
ldapSyntaxes: ( 1.3.6.1.4.1.1466.115.121.1.11 DESC 'Country String' )
ldapSyntaxes: ( 1.3.6.1.4.1.1466.115.121.1.44 DESC 'Printable String' )
and so on
但我不知道如何加载它:
ldapadd -Y EXTERNAL -H ldapi:// -f /ldap/db.ldif
SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=Subschema"
ldap_add: Already exists (68)
additional info: subschema subentry already exists
slapadd -l /ldap/db.ldif
57aca988 str2entry: attributeType ldapSyntaxes #0: no validator for syntax 1.3.6.1.4.1.1466.115.121.1.54
slapadd: could not parse entry (line=1)
_#################### 100.00% eta none elapsed none fast!
Closing DB..
我的安装:
slapd -V
@(#) $OpenLDAP: slapd (Ubuntu) (Jun 24 2016 15:39:52) $
buildd@lgw01-24:/build/openldap-MhQj18/openldap-2.4.31/debian/build/servers/slapd
我尝试将 EOL 更改为 Linux 版本,以及其他文件结构内容。我该如何完成我的工作?
答案1
这看起来像是 LDIF 文件(至少部分)包含来自 LDAP 服务器的根 DSE 的转储,是通过使用"cn=Subschema"
类似以下内容的基础获得的:
ldapsearch -Y EXTERNAL -H ldapi:/// -s base -b 'cn=Subschema' +
因此,要回答您的问题,您不能ldapadd
这样做,因为cn=Subschema
错误表明它已经存在。它是服务器本身维护的特殊对象之一;您可能不想要或不需要转储它。
您实际上只需要转储部分/全部cn=config
数据库;至少是正在使用的架构,然后转储主数据库本身。拥有更全面的数据库转储cn=config
不会有什么坏处,因为其中会包含 ACL 定义、覆盖等可能很重要的内容。