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

Name

setregid - set real and effective group IDs

Synopsis

#include <unistd.h>

int setregid(gid_t rgid, gid_t egid);

Description

setregid() is used to set the real and effective group ID s of the calling process. If rgid is -1, the real GID is not changed; if egid is -1, the effective GID is not changed. The real and effective GID 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 GID and the effective GID can be set to any legal value.

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

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

Return Values

setregid() returns:

  1. on success.
    -1
    on failure and sets errno to indicate the error.

    Errors

    setregid() will fail and neither of the group ID s will be changed if:

    EINVAL
    The value of rgid or egid is less than 0 or greater than USHRT_MAX (defined in <limits.h>).
    EPERM
    The calling process’ effective UID is not the super-user and a change other than changing the real GID to the saved setGID , or changing the effective GID to the real GID or the saved GID , was specified.

    See Also

    execve(2) , getgid(2) , setreuid(2) , setuid(2) ,


    Table of Contents