setreuid,  setregid  -  set  real and/or effective user or
       group ID


SYNOPSIS

       #include <sys/types.h>
       #include <unistd.h>

       int setreuid(uid_t ruid, uid_t euid);
       int setregid(gid_t rgid, gid_t egid);


DESCRIPTION

       setreuid sets real and effective user IDs of  the  current
       process.  Unprivileged users may only set the real user ID
       to the real user ID or the effective user ID, and may only
       set  the effective user ID to the real user ID, the effec­
       tive user ID or the saved user ID.

       Supplying a value of -1 for either the real  or  effective
       user ID forces the system to leave that ID unchanged.

       If the real user ID is set or the effective user ID is set
       to a value not equal to the previous  real  user  ID,  the
       saved user ID will be set to the new effective user ID.

       Completely  analogously,  setregid sets real and effective
       group ID's of the current process, and all  of  the  above
       holds with "group" instead of "user".


RETURN VALUE

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


ERRORS

       EPERM  The current  process  is  not  the  super-user  and
              changes  other than (i) swapping the effective user
              (group) ID with the real user (group) ID,  or  (ii)
              setting one to the value of the other or (iii) set­
              ting the effective user (group) ID to the value  of
              the saved user (group) ID was specified.


NOTES

       Setting the effective user (group) ID to the saved user ID
       is possible since Linux 1.1.37 (1.1.38).


CONFORMING TO

       BSD 4.3 (the setreuid and setregid  function  calls  first
       appeared in 4.2BSD).


SEE ALSO

       getuid(2),  getgid(2),  setuid(2),  setgid(2), seteuid(2),
       setresuid(2)


Man(1) output converted with man2html