LDAP Samba3 Import

german

#1

Hallo,

ich habe einen LDAP-Dump von einem SLES mit Samba3 von einem Kunden bekommen.
(+ einen Dump von einem OX, die ich verheiraten soll)

Zunächst möchte ich das Samba in UCS 4 importieren.

Wie gehe ich dabei am besten vor?
Ich nehme an, dass ein Script, dass die UDM wiederholt aufruft, zielführend sein kann.
Es geht um 230 Benutzer, daher möchte ich möglichst automatisiert vorgehen.

Auffällig ist, dass die User-ID sehr klein ist.
Wie kann man die SIDs sauber übernehmen?

Beispiel:

dn: uid=swd020,ou=people,dc=test,dc=at
structuralObjectClass: inetOrgPerson
entryUUID: cbe7b30a-0565-1029-92b3-8bdb4de8e069
creatorsName: cn=Administrator,dc=test,dc=at
createTimestamp: 20050128104749Z
uid: swd020
cn: Test Manfred
givenName: Manfred
sn: Test
mail: swd020@gfm.at
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: gosaAccount
objectClass: top
objectClass: shadowAccount
objectClass: sambaSamAccount
userPassword:: e2NyeXB0fXAuUy5tQy5WdFh1czY=
shadowLastChange: 10313
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 160
gidNumber: 120
homeDirectory: /home/swd020
gecos: Test Manfred
sambaSID: S-1-5-21-2657495056-2441450391-3094810640-1320
sambaPrimaryGroupSID: S-1-5-21-2657495056-2441450391-3094810640-1241
displayName: Test Manfred
sambaPwdCanChange: 1029216658
sambaLMPassword: 7FA5AF046AF67E2FAAD3B435B51404EE
sambaNTPassword: BB0631D89D765E89E21C98F4B8D3BD91
sambaPwdLastSet: 1029216658
sambaAcctFlags: [U          ]
entryCSN: 20050129124632Z#00000a#00#000000
modifiersName: cn=Administrator,dc=test,dc=at
modifyTimestamp: 20050129124632Z

#2

Hallo,

ich würde auch ein Script schreiben dass aus dem ldif “udm” Aufrufe generiert. Das Passwort müssten Sie dann vermutlich in einem zweiten Schritt per ldapmodify an das Objekt schreiben (da Sie ja nur die Hashes haben). Die GID/UID würde ich persönlich nicht übernehmen da die kleiner 1000 und somit ggf. mit Systembenutzern kollidieren. Die SID (bzw. die RID) können Sie beim UDM create mit angeben, wenn die UCS-Domäne die gleiche Domain-SID hat, “entsteht” dadurch dann natürlich wieder die gleiche SID.
Ich würde das ganze auf einem UCS System ohne Samba 4 machen und die Samba4-Migration dann im Nachgang durchführen. Dass macht das SID Handling einfacher da sie die SIDs nur dann im LDAP vorgeben können.

Mit freundlichen Grüßen
Janis Meybohm


#3

Gibt es für so ein Skript eine Vorlage, wie so etwas aussehen kann, damit ich das Rad nicht neu erfinden muss?

Mein Vorgänger bei Siedl hat das in PHP programmiert - nicht gerade das Tool meiner Wahl. :wink:


#4

Hier gibt es etwas:
github.com/dansan/Samba3toUCS

Ich habe es bisher allerdings nicht getestet.


#5

Ah, python. Viel besser, danke. :slight_smile:

Ich werde es testen und hier berichten.


#6

Ich kann inzwischen sagen, dass die Migration mit diesem Tool gut funktioniert.
Ich musste nur Python 2.7 nachinstallieren und das Skript so erweitern, dass uid’s (um 1000 erhöht) und Samba-SID’s übernommen werden, was kein Problem war.

Als nächsten Schritt würde ich gerne die Passwörter übernehmen.
Ich habe nur Hash-Werte, die auf der alten SLES 9-Maschine offenbar mit DES verschlüsselt wurden. Die Hashes beginnen alle mit e2NyeXB0f - eine Salt-Länge, die damit aber nicht zusammenpasst.

Gibt es Ideen zur Passwort-Übernahme ins UCS 3.2.5. ?

Hier die ldap.conf des alten SLES-Servers und danach die /etc/default/passwd:

admsrv:~ # awk 'NF' /etc/ldap.conf | grep -v ^#
host	localhost
base	dc=gfm,dc=at
ldap_version	3
pam_password	crypt
ssl	start_tls
nss_map_attribute	uniqueMember member
pam_filter	objectclass=posixAccount
nss_base_passwd	dc=gfm,dc=at
nss_base_shadow	dc=gfm,dc=at
nss_base_group	        dc=gfm,dc=at
admsrv:~ # cat /etc/default/passwd 
# This file contains some information for
# the passwd (1) command and other tools 
# creating or modifying passwords.

# Define default crypt hash
# CRYPT={des,md5,blowfish}
CRYPT=des

# Use another crypt hash for group passwowrds.
# This is used by gpasswd, fallback is the CRYPT entry.
# GROUP_CRYPT=des