setresuid (2)





NAME

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


SYNOPSIS

       #include <unistd.h>

       int setresuid(uid_t ruid, uid_t euid, uid_t suid);
       int setresgid(gid_t rgid, gid_t egid, gid_t sgid);


DESCRIPTION

       setresuid  sets  the real user ID, the effective user ID, and the saved
       set-user-ID of the current process.

       Unprivileged user processes (i.e., processes with each of real,  effec-
       tive  and  saved  user  ID  nonzero) may change the real, effective and
       saved user ID, each to one of: the current uid, the  current  effective
       uid or the current saved uid.

       The  super-user  may set real, effective and saved user ID to arbitrary
       values.

       If one of the parameters equals -1,  the  corresponding  value  is  not
       changed.

       Completely  analogously,  setresgid  sets the real, effective and saved
       group ID's of the current process, with the same restrictions for  pro-
       cesses with each of real, effective and saved user ID nonzero.


RETURN VALUE

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


ERRORS

       EPERM  The current process was not privileged and tried to  change  the
              IDs is a not allowed way.


CONFORMING TO

       This call is nonstandard.


HISTORY

       This  system call was first introduced in HP-UX.  It is available under
       Linux since Linux 2.1.44.  These days it is also found in FreeBSD  (for
       emulation of Linux binaries).


NOTES

       Under  HP-UX  and  FreeBSD the prototype is found in <unistd.h>.  Under
       Linux there is so far no include file giving the prototype - this is  a
       glibc bug. Programs using this system call must add the prototype them-
       selves.


SEE ALSO

       getuid(2), setuid(2), setreuid(2), getresuid(2)