Ich erhalte OBJECT_CLASS_VIOLATION, wenn ich versuche, ein Attribut hinzuzufügen. Das Ändern eines vorhandenen Attributs funktioniert problemlos (auch dieses Attribut, wenn ich es zuerst von AD hinzufüge, dann mod es).
Zuerst kinit ich als Domain-Administrator, dann:
%Vor%Was diesen Fehler zurückgibt:
%Vor%Dieser Befehl ist jedoch erfolgreich, wenn ich das Attribut im ADUC vor der Zeit erzeuge:
%Vor%Und der Befehl add funktioniert mit ldapmodify:
%Vor%Irgendeine Idee, was ich hier falsch mache?
l.add_s
wird verwendet, um ein Objekt und kein Attribut hinzuzufügen.
In diesem Fall versuchen Sie, ein neues Objekt zu erstellen, und Ihnen fehlen mehrere erforderliche Attribute für die Objekterstellung. Sie sollten
verwenden l.modify_s('CN=dmulder,CN=Users,DC=test,DC=dom,DC=de', [(0, 'gecos', 'something')])
um einfach ein neues Attribut zum Objekt hinzuzufügen.
Zur Klärung: Wenn das Attribut nicht bereits festgelegt ist, ist diese Syntax falsch: %Code% Die obige Syntax (ohne vorherigen Wert) ist korrekt.
Ich folge Anleitung und installiere den OpenLDAP-Server-Daemon in Ubuntu 16. und darunter ist mein Versuch.
%Vor%Wenn Sie nicht das Schema verletzen, dann muss es ein Fehler von ldapclient.python-ldap nur ein Wrapper sein.
Wenn beispielsweise in den Attributen keine strukturelle Objektklasse angegeben ist, wird eine SONSTIGE Ausnahme ausgelöst. Wenn ein Datensatz die in der UID verwendeten Attribute nicht enthält, wird NAMING_VIOLATION ausgelöst. Wenn in einem Datensatz ein von einer Strukturobjektklasse erforderliches Attribut fehlt, wird OBJECT_CLASS_VIOLATION ausgelöst usw.
Bitte verwenden Sie das dump_record.py
von eine Reihe von python-ldap , um den neuen Eintrag auszugeben, um herauszufinden, was fehlt.
Tags und Links python active-directory python-ldap