class BoxGrinder::UserSwitcher

Public Class Methods

change_user(u, g, &blk) click to toggle source
# 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

Private Class Methods

set_user(u, g) click to toggle source

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