Warning: main(/www/www/htdocs/style/globals.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/s/setuid.html on line 1
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/globals.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/s/setuid.html on line 1
Warning: main(/www/www/htdocs/style/header.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/s/setuid.html on line 8
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/header.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/s/setuid.html on line 8
Set the real, effective and saved user IDs
#include <unistd.h>
int setuid( uid_t uid );
- uid
- The user ID that you want to use for the process.
libc
Use the -l c option to
qcc
to link against this library.
This library is usually included automatically.
The setuid() function lets the calling process set the
real, effective and saved user IDs based on the following:
- If the process is the superuser, setuid()
sets the real user ID, effective user ID and saved user ID to
uid.
- If the process isn't the superuser, but
uid is equal to the real user ID or saved set-user ID,
setuid() sets the
effective user ID to uid; the real and saved user IDs aren't
changed.
|
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, and even if you are the
superuser, 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).
- EINVAL
- The value of uid is out of range.
- EPERM
- The process isn't the superuser, and uid
doesn't match the real user ID or saved set-user ID.
/*
* 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;
}
POSIX 1003.1
Safety: | |
Cancellation point |
No |
Interrupt handler |
No |
Signal handler |
Yes |
Thread |
Yes |
errno,
getuid(),
setegid(),
seteuid(),
setgid()
Warning: main(/www/www/htdocs/style/footer.php) [function.main]: failed to open stream: No such file or directory in /www/www/docs/6.4.1/neutrino/lib_ref/s/setuid.html on line 191
Warning: main() [function.include]: Failed opening '/www/www/htdocs/style/footer.php' for inclusion (include_path='.:/www/www/common:/www/www/php/lib/php') in /www/www/docs/6.4.1/neutrino/lib_ref/s/setuid.html on line 191