ldap_add error (80) O manipulador olcModuleLoad foi encerrado com 1

8

Estou tentando seguir este tutorial para configurar um servidor LDAD básico (OpenLDAP) para autenticação cleint, mas estou preso na etapa em que adiciono a configuração de backend.

Eu criei meu arquivo backend.ldif conforme especificado e estou tentando adicioná-lo com:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif

Mas eu recebo:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=module,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
    additional info: <olcModuleLoad> handler exited with 1

O LDIF completo é:

#Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=mydomain,dc=us
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=mydomain,dc=us
olcRootPW: dmx512
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=mydomain,dc=us" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=mydomain,dc=us" write by * read

Alguma sugestão sobre como solucionar problemas? Eu não sei nada sobre servidores LDAP, esta é a minha primeira vez.

ATUALIZAÇÃO:

Eu comecei com uma nova instalação do 11.04 Server.

Eu fiz o seguinte:

hostname ldap.mycompany.com
nano /etc/hosts (set to ldap.mycompany.com)
nano /etc/hostname (set to ldap.mycompany.com)
sudo apt-get install slapd ldap-utils

Eu tento carregar o primeiro esquema:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif

Eu recebo:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "cn=cosine,cn=schema,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
    additional info: olcAttributeTypes: Duplicate attributeType: "0.9.2342.19200300.100.1.2"

Eu tentei o comando sugerido abaixo:

root@ldap:~# cat /etc/ldap/slapd.d/cn\=config/cn\=module\{0\}.ldif
dn: cn=module{0}
objectClass: olcModuleList
cn: module{0}
olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb
structuralObjectClass: olcModuleList
entryUUID: 3bedbe64-e4b2-1030-832a-17900c7b3644
creatorsName: cn=config
createTimestamp: 20120206020131Z
entryCSN: 20120206020131.785958Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20120206020131Z

Mas não se trata de um módulo desta vez, mas sim de um "atributoType duplicado".

Então, eu preciso de um comando que diga "mostrar tipos de atributos carregados" para ver se "cosseno" já está na lista?

OK, suponho que:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

são desnecessários, pois todos eles apresentam o mesmo erro.

Então eu mudei para adicionar ~ / backend.ldif. Eu removi as linhas de modo de carga do topo, já que o módulo parece já estar carregado.

Agora, quando tento adicionar:

sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.ldif

Eu recebo:

SASL/EXTERNAL authentication started
SASL username: gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth
SASL SSF: 0
adding new entry "olcDatabase=hdb,cn=config"
ldap_add: Other (e.g., implementation specific) error (80)
    additional info: <olcSuffix> namingContext "dc=mycompany,dc=us" already served by a preceding hdb database

O que não faz sentido, já que este é o único banco de dados no computador, e esta é a primeira entrada que estou adicionando a ele.

    
por Nick 04.02.2012 / 23:58

2 respostas

6

A mensagem de erro indica que o módulo back_hdb já está incluído na configuração. Você pode verificar isso com o comando

cat /etc/ldap/slapd.d/cn\=config/cn\=module\{0\}.ldif

Se isso incluir linhas semelhantes às seguintes, ele já estará incluído:

olcModulePath: /usr/lib/ldap
olcModuleLoad: {0}back_hdb 

Se este for o caso, basta remover as primeiras seis linhas do seu backend.ldif e tentar novamente.

Se você quiser começar do zero, você pode usar o comando

apt-get purge slapd ldap-utils

para se livrar da instalação completa do ldap, incluindo todos os arquivos de dados.

Depois disso, você precisará reinstalar o OpenLDAP com o comando correspondente

apt-get install slapd ldap-utils

BTW, eu apenas segui este tutorial (enquanto usava todos os valores padrão de seu script) e isso funcionou bem em uma Lucid VM recém-criada.

Editar

OK, no seu outro post você falou sobre 10.04. De fato, a configuração automática em 11.04 para slapd é muito melhor quando comparada a 10.04. O que ele faz para você é tudo no tutorial sobre os arquivos de esquema e o backend.ldif e até mesmo uma parte do frontend: Você pode remover as seguintes linhas do fronted.ldif e tentar continuar de lá:

# Create top-level object in domain
dn: dc=tuxnetworks,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Tuxnetworks
dc: Tuxnetworks
description: LDAP Server 

# Admin user.
dn: cn=admin,dc=tuxnetworks,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: mypassword 

Mais uma dica: A configuração de back-end do OpenLDAP ( cn=config ) nada mais é do que uma coleção de arquivos LDIF em uma estrutura de sistema de arquivos equivalente à estrutura LDAP. Você pode navegar por você mesmo em /etc/ldap/slapd.d . O 10.04 tinha o mínimo necessário para obter slapd funcionando, enquanto o 11.04 preparava tudo para que você pudesse começar imediatamente.

    
por 05.02.2012 / 16:57
1

adicione .la ao final do back_hdb

o LDIF deve agora ler

#Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb.la

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=mydomain,dc=us
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=mydomain,dc=us
olcRootPW: dmx512
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=mydomain,dc=us" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=mydomain,dc=us" write by * read

para explicação: link

    
por 06.10.2014 / 07:59

Tags