LDAP Migration

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
reneschmidt
User
Beiträge: 48
Registriert: Montag 4. Januar 2016, 15:14

Hallo zusammen,

kurz zum Hintergrund: ich habe im Moment eine Samba3 "Domäne" mit einem LDAP Server dahinter. Ich möchte jetzt auf Samba4 gehen und ein AD aufbauen. Mein erster Ansatz war eine Classic Upgrade. Das ist grandios in die Hose gegangen, da die Datenbasis im LDAP dermaßen bescheiden ist, das eine Classic Upgrade pauschal ausscheidet.
Angesichts der Fehler, die das Classic Upgrade gefunden habe, verstehe ich überhaupt nicht mehr warum das System überhaupt im Moment funktioniert. Ich bin froh über jeden Tag, wo sich die Anwender überhaupt noch anmelden können.

ich bin jetzt also in der Situation, das der alte LDAP noch läuft und ich ein leeres Samba 4 AD aufgebaut habe. Jetzt müssen die User und Gruppen noch rüber. Da ich mir das abtippen von ca 100 Usern und 30 Gruppen ersparen möchte, ist mein Ansatz bisher:
- alten LDAP per Python abfragen und benötigte Felder auslesen
- User per samba-tool anlegen (ich baue im Python so weit möglich den Befehl zusammen und führe diesen dann aus)
- zusätzliche Attrebute, die sich nicht über das samba-tool steuern lassen per python-ldap rein schieben.

um gleich ein paar Antworten vor zu beugen:
- Ich ändere bei der Gelegenheit gleich die Passwörter. Das Script generiert mir welche und legt die User damit an. Die Passwörter werden den User anschließend mitgeteilt.
- ich habe mich bewusst dafür entschieden, die User nicht per LDAP anzulegen.

Meine Frage dreht sich jetzt um das setzten der Attrebute:

Code: Alles auswählen

mod_attrs = [( ldap.MOD_ADD, 'street', "Musterweg" )]
	l.modify_s('CN=A_Max Mustermann,CN=Users,DC=musterdom,DC=local', mod_attrs)
Das funktioniert solange, das Attribut noch nicht vorhanden ist.
Wenn das Attribut jetzt existiert und ich es ändern möchte, erhalte ich folgende Fehlermeldung:
{'info': '0000200D: SINGLE-VALUE attribute street on CN=A_Max Mustermann,CN=Users,DC=musterdom,DC=local specified more than once', 'desc': 'Type or value exists'}

hat jemand eine Idee was ich ändern muss, damit ich das Attribut ggf. auch Updaten kann?
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

Na mein Kandidat waere ja das MOD_ADD. Damit sagst du ja ausdruecklich, dass es hinzugefuegt werden soll, was dem Schema wohl nicht passt. Da es dann noch MOD_DELETE und MOD_REPLACE gibt, sind das deine Auswege. Getreu dem Motto "es ist einfacher um Vergebung zu bitten als um Erlaubnis", wuerde ich deinen Code in ein try/except <praeziser-ldap-fehler> packen, und wenn die von dir gepostetet Fehlermeldung kommt, wiederholst du die Operatino mit MOD_REPLACE.
reneschmidt
User
Beiträge: 48
Registriert: Montag 4. Januar 2016, 15:14

Super Danke Funktioniert ;)
Antworten