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