5
/* set effective user and group attributes
7
/* #include <set_eugid.h>
9
/* void set_eugid(euid, egid)
13
/* set_eugid() sets the effective user and group process attributes
14
/* and updates the process group access list to be just the specified
15
/* effective group id.
17
/* All system call errors are fatal.
19
/* seteuid(2), setegid(2), setgroups(2)
23
/* The Secure Mailer license must be distributed with this software.
26
/* IBM T.J. Watson Research
28
/* Yorktown Heights, NY 10598, USA
38
/* Utility library. */
41
#include "set_eugid.h"
43
/* set_eugid - set effective user and group attributes */
45
void set_eugid(uid_t euid, gid_t egid)
47
int saved_errno = errno;
51
msg_fatal("set_eugid: seteuid(0): %m");
52
if (setegid(egid) < 0)
53
msg_fatal("set_eugid: setegid(%ld): %m", (long) egid);
54
if (setgroups(1, &egid) < 0)
55
msg_fatal("set_eugid: setgroups(%ld): %m", (long) egid);
56
if (euid != 0 && seteuid(euid) < 0)
57
msg_fatal("set_eugid: seteuid(%ld): %m", (long) euid);
59
msg_info("set_eugid: euid %ld egid %ld", (long) euid, (long) egid);