From c5e1ff25cedc953a8a4a81b6304d6f949e916662 Mon Sep 17 00:00:00 2001 From: Aleksey Morarash Date: Tue, 15 Oct 2013 15:43:16 +0300 Subject: [PATCH] set target user groups before setuid'ing --- daemon/daemon.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/daemon/daemon.py b/daemon/daemon.py index f8be1dc..e762ea0 100644 --- a/daemon/daemon.py +++ b/daemon/daemon.py @@ -25,6 +25,8 @@ import signal import socket import atexit +import pwd +import grp class DaemonError(Exception): @@ -514,6 +516,12 @@ def change_process_owner(uid, gid): """ try: + user_struct = pwd.getpwuid(uid) + groups = [group_struct.gr_gid + for group_struct in grp.getgrall() + if user_struct.pw_name in group_struct.gr_mem] + groups.append(user_struct.pw_gid) + os.setgroups(groups) os.setgid(gid) os.setuid(uid) except Exception, exc: