Установить реальный, эффективный и сохраненный идентификатор пользователя (UID)
#include <unistd.h>int setuid( uid_t uid );
libc
Функция setuid() позволяет вызывающему процессу установить реальный, эффективный и сохраненный идентификатор владельца процесса на основе следующей информации:
![]() | Если процесс установки UID задает значение своего эффективного UID как своего реального идентификатора пользователя, он все равно может установить эффективный UID обратно на сохраненный и установленный UID. |
Если требуется изменить только эффективный UID, даже если вы являетесь суперпользователем, следует рассмотреть возможность использования функции seteuid().
«Суперпользователем» является любой процесс с эффективным UID «0» или «root».
/** 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
errno, getuid(), setegid(), seteuid(), setgid()
Предыдущий раздел: Описание API системной библиотеки