将OpenLDAP架构转换为LDIF

时间:2020-03-21 11:49:55  来源:igfitidea点击:

我们正在将OpenLDAP服务器从Debian Squeeze迁移到Ubuntu 14.04.

Debian服务器使用slapd.conf,而Ubuntu 14.04使用slap.d。

软件

本文使用的软件:

  • Ubuntu 14.04(也在Debian Wheezy上进行了测试)
  • OpenLDAP 2.4.31

步骤

Ubuntu 14.04上的默认OpenLDAP安装随附以下模式:

# ldapsearch -LLLQY EXTERNAL -H ldapi:///-b cn=schema,cn=config "(objectClass=olcSchemaConfig)" dn
dn: cn=schema,cn=config
dn: cn={0}core,cn=schema,cn=config
dn: cn={1}cosine,cn=schema,cn=config
dn: cn={2}nis,cn=schema,cn=config
dn: cn={3}inetorgperson,cn=schema,cn=config

我们在Debian服务器上以.schema格式提供了一些自定义模式(邮件和samba),我们需要将其转换为.ldif。

创建一个转换文件:

# cat > ./schema_conv.conf << EOL
include /etc/ldap/schema/core.schema
include /etc/ldap/schema/cosine.schema
include /etc/ldap/schema/inetorgperson.schema
include /etc/ldap/schema/nis.schema
include /etc/ldap/schema/misc.schema
include /etc/ldap/schema/mail.schema
include /etc/ldap/schema/samba.schema
EOL

将模式文件转换为LDIF:

# mkdir /tmp/ldif
# slaptest -f ./schema_conv.conf -F /tmp/ldif/

打开“ /tmp/ldif/cn=config/cn=schema/cn={5}mail.ldif”文件,然后更改以下几行:

dn: cn={5}mail
objectClass: olcSchemaConfig
cn: {5}mail

至:

dn: cn=mail,cn=schema,cn=config
objectClass: olcSchemaConfig
cn: mail

同时删除底部的这些行:

structuralObjectClass: olcSchemaConfig
entryUUID: d53d1a8c-4261-1034-9085-738a9b3f3783
creatorsName: cn=config
createTimestamp: 20140206153742Z
entryCSN: 20140206153742.072733Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20140206153742Z

对samba LDIF文件执行相同的操作。

将文件复制到“/etc/ldap/schema”目录:

# cd /etc/ldap/schema
# cp /tmp/ldif/cn\=config/cn\=schema/cn\=\{5\}mail.ldif ./mail.ldif
# cp /tmp/ldif/cn\=config/cn\=schema/cn\=\{6\}samba.ldif ./samba.ldif

将新架构插入LDAP树:

# ldapadd -Q -Y EXTERNAL -H ldapi:///-f /etc/ldap/schema/misc.ldif
# ldapadd -Q -Y EXTERNAL -H ldapi:///-f /etc/ldap/schema/mail.ldif
# ldapadd -Q -Y EXTERNAL -H ldapi:///-f /etc/ldap/schema/samba.ldif

我们也可以通过以下方式进行操作:

# ldapadd -Q -Y EXTERNAL -H ldapi:////tmp/ldif_output/cn\=config/cn\=schema/cn\=\{5\}mail.ldif
# ldapadd -Q -Y EXTERNAL -H ldapi:////tmp/ldif_output/cn\=config/cn\=schema/cn\=\{6\}samba.ldif

确认:

# ls -1 /etc/ldap/slapd.d/cn\=config/cn\=schema
cn={0}core.ldif
cn={1}cosine.ldif
cn={2}nis.ldif
cn={3}inetorgperson.ldif
cn={4}misc.ldif
cn={5}mail.ldif
cn={6}samba.ldif