背景:
ldap数据库要同步,按照如下操作步骤:
1.导出:
使用slapcat,slapcat直接对数据库操作,
slapcat
2.将所需的条目取出,生成文件in.ldif
3.在目标机器上导入:
ldapadd -D 'cn=admin,dc=xxxx,dc=xxx' -x -f in.ldif -W
但是爆出如下问题:
additional info: structuralObjectClass: no user modification allowed
ldap_add: Constraint violation (19)
参考下面的链接,http://serverfault.com/questions/290264/ldap-add-constraint-violation-19
使用slapcat会导出很多条目,而这些条目,只在slapd内部使用,任何账户(即便管理员账户)都不能修改。
所以要将这些条目删除才行。
第二个问题:
Nov 13 14:30:58 planner slapd[10954]: bdb_db_cache: db_open(objectClass) failed: Permission denied (13) Nov 13 14:30:58 planner slapd[10954]: bdb_index_read: Could not open DB objectClass
http://forums.gentoo.org/viewtopic-t-515958.html
参考上面的帖子,结果再没有报这个错误。
chown openldap.openldap /var/lib/ldap/objectClass.bdb
第三个问题:
修改某个dn的密码
ldapmodify -D 'cn=admin,dc=xxxx,dc=net' -w binddnpassword<enter> dn: cn=silence,ou=People,dc=xxxx,dc=net<enter> changetype: modify<enter> replace: userPassword<enter> userPassword: mypass<enter> <enter> 屏幕上出现: modifying entry "cn=silence,ou=People,dc=xxxx,dc=net“
也可以将修改的内容写入文件,类似下面:
ldapmodify -D 'cn=admin,dc=xxxx,dc=net' -x -f jeffpass.ldif -W