Ich versuche derzeit, Passwörter in unserer Active Directory Envoirenment über LDAP unter Linux zu ändern, da die betreffenden Benutzer keinen Zugriff auf eine Windows-Maschine haben und wir es so behalten wollen . Um das Passwort zu ändern, bin ich gerade dabei herauszufinden, wie man ldapmodify dazu benutzt. Nach vielen Lesen auf verschiedene Webseiten/Foren/Newsgroups bin ich viel mehr verwirrt als vorherLDAP Constraint Verletzung beim Ändern des Passworts in AD durch ldapmodify
Allerdings: Ich versuche, den folgenden Befehl ein, dies zu tun:
ldapmodify -f ldif.example -H ldaps://lab01-dc01.example.com -D 'CN=test,CN=users,DC=lab01,DC=example,DC=com' -x -W
Der Inhalt des ldif.example:
dn: CN=test,CN=Users,DC=lab01,DC=example,DC=com
changetype: modify
delete: unicodePwd
unicodePwd:: V3VQdXV1STEyLg==
-
add: unicodePwd
unicodePwd:: QmxhVVVraTEyLg==
-
(keine Sorge - die Passwörter sind nicht überall und es ist keine Produktion envoirenment verwendet) - jedes Mal, wenn ich
Jetzt Führen Sie den Befehl, den ich die folgende Fehlermeldung erhalten:
modifying entry CN=test,CN=Users,DC=lab01,DC=example,DC=com"
ldapmodify: Constraint violation (19)
additional info: 0000216C: AtrErr: DSID-03190EB0, #1:
0: 0000216C: DSID-03190EB0, problem 1005 (CONSTRAINT_ATT_TYPE), data 0, Att 9005a (unicodePwd)
Nun, nach dem, was ich lese die Ursache für diesen Fehler ist entweder, dass das Passwort falsch formatiert wird oder dass die Kennwortrichtlinie nicht zulässt dem Passwort Ich verwenden. Ich habe die Richtlinie mehrfach überprüft und das neue Passwort erfüllt die Richtlinie nach allen Kriterien. Wenn ich das Passwort mit einer Windows-Maschine setze, funktioniert es auch gut (natürlich habe ich später das "alte Passwort" und "neues Passwort" geändert, da ich von der Richtlinie nicht zu einem früheren Passwort wechseln darf). Das Passwort, das ich nach dem Übergeben der "-W" -Option an ldapmodify eingegeben habe, ist ebenfalls richtig, sonst wird von ldapmodify der Fehler ausgegeben, dass ich ungültige Credentials anstelle einer Constraint-Verletzung verwendet habe. Also - der einzige Grund, den ich mir vorstellen kann, ist in der Tat ein schlecht formatiertes Passwort - aber ich kann nicht herausfinden, woher die schlechte Formatierung kommen sollte, da ich den normalen base64 Algorithmus zum Verschlüsseln des Passworts verwende.
Hat jemand eine Idee was los ist? Kann mich jemand in die richtige Richtung schieben?
Hilfe ist sehr geschätzt und ich danke Ihnen im Voraus.
Edit: Etwas, das mich bugs: Wenn ich die Base-codierte Strings durch Base64 ausführen, sagt es mir immer "Invalid Input". Jetzt - ich ging voran und nur neu codiert die Kennwörter mit der Verwendung von base64 auf dem Linux-Rechner - aber wenn ich den generierten String durch die Dekodierungsfunktion erneut ausführen, sagt Base64 mir "Invalid Input" ... Die Strings jedoch leicht geändert zwischen der Windows-Base64-codierten Zeichenfolge und der Linux-codierten Zeichenfolge. Aber base64 sagt einfach "Ungültige Eingabe" egal was ich da hineinlege.
Edit2: Nevermind - Lesen der Zweck der Funktion Ich erhalte, dass es diesen Fehler wegen der Punkte und das Ausrufezeichen in das Passwort wirft.
Ich bin mir nicht sicher, ob Sie irgendwelche Codierung überhaupt tun sollten. Der LDAP-Server sollte das tun. Versuchen Sie, beide Passwörter im Klartext anzugeben. – EJP
Ja, in der Tat - ohne das Passwort zu verschlüsseln scheint es gut zu funktionieren. Wie ich schon sagte: Ich habe viel über dieses Thema gelesen und alles, was ich gelesen habe, schlug vor, dass ich eine verschlüsselte Zeichenfolge verwenden muss, um das Passwort zu ändern. Offensichtlich - das ist nicht ganz richtig. Vielen Dank! – henryford