os.setgid(gid)
if groups:
os.setgroups(groups)
elif uid:
import grp, pwd
username = pwd.getpwuid(uid).pw_name
pgroups = [g.gr_name for g in grp.getgrall() if username in g.gr_mem]
os.setgroups(pgroups)
if uid:
os.setuid(uid)
if umask: