ldap_add error (80) o manipulador <olcModuleLoad> saiu 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 back-end.

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 entendo:

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? Não sei nada sobre servidores LDAP, este é o meu primeiro.

ATUALIZAR:

Eu comecei de novo 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 está se queixando de um módulo neste momento, está se queixando de um "Duplicate attributeType".

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

OK, vou assumir 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 produzem o mesmo erro.

Então, passei a adicionar ~ / backend.ldif. Eu removi as linhas do modo de carregamento da parte superior, pois o módulo já parece 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, pois esse é o único banco de dados no computador e esta é a primeira entrada que estou adicionando a ele.

usuario
fonte

Respostas:

6

A mensagem de erro indica que o back_hdbmódulo 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 inclui linhas semelhantes à seguinte, já está incluído:

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

Se for esse o caso, remova as seis primeiras linhas do seu backend.ldife tente novamente.

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

apt-get purge slapd ldap-utils

livrar-se 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 do script) e 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 no 11.04 para slapdé muito melhor quando comparada ao 10.04. O que isso faz com você é tudo no tutorial sobre os arquivos de esquema e o backend.ldif e até uma parte do frontend: Você pode remover as seguintes linhas do fronted.ldif e tentar continuar a partir daí:

# 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 

Algumas dicas adicionais: 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 si mesmo /etc/ldap/slapd.d. O 10.04 tinha o mínimo necessário para começar a slapdtrabalhar, enquanto o 11.04 preparava tudo para que você pudesse começar imediatamente.

Sven
fonte
Vou tentar fazer a coisa toda novamente. Estou fazendo isso em uma VM 11.04. Talvez haja algo incompatível na nova versão? Ou a versão do OpenLDAP que acompanha o 11.04 já possui esse módulo carregado, enquanto o 10.04 não? Portanto, se eu instalar o ldap e estragar tudo, executar "apt-get purge slapd ldap-utils" será o mesmo que se eu estivesse iniciando com uma instalação limpa? Não deixa nenhum "lixo" em lugar algum?
Nick
OK, tentei novamente com uma nova instalação e obtive um "olcAttributeTypes: Duplicate attributeType" ao tentar carregar o esquema "cosine". Veja acima a mensagem completa.
Nick
Veja minha edição, isso está demorando muito para um comentário.
Sven
O LDAP funcionou usando o 10.04 e seguindo o tutorial novamente. Estou marcando como resolvido, uma vez que responde à pergunta do título. Obrigado!
7762 Nick
1

adicione .la ao final de back_hdb

o LDIF agora deve 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: http://ubuntuforums.org/archive/index.php/t-1594138.html

Sudh33ra
fonte