The setresuid system call sets the real, effective and saved user IDs of the current process. The analogous setresgid sets the real, effective and saved group IDs.
Privileged processes may set these IDs to arbitrary values. Unprivileged processes are restricted in that each of the new IDs must match one of the current IDs.
Passing -1 as an argument causes the corresponding value to remain unchanged.
The getresgid and getresuid calls retrieve the real, effective, and saved group and user IDs of the current process, respectively.