phpldapadmin - Agregar una entrada a OpenLDAP
openldap windows (2)
Así que tome las sugerencias que le da slapindex. No ejecute slapd como root, corrija las líneas 95 y 112, y no ejecute slapd dos veces, ni corrija lo que esté causando que piense que la base de datos ya está en uso.
Acabo de instalar OpenLDAP en Ubuntu Server 12.10, y agregué un archivo slapadd -c -l init.ldif
usando slapadd -c -l init.ldif
como el siguiente:
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: [email protected]
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
Ahora mi árbol ldap se ve así:
Luego traté de agregar un nuevo inetOrgPerson
usando Apache Directory Studio
, pero obtuve este error:
[LDAP: error code 80 - index generation failed]
Luego probé lo mismo usando phpLDAPadmin
, pero obtuve este error:
Impossible d''ajouter l''objet au serveur LDAP.
LDAP dit :: Other (e.g., implementation specific) error
Erreur numéro :: 0x50 (LDAP_OTHER)
Luego creé un archivo que llamé xx.ldif
:
dn: uid=xx,ou=people,dc=tpw,dc=uca,dc=ma
cn: XX
givenname: xx
mail: [email protected]
objectclass: inetOrgPerson
objectclass: organizationalPerson
objectclass: person
objectclass: top
sn: XX
uid: xx
userpassword: toor
E intenté agregar esta entrada usando este comando a través de terminal:
sudo ldapadd -x -D cn=Manager,dc=tpw,dc=uca,dc=ma -W -f xx.ldif
Pero tengo este error:
ldap_add: Other (e.g., implementation specific) error (80)
additional info: index generation failed
Como puedó resolver esté problema ?
PD: en otro caso borré mi base de datos y modifiqué el archivo init.ldif que contiene todas las entradas que quiero agregar, y agregué la entrada xx, luego importé mi archivo usando el comando slapadd, pero de esta manera tengo para eliminar la base de datos cada vez que quiero agregar una nueva entrada, lo cual no es práctico.
Edit1:
Este es el resultado del comando 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
Lo primero es que el archivo init.ldif parece estar mal configurado:
domainComponent "uca" (dc = uca) falta, debe haber una entrada ( dcObject o domain objectClass) para definir este atributo que contiene un componente del nombre de dominio.
dcObject está destinado a utilizarse en entradas para las que existe una clase de objeto estructural adecuada. Por ejemplo, si el dominio representa una organización particular, la entrada tendría como clase de objeto estructural ''organización'', y la clase ''dcObject'' sería una clase auxiliar.
domain es una clase de objeto estructural utilizada para las entradas en las que no se almacena ninguna otra información. La clase de objeto de dominio se usa generalmente para entradas que son marcadores de posición o cuyos dominios no corresponden a entidades del mundo real.
En su archivo .ldif puede reemplazar la primera entrada "dn: dc = tpw, dc = uca, dc = ma" con estos 2 (luego borre su base de datos nuevamente y vuelva a ejecutar el comando slapadd):
dn: dc=uca,dc=ma
objectClass: top
objectClass: organization
objectClass: dcObject
dc: uca
o: an organization name (mandatory with ''organization'' objectClass)
dn: dc=tpw,dc=uca,dc=ma
objectClass: top
objectClass: domain
dc: tpw
Lo segundo: obviamente ha aterrizado en un problema de índice. Creo que desea usar índices, pero si no, busque y elimine cualquier línea que comience con el index
de slapd.conf, por ejemplo: index objectClass eq
.
Recuerde detener slapd y ejecutar slapindex
después de cada cambio realizado en las definiciones de índice en slapd.conf, y asegurarse de que todos los clientes ldap se hayan desconectado antes de ejecutar los comandos slap para evitar que la database already in use
slapindex
database already in use
.