Probleme nach Migration einer Zentyal-Samba4-Domäne nach UCS

german

#1

Da sich Zentyal aus meiner Sicht zunehmend zurückentwickelt, habe ich per AD takeover die bisher mit Zentyal (3.5) betriebene Domain auf UCS migriert. Die Übernahme der Benutzerkonten hat gut funktioniert, allerdings tauchen nun seltsame UserIDs im Samba auf:

[code]# smbstatus

Samba version 4.2.0rc2-Debian
PID Username Group Machine Protocol Version

8096 3052 Domain Users 137.226.40.225 (ipv4:xxx.xxx.xxx.225:49280) SMB2_10
6284 3000047 Domain Users 137.226.40.222 (ipv4:xxx.xxx.xxx.222:53022) SMB2_10
666 3000019 Domain Users 137.226.40.38 (ipv4:xxx.xxx.xxx.38:49174) SMB2_10
11583 3000047 Domain Users cip222 (ipv4:xxx.xxx.xxx.222:62881) SMB2_10
31023 3000044 Domain Users 137.226.40.224 (ipv4:xxx.xxx.xxx.224:53139) SMB2_10

[/code]

Erwarten würde ich UserIDs im 2000er-Bereich (da dort die linux user accounts sind und auch die home-Verzeichnisse diesen UserIDs gehören).

Im per slapcat erzeugten LDAP-Dump lassen sich die seltsamen UserIDs nicht finden:

[code]# slapcat > ldap
556f0313 OVER: Loading Translog Overlay
556f0313 OVER: db_init
556f0313 OVER: Configuring Translog Overlay
556f0313 OVER: Configured Translog Overlay to use file “/var/lib/univention-ldap/listener/listener”
556f0313 OVER: db_close
556f0313 OVER: db_destroy

grep 3052 ldap

grep 3000 ldap

[/code]
Wenn ich per ldbedit mir die idmap.ldb direkt ansehe, kann ich passende Einträge finden, wundere mich aber, woher diese kommen.

# ldbedit -H /var/lib/samba/private/idmap.ldb

