向OpenLDAP添加条目
我刚刚在Ubuntu服务器12.10上安装了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
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”类将是一个辅助类
- 域是一个结构对象类,用于不存储其他信息的条目。域对象类通常用于作为占位符或其域与实际实体不对应的条目
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。