Otrzymuję OBJECT_CLASS_VIOLATION podczas próby dodania atrybutu. Modyfikowanie istniejącego atrybutu działa dobrze (nawet ten sam atrybut, jeśli najpierw dodaję go z AD, a potem go modyfikuję).Python-ldap add_s nie dodaje atrybutu dla użytkownika AD z OBJECT_CLASS_VIOLATION
Najpierw kinit jako administrator domeny, a następnie:
import ldap, ldap.sasl
l = ldap.initialize('ldap://TEST.DOM.DE')
auth_tokens = ldap.sasl.gssapi('')
l.sasl_interactive_bind_s('', auth_tokens)
l.add_s('CN=dmulder,CN=Users,DC=test,DC=dom,DC=de', [('gecos', ['something'])])
Które zwraca ten błąd:
ldap.OBJECT_CLASS_VIOLATION: {'info': '0000207B: UpdErr: DSID-0305124B, problem 6002 (OBJ_CLASS_VIOLATION), data 0\n', 'desc': 'Object class violation'}
To polecenie jest udany choć, jeśli utworzyć atrybut wyprzedzeniem ciągu ADuC:
l.modify_s('CN=dmulder,CN=Users,DC=test,DC=dom,DC=de', [(1, 'gecos', None), (0, 'gecos', ['something'])])
a polecenie add działa z ldapmodify:
> ldapmodify -x -h TEST.DOM.DE -D [email protected]
dn:CN=dmulder,CN=Users,DC=test,DC=dom,DC=de
changetype: modify
add: gecos
gecos: something
modifying entry "CN=dmulder,CN=Users,DC=test,DC=dom,DC=de"
Jakieś pojęcie, co robię źle tutaj?
Schemat zezwala na atrybuty rfc2307. Oczywiście, ponieważ ldapmodify * jest * w stanie wykonać dodawanie, tylko moduł python nie robi tego samego – David
mój wyjątek to 'old.OBJECT_CLASS_VIOLATION: {'info': 'no objectClass attribute', 'desc': 'Object class naruszenie}} i można naprawić przez dodanie obiektu objectClass.i na Ubuntu16, wszystkie pakiety są instalowane przez apt. – obgnaw
@ bgnaw mógłbyś wyjaśnić co masz na myśli? Włączenie atrybutu objectClass w operacji add_s() nic dla mnie nie robi. Jeśli znalazłeś rozwiązanie, opublikuj szczegóły w odpowiedzi. – David