[Go to CFHT Home Page] Man Pages
Back to Software Index  BORDER=0Manpage Top Level
    setreuid(2) manual page Table of Contents

Name

setreuid - set real and effective user IDs

Synopsis

#include <unistd.h>

int setreuid(uid_t ruid, uid_t euid);

Description

setreuid() is used to set the real and effective user ID s of the calling process. If ruid is -1, the real user ID is not changed; if euid is -1, the effective user ID is not changed. The real and effective user ID s may be set to different values in the same call.

If the effective user ID of the calling process is super-user, the real user ID and the effective user ID can be set to any legal value.

If the effective user ID of the calling process is not super-user, either the real user ID can be set to the effective user ID , or the effective user ID can either be set to the saved set-user ID from execve(2) or the real user ID . Note: if a set-UID process sets its effective user ID to its real user ID , it can still set its effective user ID back to the saved set-user ID .

In either case, if the real user ID is being changed (that is, if ruid is not -1), or the effective user ID is being changed to a value not equal to the real user ID , the saved set-user ID is set equal to the new effective user ID .

Return Values

setreuid() returns:
  1. on success.
    -1
    on failure and sets errno to indicate the error.

    Errors

    setreuid() will fail and neither of the user ID s will be changed if:
    EINVAL
    The value of ruid or euid is less than 0 or greater than USHRT_MAX (defined in <limits.h>).
    EPERM
    The calling process’ effective user ID is not the super-user and a change other than changing the real user ID to the effective user ID , or changing the effective user ID to the real user ID or the saved set-user ID , was specified.

    See Also

    execve(2) , getuid(2) , setregid(2) , setuid(2)


    Table of Contents