NAME

     setreuid, seteuid - set real and / or effective user ID


SYNOPSIS

     #include <unistd.h>

     int setreuid(uid_t ruid, uid_t euid));
     int seteuid(uid_t euid));


DESCRIPTION

     setreuid sets real and effective user ID's  of  the  current
     process.  Un-privileged users may change the real user ID to
     the effective user ID and vice-versa.

     Prior to Linux 1.1.37, the saved ID paradigm, when used with
     setreuid or seteuid was broken.

     Starting at 1.1.37, it is also possible to set the effective
     user ID from the saved user ID.

     Only the super-user may make other changes.

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

     Currently  seteuid(euid))  is  functionally   equivalent   to
     setreuid(-1, euid)).

     If the real user ID is changed 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.


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 ID with the
          real user ID or (ii) setting one to the  value  of  the
          other  or  (iii)  setting  the effective user ID to the
          value of the saved user ID was specified.


CONFORMING TO

     BSD 4.3  (the  setreuid  function  call  first  appeared  in
     4.2BSD.)


SEE ALSO

     getuid(2), setuid(2)