setresuid

NAME

setresuid, setresgid - set real, effective and saved user or group ID

SYNOPSIS

#define _GNU_SOURCE
#include <unistd.h> I int setresuid(uid_t ruid , uid_t euid , uid_t suid );
I int setresgid(gid_t rgid , gid_t egid , gid_t sgid );

DESCRIPTION

R setresuid () sets the real user ID, the effective user ID, and the saved set-user-ID of the current process. Unprivileged user processes may change the real UID, effective UID, and saved set-user-ID, each to one of: the current real UID, the current effective UID or the current saved set-user-ID. Privileged processes (on Linux, those having the CAP_SETUID capability) may set the real UID, effective UID, and saved set-user-ID to arbitrary values. If one of the parameters equals -1, the corresponding value is not changed. Regardless of what changes are made to the real UID, effective UID, and saved set-user-ID, the file system UID is always set to the same value as the (possibly new) effective UID. Completely analogously, R setresgid () sets the real GID, effective GID, and saved set-group-ID of the current process (and always modifies the file system GID to be the same as the effective GID), with the same restrictions for non-privileged processes.

RETURN VALUE

On success, zero is returned. On error, -1 is returned, and errno is set appropriately.

ERRORS

EAGAIN
uid does not match the current UID and this call would bring that user ID over its R RLIMIT_NPROC resource limit.
EPERM
The calling process is not privileged (did not have the CAP_SETUID capability) and tried to change the IDs to values that are not permitted.

VERSIONS

These calls are available under Linux since Linux 2.1.44.

CONFORMING TO

These calls are non-standard; they also appear on HP-UX and some of the BSDs.

NOTES

Under HP-UX and FreeBSD the prototype is found in R <unistd.h> . Under Linux the prototype is given by glibc since version 2.3.2 provided _GNU_SOURCE is defined.

SEE ALSO