do_setresgid(9) [netbsd man page]
DO_SETRESUID(9) BSD Kernel Developer's Manual DO_SETRESUID(9) NAME
do_setresuid, do_setresgid -- set process uid and gid SYNOPSIS
#include <sys/ucred.h> int do_setresuid(struct lwp *lwp, uid_t ruid, uid_t euid, uid_t svuid, u_int flags); int do_setresgid(struct lwp *lwp, uid_t ruid, uid_t euid, uid_t svuid, u_int flags); DESCRIPTION
The do_setresuid and do_setresgid functions are used to implement the various system calls that allow a process to change its real, effec- tive, and saved uid and gid values. The do_setresuid function sets the specified processes real user ID to ruid, its effective user ID to euid, and its saved user ID to svuid. If any of the uid arguments are -1 then that assignment is skipped. If suser() is true, then any values may be assigned, otherwise the new uid values must match one of the existing values and the caller must have set the relevant bit in flags. The flags argument specifies which of the existing uid values the new value must match. It should be set to a logical OR of ID_{R,E,S}_EQ_{R,E,S}, where ID_E_EQ_R means that it is valid to set the effective ID to the current value of the real ID. The do_setresgid function sets the group IDs but otherwise behaves in the same manner as do_setresuid. The processes group list is neither examined nor effected. SEE ALSO
setregid(2), setreuid(2), setuid(2), suser(9) CODE REFERENCES
These functions are implemented in: sys/kern/kern_prot.c. HISTORY
Implemented for NetBSD 2.0 to replace ad-hoc code in each system call routine and in the various compat modules. BSD
September 28, 2003 BSD
Check Out this Related Man Page
setuid(3) Library Functions Manual setuid(3) Name setuid, seteuid, setruid, setgid, setegid, setrgid - set user and group ID Syntax #include <sys/types.h> #include <unistd.h> setuid(uid) uid_t uid; seteuid(euid) uid_t euid; setruid(ruid) uid_t ruid; setgid(gid) gid_t gid; setegid(egid) gid_t egid; setrgid(rgid) gid_t rgid; Description The subroutine sets both the real and effective user ID of the current process to the ID specified. Likewise, the subroutine sets the real and effective group ID of the current process to the ID specified. The subroutine sets the effective user ID of the current process, while the subroutine sets the effective group ID of the current process. The subroutine sets the real user ID of the current process, while the subroutine sets the real group ID of the current process. These calls are only permitted to the super-user or if the argument is the real or effective ID. Environment POSIX SYSTEM_FIVE When your program is compiled in POSIX or System V mode the following semantics apply when using the or functions: If the process is the super-user the real, effective, and saved set (as described in user/group ID are set to uid. If the process is not the super-user, but uid is equal to the real or the saved set user/group ID, the effective user/group ID is set to uid. The real and saved set user/group ID remain unchanged. POSIX In POSIX mode, the function returns a value of type uid_t. The function returns a value of type gid_t. Return Values Zero is returned if the user ID or group ID is set; -1 is returned otherwise. See Also setreuid(2), setregid(2), getuid(2), getgid(2) setuid(3)