|
|
f65af0 |
From da98cbda7b61792d956b21f0a9999d91894ae194 Mon Sep 17 00:00:00 2001
|
|
|
f65af0 |
From: Florence Blanc-Renaud <flo@redhat.com>
|
|
|
f65af0 |
Date: Tue, 21 Aug 2018 17:55:45 +0200
|
|
|
f65af0 |
Subject: [PATCH] uninstall -v: remove Tracebacks
|
|
|
f65af0 |
|
|
|
f65af0 |
ipa-server-install --uninstall -v -U prints Traceback in its log file.
|
|
|
f65af0 |
This issue happens because it calls subprocess.Popen with close_fds=True
|
|
|
f65af0 |
(which closes all file descriptors in the child process)
|
|
|
f65af0 |
but it is trying to use the file logger in the child process
|
|
|
f65af0 |
(preexec_fn is called in the child just before the child is executed).
|
|
|
f65af0 |
The fix is using the logger only in the parent process.
|
|
|
f65af0 |
|
|
|
f65af0 |
Fixes: https://pagure.io/freeipa/issue/7681
|
|
|
f65af0 |
Reviewed-By: Rob Crittenden <rcritten@redhat.com>
|
|
|
f65af0 |
---
|
|
|
f65af0 |
ipapython/ipautil.py | 23 ++++++++++++-----------
|
|
|
f65af0 |
1 file changed, 12 insertions(+), 11 deletions(-)
|
|
|
f65af0 |
|
|
|
f65af0 |
diff --git a/ipapython/ipautil.py b/ipapython/ipautil.py
|
|
|
f65af0 |
index 0de5fe86374429bfb9666a0d257e079883a1c56b..42329ad7c1677ad16c8d3275d79666005571cbc7 100644
|
|
|
f65af0 |
--- a/ipapython/ipautil.py
|
|
|
f65af0 |
+++ b/ipapython/ipautil.py
|
|
|
f65af0 |
@@ -481,20 +481,21 @@ def run(args, stdin=None, raiseonerr=True, nolog=(), env=None,
|
|
|
f65af0 |
logger.debug('Starting external process')
|
|
|
f65af0 |
logger.debug('args=%s', arg_string)
|
|
|
f65af0 |
|
|
|
f65af0 |
- def preexec_fn():
|
|
|
f65af0 |
- if runas is not None:
|
|
|
f65af0 |
- pent = pwd.getpwnam(runas)
|
|
|
f65af0 |
+ if runas is not None:
|
|
|
f65af0 |
+ pent = pwd.getpwnam(runas)
|
|
|
f65af0 |
|
|
|
f65af0 |
- suplementary_gids = [
|
|
|
f65af0 |
- grp.getgrnam(sgroup).gr_gid for sgroup in suplementary_groups
|
|
|
f65af0 |
- ]
|
|
|
f65af0 |
+ suplementary_gids = [
|
|
|
f65af0 |
+ grp.getgrnam(sgroup).gr_gid for sgroup in suplementary_groups
|
|
|
f65af0 |
+ ]
|
|
|
f65af0 |
|
|
|
f65af0 |
- logger.debug('runas=%s (UID %d, GID %s)', runas,
|
|
|
f65af0 |
- pent.pw_uid, pent.pw_gid)
|
|
|
f65af0 |
- if suplementary_groups:
|
|
|
f65af0 |
- for group, gid in zip(suplementary_groups, suplementary_gids):
|
|
|
f65af0 |
- logger.debug('suplementary_group=%s (GID %d)', group, gid)
|
|
|
f65af0 |
+ logger.debug('runas=%s (UID %d, GID %s)', runas,
|
|
|
f65af0 |
+ pent.pw_uid, pent.pw_gid)
|
|
|
f65af0 |
+ if suplementary_groups:
|
|
|
f65af0 |
+ for group, gid in zip(suplementary_groups, suplementary_gids):
|
|
|
f65af0 |
+ logger.debug('suplementary_group=%s (GID %d)', group, gid)
|
|
|
f65af0 |
|
|
|
f65af0 |
+ def preexec_fn():
|
|
|
f65af0 |
+ if runas is not None:
|
|
|
f65af0 |
os.setgroups(suplementary_gids)
|
|
|
f65af0 |
os.setregid(pent.pw_gid, pent.pw_gid)
|
|
|
f65af0 |
os.setreuid(pent.pw_uid, pent.pw_uid)
|
|
|
f65af0 |
--
|
|
|
f65af0 |
2.17.1
|
|
|
f65af0 |
|