seteuid(2)




NAME

     setuid, setegid, seteuid, setgid - set user and group IDs


SYNOPSIS

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

     int setuid(uid_t uid);

     int setegid(gid_t egid);

     int seteuid(uid_t euid);

     int setgid(gid_t gid);


DESCRIPTION

     The setuid() function sets the real user ID, effective  user
     ID,  and  saved user ID of the calling process. The setgid()
     function sets the real group ID,  effective  group  ID,  and
     saved  group  ID  of  the calling process. The setegid() and
     seteuid() functions set the effective  group  and  user  IDs
     respectively  for the calling process. See intro(2) for more
     information on real, effective, and  saved  user  and  group
     IDs.

     At login time, the real user  ID,  effective  user  ID,  and
     saved  user  ID of the login process are set to the login ID
     of the user responsible for the creation of the process. The
     same  is  true for the real, effective, and saved group IDs;
     they are set to the group ID of the user responsible for the
     creation of the process.

     When a process calls one of the  exec  family  of  functions
     (see  exec(2))  to execute a file (program), the user and/or
     group identifiers associated with the process can change. If
     the  file  executed is a set-user-ID file, the effective and
     saved user IDs of the process are set to the  owner  of  the
     file  executed. If the file executed is a set-group-ID file,
     the effective and saved group IDs of the process are set  to
     the  group of the file executed. If the file executed is not
     a set-user-ID or set-group-ID file, the effective  user  ID,
     saved  user  ID,  effective group ID, and saved group ID are
     not changed.

     If the effective user ID of the process calling setuid()  is
     the  super-user, the real, effective, and saved user IDs are
     set to the uid argument.

     If the effective user ID of the calling process is  not  the
     super-user,  but uid is either the real user ID or the saved
     user ID of the calling process, the effective user ID is set
     to uid.
     If the effective user ID of the process calling setgid()  is
     the super-user, the real, effective, and saved group IDs are
     set to the gid argument.

     If the effective user ID of the calling process is  not  the
     super-user, but gid is either the real group ID or the saved
     group ID of the calling process, the effective group  ID  is
     set to gid.


RETURN VALUES

     Upon successful completion, 0 is returned. Otherwise, -1  is
     returned and errno is set to indicate the error.


ERRORS

     The setuid() and setgid() functions will fail if:

     EINVAL
           The value of uid or gid is out of range.

     EPERM For setuid() and seteuid() the effective user  of  the
           calling  process  is not super-user, and the uid argu-
           ment does not match either the real or saved user IDs.
           For  setgid()  and setegid() the effective user of the
           calling process is not the  super-user,  and  the  gid
           argument does not match either the real or saved group
           IDs.


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
   |        ATTRIBUTE TYPE       |        ATTRIBUTE VALUE      |
   | ____________________________|_____________________________|_
   |  MT-Level                   |  setuid() and  setgid()  and|
   |                             |  Async-Signal-Safe          |
   |_____________________________|_____________________________|


SEE ALSO

     intro(2),  exec(2),  getgroups(2),  getuid(2),  stat(3HEAD),
     attributes(5)


Man(1) output converted with man2html