#include <sys/types.h> #include <unistd.h> int setuid(uid_t userID);
setuid
changes the effective user ID
(and possibly the real user ID) of the current process to the ID
specified by userID
. If uid
is the
process' real user ID, setuid
sets the
process' effective user ID. If userID
is not the process'
real user ID,
setuid
is allowed to
proceed only if the calling process is
a superuser process,
in which case it sets all of the real user ID, effective
user ID and saved set user ID as specified.
setuid
returns a 0
if successful and
a -1
if not successful.
setuid
to
set the effective user ID to the real user ID:
#include <unistd.h> #include <stdio.h> #include <sys/types.h> main() { uid_t realUID, effectiveUID; realUID = getuid(); effectiveUID = geteuid(); printf("Real user ID = %dn", (int) realUID); printf("Effective user ID = %dn", (int) effectiveUID); if (realUID != effectiveUID) { if (setuid(realUID) != 0) perror("setuid() error"); else printf("Effective user ID changed to %d.n", (int) realUID); } }
geteuid
, getuid
, seteuid
, setgid
Copyright (c) 1998 SAS Institute Inc. Cary, NC, USA. All rights reserved.