Switch the effective and real user IDs of the current process. If a
block is given, the user IDs will be switched back after the block
is executed. Returns the new effective user ID if called without a block,
and the return value of the block if one is given.