diff -Naur a/python/samba/netcmd/gpo.py b/python/samba/netcmd/gpo.py --- a/python/samba/netcmd/gpo.py 2023-01-18 16:32:24.126552000 +0100 +++ b/python/samba/netcmd/gpo.py 2023-08-28 13:55:12.334134925 +0200 @@ -1175,7 +1175,7 @@ ] def run(self, displayname, H=None, tmpdir=None, sambaopts=None, credopts=None, - versionopts=None): + versionopts=None, tmpdir_cleanup=True): self.lp = sambaopts.get_loadparm() self.creds = credopts.get_credentials(self.lp, fallback_machine=True) @@ -1296,7 +1296,7 @@ else: self.samdb.transaction_commit() - if tmpdir is None: + if tmpdir is None and tmpdir_cleanup: # Without --tmpdir, we created one in /tmp/. It must go. shutil.rmtree(self.tmpdir) @@ -1423,7 +1423,7 @@ dtd_header += '\n]>\n' super(cmd_restore, self).run(displayname, H, tmpdir, sambaopts, - credopts, versionopts) + credopts, versionopts, False) try: # Iterate over backup files and restore with DTD @@ -1454,6 +1454,10 @@ self.samdb.modify(m) + if tmpdir is None: + # Without --tmpdir, we created one in /tmp/. It must go. + shutil.rmtree(self.tmpdir) + except Exception as e: import traceback traceback.print_exc()