ldap_add: violação de restrição (19)

5

Estou com problemas ao importar usuários com ldapadd e ldif arquivos. O erro que estou recebendo é:

ldap_add: Constraint violation (19)
additional info: structuralObjectClass: no user modification allowed

Os usuários importados são todos parte de ou=People,dc=example,dc=org . O servidor LDAP já contém este DN base.

O arquivo /etc/ldap/slapd.d/cn=config/olcDatabase={1}hdb.ldif contém a seguinte entrada da ACL:

olcAccess: {2}to dn.base="ou=People,dc=example,dc=org" attrs=children by gr
 oup.exact="cn=Manager,ou=Roles,dc=example,dc=org" manage

O arquivo ldif é importado da seguinte forma:

ldapadd -f import.ldif -xv -D "cn=drupal,ou=Apps,dc=example,dc=org" -h localhost -W

A entrada cn=drupal,ou=Apps[...] é membro de cn=Manager,ou=Roles,dc=example,dc=org , portanto, deve ter permissões suficientes para gravar ( desde gerenciar é o nível mais alto de permissões disponíveis ).

Quando emito o comando ldapadd , a importação falha na primeira entrada ldif . A saída completa do comando é então:

add objectClass:
    top
    person
    inetOrgPerson
add uid:
    John.Merrell
add mail:
    [email protected]
add cn:
    John D Merrell
add structuralObjectClass:
    inetOrgPerson
add entryUUID:
    65236c42-09b7-1020-9318-9fca7c043dfc
add creatorsName:
    cn=drupal,ou=Apps,dc=bidnetwork,dc=org
add createTimestamp:
    20110503095643Z
add userPassword:
    2678u8yyy
add givenName:
    John D
add sn:
    Merrell
add entryCSN:
    20110629121956.880164Z#000000#000#000000
add modifiersName:
    cn=drupal,ou=Apps,dc=bidnetwork,dc=org
add modifyTimestamp:
    20110629121956Z
adding new entry "[email protected],ou=People,dc=example,dc=org"
ldap_add: Constraint violation (19)
    additional info: structuralObjectClass: no user modification allowed

Eu testei a importação de usuários que existiam ou não no LDAP e recebo o erro mencionado em ambos os casos.

Alguém pode explicar a origem do problema e como ele pode ser contornado?

    
por Max 14.07.2011 / 11:44

4 respostas

7

Como você gerou esses arquivos LDIF? structuralObjectClass é um dos valores internos no OpenLDAP e o usuário - mesmo administrador - não pode modificá-los normalmente.

Remova as structuralObjectClass linhas do seu LDIF ou importe as entradas novamente com slapadd (aposto que você gerou os arquivos LDIF com slapcat ).

    
por 14.07.2011 / 11:59
1

Se você estiver usando ferramentas como link para exportar os dados, não escolha Include system attributes na interface do usuário da web:

    
por 29.07.2017 / 06:42
0

Abaixo não há solução para questionar, mas código de utilitário para remover elementos estruturais . Exemplo de código python remove elementos estruturais. Use out.ldif

structural_elements = ["structuralObjectClass","entryUUID", "creatorsName","createTimestamp","entryCSN", "modifiersName","modifyTimestamp"]
    with open("ldap_data_out.ldif","w+") as outfile:
        with open("ldap_data_in.ldif", "r") as infile:
            lines = infile.readlines()
            for line in lines:
                print line.split(":")[0]
                if line.split(":")[0] in structural_elements:
                    print "ignoring ,", line
                else:
                    outfile.write(line)
    
por 24.07.2014 / 13:05
0

você precisa excluir as seguintes linhas no arquivo ldif :

structuralObjectClass: 
entryUUID: 
creatorsName: 
createTimestamp: 
entryCSN: 
modifiersName: 
modifyTimestamp: 
    
por 04.02.2016 / 23:25