[PATCH] Fix demote of a Windows AD DC

Tim Beale timbeale at catalyst.net.nz
Tue Jun 26 04:42:15 UTC 2018


Hi,

The attached patch fixed up a problem I noticed while testing the
backup/restore tool against a Windows VM DC. Windows has an extra
'CN=DNS Settings' child object underneath the Server object that Samba
doesn't have. This was causing the removal of the server object in the
demote/remove_dc code to fail.

This should hopefully fix the problem reported on the samba mailing list:
https://lists.samba.org/archive/samba/2018-June/216572.html

CI tests link (in progress).
https://gitlab.com/catalyst-samba/samba/pipelines/24561455

Review appreciated.

Thanks,
Tim

-------------- next part --------------
From 657f5902a88859fb2e10e4d450778718af9d4c05 Mon Sep 17 00:00:00 2001
From: Tim Beale <timbeale at catalyst.net.nz>
Date: Fri, 15 Jun 2018 11:54:37 +1200
Subject: [PATCH] remove_dc: Fix removal of an old Windows DC

Windows has 'CN=DNS Settings' child object underneath the Server object.
This was causing the removal of the server object in remove_dc() to
fail.

Noticed this problem while testing the backup/restore tool manually
against a Windows VM.

Signed-off-by: Tim Beale <timbeale at catalyst.net.nz>
---
 python/samba/remove_dc.py | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/python/samba/remove_dc.py b/python/samba/remove_dc.py
index b9726f5..d190461 100644
--- a/python/samba/remove_dc.py
+++ b/python/samba/remove_dc.py
@@ -240,8 +240,9 @@ def offline_remove_server(samdb, logger,
         dnsHostName = None
 
     if remove_server_obj:
-        # Remove the server DN
-        samdb.delete(server_dn)
+        # Remove the server DN (do a tree-delete as it could still have a
+        # 'DNS Settings' child object if it's a Windows DC)
+        samdb.delete(server_dn, ["tree_delete:0"])
 
     if computer_dn is not None:
         computer_msgs = samdb.search(base=computer_dn,
-- 
2.7.4



More information about the samba-technical mailing list