# File lib/boxgrinder-build/util/permissions/user-switcher.rb, line 24 def UserSwitcher.change_user(u, g, &blk) prev_u, prev_g = Process.uid, Process.gid set_user(u, g) blk.call set_user(prev_u, prev_g) end
Working around bugs.… we can rely on the saved id to be able to sneak back to the previous user later.
# File lib/boxgrinder-build/util/permissions/user-switcher.rb, line 35 def UserSwitcher.set_user(u, g) return if Process.uid == u && Process.gid == g # If already set to the given value Process.egid, Process.gid = g, g Process.euid, Process.uid = u, u end