Univention Bugzilla – Bug 29460
Vollständiges Entfernen eines Samba4-DCs
Last modified: 2013-02-25 14:05:53 CET
Das Entfernen eines Samba4-DCs aus UCS und Samba4 benötigt im Moment mehrere, teils sehr technische und potentiell gefährliche Schritte. Dazu sollte es ein Tool geben oder es sollte vollständig über den S4-Connector/Samba4 abgebildet werden. Mindestens notwendig sind: - Entfernen via UDM inkl. DNS/DHCP-Einträge - (rekursives) Entfernen der Server-Objekte unter cn=configuration,$LDAP_BASE im Samba4 per ldbdel Entfernt werden sollten auch weitere Einträge im S4 sofern vorhanden sowie Einträge im DNS (Service Records, Alias sofern nicht automatisch entfernt).
Created attachment 4850 [details] purge_s4_computer.py Eine erste Version eines solchen Skriptes.
Created attachment 4851 [details] purge_s4_computer.py Sollte das System jetzt auch aus den DNS SRV records herausnehmen und das Server GUID DNS Alias entfernen.
Vielleicht könnte das automatisch vor dem erneuten Joinen ausgeführt werden. Siehe Bug #29459 und Bug #29083.
(In reply to comment #3) > Vielleicht könnte das automatisch vor dem erneuten Joinen ausgeführt werden. > > Siehe Bug #29459 und Bug #29083. Das sollte aber auch separat möglich sein, wenn ein DC wirklich "ausser Betrieb" geht. Idealer Weise würden diese "Aufräumarbeiten" direkt über die UDM-Änderung ausgelöst werden können. Auch müsste man mal klären wie sich AD beim Löschen des Rechnerkontos verhält und Samba4 hier auf "Kompatibilität" prüfen.
Created attachment 4854 [details] purge_s4_computer.py mit site-Unterstützung Dieses Skript ist aktuell nur ein Werkzeug. Im Produkt sollte man wirklich besser Detailverbesserungen für spezifische Szenarien schaffen: * Re-Install eines DCs unter gleichem Namen wird per Bug 29083 behandelt. * Re-Join eines DCs wird per Bug 29504 behandelt. * Konsistenzcheck-Tool für Samba4 DNS-Records wird zusätzlich per Bug 29461 verbessert.
Ich wurde im Forum auf dieses Script verwiesen (http://forum.univention.de/viewtopic.php?f=48&t=2203). Dummerweise löscht die letzte Version die Objekte nicht vollständig. Das mag an dem sys.exit(1) in Zeile 238 liegen. Ist das vergessener Debugging-Code und ist es sicher, das Script von dort aus händisch fortzusetzen? root@vp-s01:~/tmp/purge_s4_computer# ./purge_s4_computer.py --computername=vp-s10 Really remove vp-s10 from Samba 4 and UDM? [y/N]: y If you are really sure type YES and hit enter: YES Ok, continuing as requested. Removing dns/alias '89ea4890-a26e-43fc-a01e-b6ab90d9621a._msdcs' from Univention Directory Manager Removing location '0 100 88 vp-s10.doa.example.net.' from dns/srv_record _kerberos._tcp via UDM Removing location '0 100 88 vp-s10.doa.example.net.' from dns/srv_record _kerberos._udp via UDM Removing location '0 100 88 vp-s10.doa.example.net.' from dns/srv_record _kerberos._tcp.dc._msdcs via UDM Removing location '0 100 88 vp-s10.doa.example.net.' from dns/srv_record _kerberos._tcp.Default-First-Site-Name._sites via UDM Removing location '0 100 88 vp-s10.doa.example.net.' from dns/srv_record _kerberos._tcp.Default-First-Site-Name._sites.dc._msdcs via UDM Removing location '0 100 464 vp-s10.doa.example.net.' from dns/srv_record _kpasswd._tcp via UDM Removing location '0 100 464 vp-s10.doa.example.net.' from dns/srv_record _kpasswd._udp via UDM Removing location '0 100 389 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp via UDM Removing location '0 100 389 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.dc._msdcs via UDM Removing location '0 100 389 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.9cc80316-f99b-46fb-90ea-0dc6251302d2.domains._msdcs via UDM Removing location '0 100 389 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.Default-First-Site-Name._sites via UDM Removing location '0 100 389 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.Default-First-Site-Name._sites.dc._msdcs via UDM Removing location '0 100 3268 vp-s10.doa.example.net.' from dns/srv_record _gc._tcp via UDM Removing location '0 100 3268 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.gc._msdcs via UDM Removing location '0 100 3268 vp-s10.doa.example.net.' from dns/srv_record _gc._tcp.Default-First-Site-Name._sites via UDM Removing location '0 100 3268 vp-s10.doa.example.net.' from dns/srv_record _ldap._tcp.Default-First-Site-Name._sites.gc._msdcs via UDM root@vp-s01:~/tmp/purge_s4_computer# udm computers/domaincontroller_backup list DN: cn=vp-s10,cn=dc,cn=computers,dc=doa,dc=example,dc=net ARG: None domain: doa.example.net ManageableBy: None nagiosContactEmail: None ip: 10.135.3.16 nagiosServices: cn=UNIVENTION_PING,cn=nagios,dc=doa,dc=example,dc=net nagiosServices: cn=UNIVENTION_DISK_ROOT,cn=nagios,dc=doa,dc=example,dc=net nagiosServices: cn=UNIVENTION_DNS,cn=nagios,dc=doa,dc=example,dc=net nagiosServices: cn=UNIVENTION_SWAP,cn=nagios,dc=doa,dc=example,dc=net nagiosServices: cn=UNIVENTION_LDAP_AUTH,cn=nagios,dc=doa,dc=example,dc=net nagiosServices: cn=UNIVENTION_NTP,cn=nagios,dc=doa,dc=example,dc=net nagiosServices: cn=UNIVENTION_SMTP2,cn=nagios,dc=doa,dc=example,dc=net nagiosServices: cn=UNIVENTION_SSL,cn=nagios,dc=doa,dc=example,dc=net nagiosServices: cn=UNIVENTION_LOAD,cn=nagios,dc=doa,dc=example,dc=net nagiosServices: cn=UNIVENTION_REPLICATION,cn=nagios,dc=doa,dc=example,dc=net nagiosServices: cn=UNIVENTION_NSCD,cn=nagios,dc=doa,dc=example,dc=net nagiosServices: cn=UNIVENTION_JOINSTATUS,cn=nagios,dc=doa,dc=example,dc=net network: None service: LDAP service: NFS service: DNS service: Samba 4 reinstalloption: None unixhome: /dev/null dnsEntryZoneForward: zoneName=doa.example.net,cn=dns,dc=doa,dc=example,dc=net 10.135.3.16 instprofile: None shell: /bin/sh description: None inventoryNumber: None mac: 52:54:00:14:d1:a6 reinstalltext: None groups: cn=DC Backup Hosts,cn=groups,dc=doa,dc=example,dc=net groups: cn=DC Slave Hosts,cn=groups,dc=doa,dc=example,dc=net groups: cn=Domain Controllers,cn=groups,dc=doa,dc=example,dc=net primaryGroup: cn=DC Backup Hosts,cn=groups,dc=doa,dc=example,dc=net password: {crypt}$6$GnsVDZdjQeIWOPct$MRk77ZlA2nzm3cfCSR62OQ2QeinQTUv7xUIKl2fMSgdmsPSqTxWMOx8B3WP2hwAZ5r/Zh/StZyU7qoGmGhZRv0 reinstall: None serverRole: backup name: vp-s10 fqdn: vp-s10.doa.example.net dnsEntryZoneReverse: zoneName=3.135.10.in-addr.arpa,cn=dns,dc=doa,dc=example,dc=net 10.135.3.16 sambaRID: 1196
Created attachment 5058 [details] purge_s4_computer.py Zu Comment 6: Ja, das war debug code, ist in der angehängten Version entfernt.
Das lief besser durch, hat aber nicht alle Referenzen aus dem LDAP gelöscht. Ich gucke gerade genauer welche Objekte betroffen sind (zumindest der DNS-User sollte gelöscht werden denke ich). root@vp-s01:~/tmp/purge_s4_computer# ./purge_s4_computer.py --computername=vp-s10 Really remove vp-s10 from Samba 4? [y/N]: y If you are really sure type YES and hit enter: YES Ok, continuing as requested. Removing CN=VP-S10,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,DC=doa,DC=example,DC=net from SAM database. Removing CN=VP-S10,CN=Topology,CN=Domain System Volume,CN=DFSR-GlobalSettings,CN=System,DC=doa,DC=example,DC=net from SAM database. Removing CN=RID Set,CN=VP-S10,OU=Domain Controllers,DC=doa,DC=example,DC=net from SAM database. Removing CN=VP-S10,OU=Domain Controllers,DC=doa,DC=example,DC=net from SAM database. Really remove vp-s10 from UDM as well? [y/N]: y Removing Samba 4 computer account 'vp-s10' from Univention Directory Manager root@vp-s01:~/tmp/purge_s4_computer# udm computers/domaincontroller_backup list root@vp-s01:~/tmp/purge_s4_computer# univention-ldapsearch | grep -ni vp-s10 176:univentionSharesObject: cn=vp-s10.doa.example.net,cn=shares,dc=doa,dc=example, 635:univentionFileServer: vp-s10.doa.example.net 840:memberUid: dns-vp-s10 888:uniqueMember: uid=dns-vp-s10,cn=users,dc=doa,dc=example,dc=net 27485:# vp-s10.doa.example.net, shares, doa.example.net 27486:dn: cn=vp-s10.doa.example.net,cn=shares,dc=doa,dc=example,dc=net 27491:cn: vp-s10.doa.example.net 27493:# dns-vp-s10, users, doa.example.net 27494:dn: uid=dns-vp-s10,cn=users,dc=doa,dc=example,dc=net 27495:uid: dns-vp-s10 27496:krb5PrincipalName: dns-vp-s10@DOA.EXAMPLE.NET 27517:description: DNS Service Account for vp-s10 27526:homeDirectory: /home/dns-vp-s10
Betroffen sind folgende LDAP-Objekte: cn=default containers,cn=univention,dc=doa,dc=example,dc=net univentionSharesObject: cn=vp-s10.doa.example.net,cn=shares,dc=doa,dc=example,dc=net cn=default-settings,cn=thinclient,cn=policies,dc=doa,dc=example,dc=net niventionFileServer: vp-s10.doa.example.net cn=Domain Users,cn=groups,dc=doa,dc=example,dc=net memberUid: dns-vp-s10 uniqueMember: uid=dns-vp-s10,cn=users,dc=doa,dc=example,dc=net cn=vp-s10.doa.example.net,cn=shares,dc=doa,dc=example,dc=net objectClass: top objectClass: organizationalRole objectClass: univentionObject univentionObjectType: container/cn cn: vp-s10.doa.example.net uid=dns-vp-s10,cn=users,dc=doa,dc=example,dc=net uid: dns-vp-s10 krb5PrincipalName: dns-vp-s10@DOA.EXAMPLE.NET objectClass: top objectClass: person objectClass: univentionPWHistory objectClass: posixAccount objectClass: shadowAccount objectClass: univentionMail objectClass: sambaSamAccount objectClass: organizationalPerson objectClass: inetOrgPerson objectClass: krb5Principal objectClass: krb5KDCEntry objectClass: univentionObject uidNumber: 2091 sambaAcctFlags: [U ] sambaPasswordHistory: 363D6B65354422D2EBD14BB4646A4E0F55162137C6C426AA09E5B68B1757F434 krb5MaxLife: 86400 cn: none krb5MaxRenew: 604800 krb5KeyVersionNumber: 1 description: DNS Service Account for vp-s10 loginShell: /bin/bash univentionObjectType: users/user krb5KDCFlags: 126 displayName: none sambaSID: S-1-5-21-3276660907-1952098613-674485150-1601 gecos: none sn: none pwhistory: 0B7D160C2B017EE3CF33A6761650FCEB26A34641 homeDirectory: /home/dns-vp-s10 gidNumber: 5001 sambaPrimaryGroupSID: S-1-5-21-3276660907-1952098613-674485150-513 sambaNTPassword: 376CBF481D0499147517B9D84BBB526E krb5Key:: MB2hGzAZoAMCARehEgQQN2y/SB0EmRR1F7nYS7tSbg== krb5Key:: MDuhEzARoAMCAQOhCgQIKrrOjPv7W4miJDAioAMCAQOhGwQZRE9BLlYtUExBTkUuTkVUZG5zLXZw LXMxMA== krb5Key:: MDuhEzARoAMCAQGhCgQIKrrOjPv7W4miJDAioAMCAQOhGwQZRE9BLlYtUExBTkUuTkVUZG5zLXZw LXMxMA== userPassword: {K5KEY} sambaPwdLastSet: 1351007825
Entfernung von dns-user und share-Objekten aus UDM sind nicht primäres Ziel des Skripts. Ursprüngliches Ziel war hier, die Grundlage für einen erneuten sauberen Join zu schaffen.
Ich habe die Einträge händisch gelöscht. Ob die DNS-Einträge bei einem Re-Join Probleme gemacht hätten kann ich nicht beurteilen. Mein Ziel war es, einen kaputten Backup DC vollständig aus dem System zu entfernen. Ich denke dies sollte in Zukunft über den normalen Weg funktionieren und dieses Script dann im Hintergrund die Aufräumarbeiten machen. Aus meiner Sicht ist soweit alles ok, das Script funktioniert wie gewünscht :)
Arvid, kannst du das Skript in das nächste S4 Erratum aufnehmen? Oder spricht etwas dagegen?
Ist jetzt Teil von univention-samba4 in errata3.1-0 und ucs3.1-1. Advisory: 2013-02-07-univention-samba4.yaml
Die Berechtigungen scheinen noch nicht zu stimmen (errata): root@master501:~# /usr/share/univention-samba4/scripts/purge_s4_computer.py -bash: /usr/share/univention-samba4/scripts/purge_s4_computer.py: Permission denied root@master501:~#
Berechtigungen sind jetzt angepasst.
(In reply to comment #15) > Berechtigungen sind jetzt angepasst. OK, jetzt funktioniert es. YAML: OK Function errata: OK Changelog: OK Function 3.1-1: OK
http://errata.univention.de/3.1-errata44.html