向OpenLDAP添加条目

向OpenLDAP添加条目,ldap,openldap,Ldap,Openldap,我刚刚在Ubuntu服务器12.10上安装了OpenLDAP,并使用slapadd-c-l init.ldif添加了一个ldif文件,如下所示: dn:dc=tpw,dc=uca,dc=ma dc: tpw objectClass: dcObject objectClass: top objectClass: domain dn: ou=people,dc=tpw,dc=uca,dc=ma ou: people objectClass: organizationalUnit objectCla

我刚刚在Ubuntu服务器12.10上安装了OpenLDAP,并使用
slapadd-c-l init.ldif
添加了一个ldif文件,如下所示:

dn:dc=tpw,dc=uca,dc=ma
dc: tpw
objectClass: dcObject
objectClass: top
objectClass: domain

dn: ou=people,dc=tpw,dc=uca,dc=ma
ou: people
objectClass: organizationalUnit
objectClass: top

dn: ou=groupes,dc=tpw,dc=uca,dc=ma
ou: groupes
objectClass: organizationalUnit
objectClass: top

dn: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma
uid: admin
sn: Admin
cn: Admin
objectClass: inetOrgPerson
objectClass: organizationalPerson
objectClass: person
objectClass: top
userPassword:: e1NIQX0wRFBpS3VOSXJyVm1EOElVQ3V3MWhReE5xWmM9
mail: admin@uca.ma
givenName: admin

dn: cn=GI,ou=groupes,dc=tpw,dc=uca,dc=ma
uniquemember: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma
cn: GI
objectClass: groupOfUniqueNames
objectClass: top

dn: cn=GP,ou=groupes,dc=tpw,dc=uca,dc=ma
uniquemember: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma
cn: GP
objectClass: groupOfUniqueNames
objectClass: top

dn: cn=GT,ou=groupes,dc=tpw,dc=uca,dc=ma
uniquemember: uid=admin,ou=people,dc=tpw,dc=uca,dc=ma
cn: GT
objectClass: groupOfUniqueNames
objectClass: top
现在,我的ldap树如下所示:

然后,我尝试使用Apache Directory Studio添加一个新的
inetOrgPerson
,但出现以下错误:

  [LDAP: error code 80 - index generation failed]
Impossible d'ajouter l'objet au serveur LDAP.
LDAP dit :: Other (e.g., implementation specific) error
Erreur numéro ::    0x50 (LDAP_OTHER)
ldap_add: Other (e.g., implementation specific) error (80)
        additional info: index generation failed
然后,我使用
phpLDAPadmin
尝试了相同的方法,但出现了以下错误:

  [LDAP: error code 80 - index generation failed]
Impossible d'ajouter l'objet au serveur LDAP.
LDAP dit :: Other (e.g., implementation specific) error
Erreur numéro ::    0x50 (LDAP_OTHER)
ldap_add: Other (e.g., implementation specific) error (80)
        additional info: index generation failed
然后我创建了一个名为
xx.ldif
的文件:

dn: uid=xx,ou=people,dc=tpw,dc=uca,dc=ma
cn: XX
givenname: xx
mail: xx@edu.uca.ma
objectclass: inetOrgPerson
objectclass: organizationalPerson
objectclass: person
objectclass: top
sn: XX
uid: xx
userpassword: toor
我试图通过终端使用以下命令添加此条目:

sudo ldapadd -x -D cn=Manager,dc=tpw,dc=uca,dc=ma -W -f xx.ldif
但我有一个错误:

  [LDAP: error code 80 - index generation failed]
Impossible d'ajouter l'objet au serveur LDAP.
LDAP dit :: Other (e.g., implementation specific) error
Erreur numéro ::    0x50 (LDAP_OTHER)
ldap_add: Other (e.g., implementation specific) error (80)
        additional info: index generation failed
我怎样才能解决这个问题

PS:在另一个场景中,我删除了我的数据库,修改了包含我要添加的所有条目的文件init.ldif,并添加了条目xx,然后使用slapadd命令导入了我的文件,但以这种方式,每次我要添加新条目时都必须删除数据库,这是不实际的

编辑1: 这是命令的输出
slapindex

WARNING!
Runnig as root!
There's a fair chance slapd will fail to start.
Check file permissions!

5370d6f9 /etc/ldap/slapd.conf: line 95: rootdn is always granted unlimited privileges.
5370d6f9 /etc/ldap/slapd.conf: line 112: rootdn is always granted unlimited privileges.
5370d6f9 hdb_db_open: database "dc=tpw,dc=uca,dc=ma": database already in use.
5370d6f9 backend_startup_one (type=hdb, suffix="dc=tpw,dc=uca,dc=ma"): bi_db_open failed! (-1)
slap_startup failed

因此,请接受slapindex给您的提示。不要以root用户身份运行slapd,修复第95行和第112行,不要运行slapd两次,或者修复导致它认为数据库已经在使用的任何问题

首先,init.ldif文件似乎配置错误:

  • domainComponent缺少“uca”(dc=uca),应该有一个条目(dcObject或domain objectClass)来定义此属性,该属性包含域名的组件

  • dcObject用于具有适当结构对象类的条目中。例如,如果域表示一个特定的组织,则条目将具有作为其结构对象类的“organization”,而“Dobject”类将是一个辅助类

  • 是一个结构对象类,用于不存储其他信息的条目。域对象类通常用于作为占位符或其域与实际实体不对应的条目

在.ldif文件中,可以将第一个条目“dn:dc=tpw,dc=uca,dc=ma”替换为这两个条目(然后再次删除数据库并重新执行slapadd命令):

第二件事:很明显,你陷入了一个指数问题。我认为您确实想使用索引,但如果不想,请从slapd.conf中查找并删除以
index
开头的任何行,例如:
索引objectClass eq


请记住在slapd.conf中的索引定义发生每次更改后停止slapd并运行
slapindex
,并确保在运行slap命令之前已断开所有ldap客户端的连接,以防止
数据库已在使用
消息。

虽然这与OP的问题无关,但我遇到了类似的错误:
bdb_db_open:数据库已在使用中


hdb\u db\u open:数据库“dc=XXX,dc=XXX,dc=XXX”:数据库已在使用中。


我们的一个Openshift节点宕机,PVC的(挂载)
/var/lib/ldap/
\uu db.001、\uu db.002和\uu db.003被锁定。在谷歌搜索数小时后,我找到的唯一解决方案是执行以下操作(请注意,由于它是OpenShift,所以我不得不使用调试pod来获取shell)。

mkdir/var/lib/ldap/backup

mv/var/lib/ldap/\uu db.*/var/lib/ldap/backup

尝试并重新启动slapD,如果它仍然像对其中一个OpenLDap实例一样失败,则移动alock文件
mv/var/lib/ldap/\uu db.*/var/lib/ldap/backup



重新启动slapD,或者在我们的实例中删除OpenShift pod并重新创建它。现在,一切都可以正常工作了-希望这可以帮助其他遇到相同问题的人。

我认为您需要停止slapd并运行slapindex。@EJP,请检查我对我的帖子所做的修改。这个问题与这里的主题无关,属于serverfault.com。