50: def asuser(new_uid=nil, new_gid=nil)
51: return yield if Puppet.features.microsoft_windows? or !root?
52:
53:
54: old_uid, old_gid = self.uid, self.gid
55: old_euid, old_egid = self.euid, self.egid
56: old_groups = self.groups
57: begin
58: self.egid = convert_xid :gid, new_gid if new_gid
59: self.initgroups(convert_xid(:uid, new_uid)) if new_uid
60: self.euid = convert_xid :uid, new_uid if new_uid
61:
62: yield
63: ensure
64: self.euid, self.egid = old_euid, old_egid
65: self.groups = old_groups
66: end
67: end