![]() |
![]() |
![]() |
Set the real, effective and saved user IDs
#include <unistd.h> int setuid( uid_t uid );
libc
The setuid() function allows the calling process to set the real, effective and saved user IDs based on the following:
![]() |
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-UID. |
If you wish to change only the effective user ID, even if you have appropriate privileges, you should consider using the seteuid() function.
The "superuser" is defined as any process with an effective user ID of 0, or an effective user ID of root.
0 for success, or -1 if an error occurs (errno is set).
/* * This process sets its userid to 0 (root) */ #include <stdio.h> #include <sys/types.h> #include <unistd.h> #include <stdlib.h> int main( void ) { uid_t ouid; ouid = getuid(); if( setuid( 0 ) == -1 ) { perror( "setuid" ); return EXIT_FAILURE; } printf( "userid %d switched to 0\n", ouid ); return EXIT_SUCCESS; }
Safety: | |
---|---|
Cancellation point | No |
Interrupt handler | No |
Signal handler | Yes |
Thread | Yes |
errno, setegid(), seteuid(), setgid()
![]() |
![]() |
![]() |