|  | @@ -330,6 +330,14 @@ def parse_gid(gid):
 | 
	
		
			
				|  |  |          raise
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | +def setgroups(uid):
 | 
	
		
			
				|  |  | +    if grp and pwd:
 | 
	
		
			
				|  |  | +        user_name = pwd.getpwuid(uid)[0]
 | 
	
		
			
				|  |  | +        user_groups = [gr.gr_gid for gr in grp.getgrall()
 | 
	
		
			
				|  |  | +                                                if user_name in gr.gr_mem]
 | 
	
		
			
				|  |  | +        os.setgroups(user_groups)
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  |  def setegid(gid):
 | 
	
		
			
				|  |  |      """Set effective group id."""
 | 
	
		
			
				|  |  |      gid = parse_gid(gid)
 | 
	
	
		
			
				|  | @@ -363,6 +371,7 @@ def set_effective_user(uid=None, gid=None):
 | 
	
		
			
				|  |  |          if not gid and pwd:
 | 
	
		
			
				|  |  |              gid = pwd.getpwuid(uid).pw_gid
 | 
	
		
			
				|  |  |          setegid(gid)
 | 
	
		
			
				|  |  | +        setgroups(uid)
 | 
	
		
			
				|  |  |          seteuid(uid)
 | 
	
		
			
				|  |  |      else:
 | 
	
		
			
				|  |  |          gid and setegid(gid)
 |