d8cf22
From 6302769b83af75f267c76fe6f854d5b42b6b80f5 Mon Sep 17 00:00:00 2001
d8cf22
From: Florence Blanc-Renaud <flo@redhat.com>
d8cf22
Date: Oct 21 2021 19:58:19 +0000
d8cf22
Subject: ipa-server-install uninstall: remove tdb files
d8cf22
d8cf22
d8cf22
ipa-server-install uninstaller must remove samba *.tdb files
d8cf22
in /var/lib/samba, /var/lib/samba/private and /var/lib/samba/lock.
d8cf22
The current code calls rm on the relative path filename
d8cf22
instead of building an absolute path filename,
d8cf22
resulting in failure to remove the tdb files.
d8cf22
d8cf22
Related: https://pagure.io/freeipa/issue/8687
d8cf22
Signed-off-by: Florence Blanc-Renaud <flo@redhat.com>
d8cf22
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
d8cf22
d8cf22
---
d8cf22
d8cf22
diff --git a/ipaserver/install/adtrustinstance.py b/ipaserver/install/adtrustinstance.py
d8cf22
index 24e90f3..e034fab 100644
d8cf22
--- a/ipaserver/install/adtrustinstance.py
d8cf22
+++ b/ipaserver/install/adtrustinstance.py
d8cf22
@@ -918,11 +918,18 @@ class ADTRUSTInstance(service.Service):
d8cf22
         ipautil.remove_file(self.smb_conf)
d8cf22
 
d8cf22
         # Remove samba's persistent and temporary tdb files
d8cf22
-        if os.path.isdir(paths.SAMBA_DIR):
d8cf22
-            tdb_files = [tdb_file for tdb_file in os.listdir(paths.SAMBA_DIR)
d8cf22
-                         if tdb_file.endswith(".tdb")]
d8cf22
-            for tdb_file in tdb_files:
d8cf22
-                ipautil.remove_file(tdb_file)
d8cf22
+        # in /var/lib/samba and /var/lib/samba/private
d8cf22
+        for smbpath in (paths.SAMBA_DIR,
d8cf22
+                        os.path.join(paths.SAMBA_DIR, "private"),
d8cf22
+                        os.path.join(paths.SAMBA_DIR, "lock")):
d8cf22
+            if os.path.isdir(smbpath):
d8cf22
+                tdb_files = [
d8cf22
+                    os.path.join(smbpath, tdb_file)
d8cf22
+                    for tdb_file in os.listdir(smbpath)
d8cf22
+                    if tdb_file.endswith(".tdb")
d8cf22
+                ]
d8cf22
+                for tdb_file in tdb_files:
d8cf22
+                    ipautil.remove_file(tdb_file)
d8cf22
 
d8cf22
         # Remove our keys from samba's keytab
d8cf22
         self.clean_samba_keytab()
d8cf22
d8cf22
From 82eaa2eac454aed75a498d2c6ccd9e921f9c8a89 Mon Sep 17 00:00:00 2001
d8cf22
From: Florence Blanc-Renaud <flo@redhat.com>
d8cf22
Date: Oct 21 2021 19:58:19 +0000
d8cf22
Subject: ipa-client-samba uninstall: remove tdb files
d8cf22
d8cf22
d8cf22
ipa-client-samba uninstaller must remove samba *.tdb files
d8cf22
in /var/lib/samba, /var/lib/samba/private and /var/lib/samba/lock.
d8cf22
The current code calls rm on the relative path filename
d8cf22
instead of building an absolute path filename,
d8cf22
resulting in failure to remove the tdb files.
d8cf22
d8cf22
Fixes: https://pagure.io/freeipa/issue/8687
d8cf22
Signed-off-by: Florence Blanc-Renaud <flo@redhat.com>
d8cf22
Reviewed-By: Alexander Bokovoy <abokovoy@redhat.com>
d8cf22
d8cf22
---
d8cf22
d8cf22
diff --git a/ipaclient/install/ipa_client_samba.py b/ipaclient/install/ipa_client_samba.py
d8cf22
index fd89e59..222ff31 100755
d8cf22
--- a/ipaclient/install/ipa_client_samba.py
d8cf22
+++ b/ipaclient/install/ipa_client_samba.py
d8cf22
@@ -446,13 +446,17 @@ def uninstall(fstore, statestore, options):
d8cf22
         fstore.restore_file(paths.SMB_CONF)
d8cf22
 
d8cf22
     # Remove samba's persistent and temporary tdb files
d8cf22
-    tdb_files = [
d8cf22
-        tdb_file
d8cf22
-        for tdb_file in os.listdir(paths.SAMBA_DIR)
d8cf22
-        if tdb_file.endswith(".tdb")
d8cf22
-    ]
d8cf22
-    for tdb_file in tdb_files:
d8cf22
-        ipautil.remove_file(tdb_file)
d8cf22
+    # in /var/lib/samba and /var/lib/samba/private
d8cf22
+    for smbpath in (paths.SAMBA_DIR,
d8cf22
+                    os.path.join(paths.SAMBA_DIR, "private"),
d8cf22
+                    os.path.join(paths.SAMBA_DIR, "lock")):
d8cf22
+        tdb_files = [
d8cf22
+            os.path.join(smbpath, tdb_file)
d8cf22
+            for tdb_file in os.listdir(smbpath)
d8cf22
+            if tdb_file.endswith(".tdb")
d8cf22
+        ]
d8cf22
+        for tdb_file in tdb_files:
d8cf22
+            ipautil.remove_file(tdb_file)
d8cf22
 
d8cf22
     # Remove our keys from samba's keytab
d8cf22
     if os.path.exists(paths.SAMBA_KEYTAB):
d8cf22