![]() Chapter Contents |
![]() Previous |
![]() Next |
| setregid |
| Portability: | UNIX compatible |
| SYNOPSIS | |
| DESCRIPTION | |
| RETURN VALUE | |
| USAGE NOTES | |
| EXAMPLE | |
| RELATED FUNCTIONS |
| SYNOPSIS |
#include <sys/types.h>
#include <unistd.h>
int setregid(gid_t realgid,
gid_t effgid);
| DESCRIPTION |
The
setregid
function is used to set the real and/or the effective group ids for
the calling process. A superuser or daemon process has the ability to set
any valid group id. Other processes are limited in their use of
setregid
.
Note: See the IBM UNIX System Services Assembler Callable Services publication, SC28-2899, for more
information on the use of
setregid
by unprivileged processes. ![[cautionend]](../common/images/cautend.gif)
The
realgid
argument
to
setregid
specifies the
new real group id. If
realgid
is specified as
-1
,
the real group id is unchanged. The
effgid
argument to
setregid
specifies the new effective group id. If
effgid
is specified as
-1
, the effective group id is unchanged.
| RETURN VALUE |
setregid
returns
0
if successful,
or
-1
if unsuccessful.
| USAGE NOTES |
The
setregid
function can only be used with MVS 5.2.2 or a later release.
| EXAMPLE |
This example is compiled using
sascc370 -Krent -o
. This program demonstrates the use of the UNIX System
Services functions
setregid()
and
setreuid()
.
/*---------------------------------------+
| POSIX/UNIX header files |
+---------------------------------------*/
#include <sys/types.h>
#include <unistd.h>
/*---------------------------------------+
| ISO/ANSI header files |
+---------------------------------------*/
#include <stdlib.h>
#include <stdio.h>
#include <errno.h>
/*---------------------------------------+
| Name: main |
| Returns: exit(EXIT_SUCCESS) or |
| exit(EXIT_FAILURE) |
+---------------------------------------*/
int main()
{
/* generic return code */
int rc;
/* real group ID of calling process */
gid_t rgid;
/* effective group ID of calling process */
gid_t egid;
/* real user ID of calling process */
uid_t ruid;
/* effective user ID of calling process */
uid_t euid;
/*----------------------------------------------*/
/* Get the real and effective group and user */
/* ids for this process. */
/*----------------------------------------------*/
printf("\nGet the Real and Effective
Group and User IDs\n");
/* get real group ID */
rgid = getgid();
/* get effective group ID */
egid = getegid();
/* get real user ID */
ruid = getuid();
/* get effective user ID */
euid = geteuid();
printf(" The real group id is: %d\n",
(int)rgid);
printf("The effective group id is: %d\n",
(int)egid);
printf(" The real user id is: %d\n",
(int)ruid);
printf(" The effective user id is: %d\n",
(int)euid);
/*-----------------------------------------------*/
/* Set the real and effective group id for this */
/* process. */
/*-----------------------------------------------*/
printf("\nSetting the Real and Effective Group ID\n");
errno = 0;
egid = rgid;
/* -1 implies use current real group id (nochg) */
rgid = (gid_t)-1;
rc = setregid(rgid, egid);
/* Test for Error */
if (rc == -1)
{
perror("Call to setregid failed");
exit(EXIT_FAILURE);
}
/*--------------------------------------------*/
/* Set the real and effective user id for */
/* this process. */
/*--------------------------------------------*/
printf("\nSetting the Real and
Effective User ID\n");
errno = 0;
euid = ruid;
/* -1 implies use current real user id (nochg) */
ruid = (gid_t)-1;
rc = setreuid(ruid, euid);
/* Test for Error */
if (rc == -1)
{
perror("Call to setreuid failed");
exit(EXIT_FAILURE);
}
/*-----------------------------------------*/
/* Get the real and effective group and */
/* user ids */
/*-----------------------------------------*/
printf("\nThe Real and Effective
Group and User IDs are now!\n");
/* get real group ID */
rgid = getgid();
/* get effective group ID */
egid = getegid();
/* get real user ID */
ruid = getuid();
/* get effective user ID */
euid = geteuid();
printf(" The real group id is: %d\n",
(int)rgid);
printf("The effective group id is: %d\n",
(int)egid);
printf(" The real user id is: %d\n",
(int)ruid);
printf(" The effective user id is: %d\n",
(int)euid);
exit(EXIT_SUCCESS);
} /* end of main() */
| RELATED FUNCTIONS |
getegid
,
getgid
,
setegid
,
setgid
![]() Chapter Contents |
![]() Previous |
![]() Next |
![]() Top of Page |
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.