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


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

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


       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  effec­
       tive 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.


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


       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 spec­


       BSD  4.3  (the  setreuid  function  call first appeared in


       getuid(2), setuid(2)