# File lib/puppet/util/suidmanager.rb, line 24 24: def asuser(new_uid=nil, new_gid=nil) 25: return yield unless Process.uid == 0 26: # We set both because some programs like to drop privs, i.e. bash. 27: old_uid, old_gid = self.uid, self.gid 28: old_euid, old_egid = self.euid, self.egid 29: begin 30: self.egid = convert_xid :gid, new_gid if new_gid 31: self.euid = convert_xid :uid, new_uid if new_uid 32: 33: yield 34: ensure 35: self.euid, self.egid = old_euid, old_egid 36: end 37: end