Ich habe schon testweise einen der Einträge auf die Linux-UserID geändert,jedoch wird der entsprechende user (auch nach einem Neustart des (Samba-)Servers weiterhin falsch zugeordnet.

Wo könnte das Problem liegen bzw. wie kann ich das ganze weiter einkreisen? Vielen Dank.


#2

Moin,

das sollte durch den Samba Identity Mapping-Mechanismus zustande kommen. Ein Standard-UCS ist in der Tat in /etc/samba/smb.conf so konfiguriert, dass das ID-Mapping bei 300000 beginnt.


#3

Das Problem ist, dass das mapping nicht richtig zu funktionieren scheint. Eigentlich sollte ein User beim Samba nach dem erfolgreichen Domain-Login seine linux-UserID erhalten, damit er auch auf sein home-Verzeichnis zugreifen darf. Stattdessen scheint Samba für den User aber mit der per idmap vergebenen ID auf die Dateien zugreifen zu wollen.

Wäre evtl. die Nutzung von RFC2307 sinnvoll oder würde dies bei zukünftigen Updates des Univention-Systems für Chaos sorgen?


#4

Hallo,

erstmal grundsätzlich schön zu hören dass der AD-Takeover gegen Zentyal funktioniert. :slight_smile:
Haben Sie mal geschaut ob die Benutzer im LDAP (in der UMC) die gewünschten/erwarteten UIDs haben? Wenn die dort korrekt sind, können Sie mal schauen ob es ausreicht wenn Sie die idmap ein mal neu generieren, sowas wie:cp /var/lib/samba/private/idmap.ldb /var/lib/samba/private/idmap.ldb.bak /etc/init.d/univention-directory-listener stop /usr/lib/univention-directory-listener/system/samba4-idmap.py --direct-resync /etc/init.d/univention-directory-listener start

[quote=“jamasi”]Wäre evtl. die Nutzung von RFC2307 sinnvoll oder würde dies bei zukünftigen Updates des Univention-Systems für Chaos sorgen?[/quote]Ich denke das würde eher zu Chaos führen, auch wenn ich mir da natürlich nicht sicher bin. In einer UCS Domäne kümmert sich der UDM/die UMC um die Verwaltung der POSIX UIDs/GIDs und pflegt diese im LDAP.

Mit freundlichen Grüßen
Janis Meybohm


#5

Zwischenzeitlich hatte es den Anschein, als seien die Probleme mittels ldbedit gelöst, jedoch erhalte ich nun in connector-s4.log recht viele Einträge in dieser Form:

[code]29.07.2015 12:41:22,434 LDAP (PROCESS): sync to ucs: Resync rejected dn: CN=usera,CN=Users,DC=xxx,DC=yyy,DC=de
29.07.2015 12:41:22,443 LDAP (PROCESS): sync to ucs: [ user] [ modify] uid=usera,cn=users,dc=xxx,dc=yyy,dc=de
29.07.2015 12:41:22,636 LDAP (ERROR ): Unknown Exception during sync_to_ucs
29.07.2015 12:41:22,637 LDAP (ERROR ): Traceback (most recent call last):
File “/usr/lib/pymodules/python2.7/univention/s4connector/init.py”, line 1440, in sync_to_ucs
result = self.modify_in_ucs(property_type, object, module, position)
File “/usr/lib/pymodules/python2.7/univention/s4connector/init.py”, line 1217, in modify_in_ucs
return ucs_object.modify() and self.__modify_custom_attributes(property_type, object, ucs_object, module, position)
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/init.py”, line 364, in modify
return self._modify(modify_childs,ignore_license=ignore_license)
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/init.py”, line 839, in _modify
ml=self._ldap_modlist()
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/users/user.py”, line 2403, in _ldap_modlist
self.userSid = self.__generate_user_sid(self.oldattr[‘uidNumber’][0])
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/users/user.py”, line 2609, in __generate_user_sid
raise univention.admin.uexceptions.sidAlreadyUsed, ‘: %s’ % self[‘sambaRID’]
sidAlreadyUsed: : 1130

29.07.2015 12:41:22,638 LDAP (PROCESS): sync to ucs: Resync rejected dn: CN=userb,CN=Users,DC=xxx,DC=yyy,DC=de
29.07.2015 12:41:22,650 LDAP (PROCESS): sync to ucs: [ user] [ modify] uid=userb,cn=users,dc=xxx,dc=yyy,dc=de
29.07.2015 12:41:22,851 LDAP (ERROR ): Unknown Exception during sync_to_ucs
29.07.2015 12:41:22,852 LDAP (ERROR ): Traceback (most recent call last):
File “/usr/lib/pymodules/python2.7/univention/s4connector/init.py”, line 1440, in sync_to_ucs
result = self.modify_in_ucs(property_type, object, module, position)
File “/usr/lib/pymodules/python2.7/univention/s4connector/init.py”, line 1217, in modify_in_ucs
return ucs_object.modify() and self.__modify_custom_attributes(property_type, object, ucs_object, module, position)
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/init.py”, line 364, in modify
return self._modify(modify_childs,ignore_license=ignore_license)
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/init.py”, line 839, in _modify
ml=self._ldap_modlist()
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/users/user.py”, line 2403, in _ldap_modlist
self.userSid = self.__generate_user_sid(self.oldattr[‘uidNumber’][0])
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/users/user.py”, line 2609, in __generate_user_sid
raise univention.admin.uexceptions.sidAlreadyUsed, ‘: %s’ % self[‘sambaRID’]
sidAlreadyUsed: : 1139

29.07.2015 12:41:22,853 LDAP (PROCESS): sync to ucs: Resync rejected dn: CN=userc,CN=Users,DC=xxx,DC=yyy,DC=de
29.07.2015 12:41:22,865 LDAP (PROCESS): sync to ucs: [ user] [ modify] uid=userc,cn=users,dc=xxx,dc=yyy,dc=de
29.07.2015 12:41:23,74 LDAP (ERROR ): Unknown Exception during sync_to_ucs
29.07.2015 12:41:23,74 LDAP (ERROR ): Traceback (most recent call last):
File “/usr/lib/pymodules/python2.7/univention/s4connector/init.py”, line 1440, in sync_to_ucs
result = self.modify_in_ucs(property_type, object, module, position)
File “/usr/lib/pymodules/python2.7/univention/s4connector/init.py”, line 1217, in modify_in_ucs
return ucs_object.modify() and self.__modify_custom_attributes(property_type, object, ucs_object, module, position)
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/init.py”, line 364, in modify
return self._modify(modify_childs,ignore_license=ignore_license)
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/init.py”, line 839, in _modify
ml=self._ldap_modlist()
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/users/user.py”, line 2403, in _ldap_modlist
self.userSid = self.__generate_user_sid(self.oldattr[‘uidNumber’][0])
File “/usr/lib/pymodules/python2.7/univention/admin/handlers/users/user.py”, line 2609, in __generate_user_sid
raise univention.admin.uexceptions.sidAlreadyUsed, ‘: %s’ % self[‘sambaRID’]
sidAlreadyUsed: : 1120
[/code]

Dabei haben im Webinterface die user folgende “Relative ID”-Zuordnung:

usera: 1120 (linux userID: 2031) userb: 1130 (linux userID: 2013) userc: 1139 (linux userID: 2037)

Irgendwie scheint das ID-Mapping da noch nicht so richtig zu funktionieren. Wie kann ich das beheben oder das Problem weiter eingrenzen?
In der idmap.ldb habe ich per ldbedit die alten xidNumber-Einträge von den falschen (alten) 30000XX-Einträgen zu den Linux-User-IDs geändert. Sollte an diese Stelle besser die “Relative ID” des jeweiligen users?


#6

Nachtrag:

[code]# univention-s4connector-list-rejected

UCS rejected

1:   UCS DN: cn=abc222,cn=computers,dc=xxx,dc=yyy,dc=de
      S4 DN: cn=abc22,cn=computers,DC=xxx,DC=yyy,DC=de
     Filename: /var/lib/univention-connector/s4/1432907050.783205

2:   UCS DN: cn=abc215,cn=computers,dc=xxx,dc=yyy,dc=de
      S4 DN: cn=abc15,cn=computers,DC=xxx,DC=yyy,DC=de
     Filename: /var/lib/univention-connector/s4/1432911004.690718

3:   UCS DN: cn=abc217,cn=computers,dc=xxx,dc=yyy,dc=de
      S4 DN: cn=abc17,cn=computers,DC=xxx,DC=yyy,DC=de
     Filename: /var/lib/univention-connector/s4/1432911004.769157

4:   UCS DN: cn=abc216,cn=computers,dc=xxx,dc=yyy,dc=de
      S4 DN: cn=abc16,cn=computers,DC=xxx,DC=yyy,DC=de
     Filename: /var/lib/univention-connector/s4/1432911004.820513

5:   UCS DN: cn=abc212,cn=computers,dc=xxx,dc=yyy,dc=de
      S4 DN: cn=abc12,cn=computers,DC=xxx,DC=yyy,DC=de
     Filename: /var/lib/univention-connector/s4/1432911004.900661

6:   UCS DN: cn=abc213,cn=computers,dc=xxx,dc=yyy,dc=de
      S4 DN: cn=abc13,cn=computers,DC=xxx,DC=yyy,DC=de
     Filename: /var/lib/univention-connector/s4/1432911004.961881

7:   UCS DN: cn=abc201,cn=computers,dc=xxx,dc=yyy,dc=de
      S4 DN: cn=abc1,cn=computers,DC=xxx,DC=yyy,DC=de
     Filename: /var/lib/univention-connector/s4/1432911005.029262

8:   UCS DN: cn=abc211,cn=computers,dc=xxx,dc=yyy,dc=de
      S4 DN: cn=abc11,cn=computers,DC=xxx,DC=yyy,DC=de
     Filename: /var/lib/univention-connector/s4/1432911005.087128

9:   UCS DN: cn=abc202,cn=computers,dc=xxx,dc=yyy,dc=de
      S4 DN: cn=abc2,cn=computers,DC=xxx,DC=yyy,DC=de
     Filename: /var/lib/univention-connector/s4/1432911005.134415

10: UCS DN: cn=abc223,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc23,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432911005.221508

11: UCS DN: cn=abc207,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc7,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432911005.279079

12: UCS DN: cn=abc224,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc24,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432911005.363420

13: UCS DN: cn=abc225,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc25,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432911005.428410

14: UCS DN: cn=abc226,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc26,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432911005.487582

15: UCS DN: cn=abc208,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc8,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432911005.549859

16: UCS DN: cn=abc208,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc8,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1433027396.882772

17: UCS DN: cn=abc215,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc15,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1433027429.479519

18: UCS DN: cn=abc216,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc16,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1433027438.485782

19: UCS DN: cn=abc224,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc24,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1433027569.846487

20: UCS DN: cn=abc225,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc25,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1433027584.314919

21: UCS DN: cn=abc226,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc26,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1433027598.947712

22: UCS DN: cn=abc1130,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN:
Filename: /var/lib/univention-connector/s4/1433239606.793817

23: UCS DN: cn=def171,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=xyz43,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1433273390.366159

24: UCS DN: cn=def172,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=xyz56,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1433273457.312146

25: UCS DN: cn=abc223,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc23,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432902096.754979

26: UCS DN: cn=abc222,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc22,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432902105.928358

27: UCS DN: cn=abc211,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc11,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432906943.931538

28: UCS DN: cn=abc212,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc12,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432906951.060307

29: UCS DN: cn=abc213,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc13,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432906961.566740

30: UCS DN: cn=abc214,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc14,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432906993.779165

31: UCS DN: cn=abc217,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc17,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432907008.579702

32: UCS DN: cn=abc202,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc2,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432907019.780946

33: UCS DN: cn=abc207,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc7,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1432907030.786345

34: UCS DN: cn=abc207,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc7,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1438181335.189018

35: UCS DN: cn=abc215,cn=computers,dc=xxx,dc=yyy,dc=de
S4 DN: cn=abc15,cn=computers,DC=xxx,DC=yyy,DC=de
Filename: /var/lib/univention-connector/s4/1438181347.080431

S4 rejected

1:    S4 DN: CN=Nagios Admins,CN=Groups,DC=xxx,DC=yyy,DC=de
     UCS DN: cn=nagios admins,cn=groups,dc=xxx,dc=yyy,dc=de
2:    S4 DN: CN=userb,CN=Users,DC=xxx,DC=yyy,DC=de
     UCS DN: uid=userb,cn=users,dc=xxx,dc=yyy,dc=de
3:    S4 DN: CN=userc,CN=Users,DC=xxx,DC=yyy,DC=de
     UCS DN: uid=userc,cn=users,dc=xxx,dc=yyy,dc=de

    last synced USN: 2811645

[/code]

Die Einträge im UCS sind richtig, die im S4 veraltet, wie schaffe ich es alle Einträge im S4 zu aktualisieren?


#7

[quote=“jamasi”]
Die Einträge im UCS sind richtig, die im S4 veraltet, wie schaffe ich es alle Einträge im S4 zu aktualisieren?[/quote]

Als Ansatz hilft ggfs. How to deal with s4-connector rejects - Stichwort resync:
Trigger UCS resync:

root@master:/usr/share/univention-s4-connector# ./resync_object_from_ucs.py --filter uid=Administrator resync triggered for uid=Administrator,cn=users,dc=domain,dc=de


Migration Zentyal -> UCS
#8

Also das Anstoßen des manuellen resyncs führt nur dazu, dass die Rejection-Liste einen entsprechenden Eintrag (mit anderem Filename/timestamp) länger wird.

Am besten wäre es, wenn ich die kollidierenden Einträge im S4 löschen könnte und die dann aus dem UCS neu synchronisiert werden könnten. Gibt es dafür eine einfache Möglichkeit?

EDIT:

root@xyz:/usr/share/univention-s4-connector# ./remove_s4_rejected.py cn=xxx7,cn=computers,DC=xxx,DC=yyyy,DC=de 
ERROR: The object cn=xxx7,cn=computers,DC=xxx,DC=yyyy,DC=de was not found.
root@xyz:/usr/share/univention-s4-connector# ./remove_ucs_rejected.py cn=xxx7,cn=computers,DC=xxx,DC=yyyy,DC=de  
ERROR: The object cn=xxx7,cn=computers,DC=xxx,DC=yyyy,DC=de was not found.
root@xyz:/usr/share/univention-s4-connector# univention-s4connector-list-rejected
[...]

   38:   UCS DN: cn=xxx207,cn=computers,dc=xxx,dc=yyyy,dc=de
          S4 DN: cn=xxx7,cn=computers,DC=xxx,DC=yyyy,DC=de
         Filename: /var/lib/univention-connector/s4/1439391823.069891

Der Rechner soll xxx207 sowohl im UCS als auch im S4 heißen.


#9

Inzwischen habe ich herausgefunden, dass es nach Änderungen an der idmap.ldb per ldbedit essentiell ist ein net cache flush durchzuführen, damit die Änderungen auch aktiv werden. Ansonsten habe ich nun manuell die mappings so zurechteditiert, dass für alle zur Zeit existenten user und Gruppen wbinfo --sids-to-unix-ids=`wbinfo -n userxyz` die richtige unix userid zurückliefert.

Allerdings schlägt bei einigen usern der Befehl wbinfo -n fehl:

# wbinfo -n xyz
failed to call wbcLookupName: WBC_ERR_DOMAIN_NOT_FOUND
Could not lookup name xyz
# id -u xyz
2011

Alles sehr seltsam.