setuid()

Установить реальный, эффективный и сохраненный идентификатор пользователя (UID)

Прототип:

#include <unistd.h>
int setuid( uid_t uid );

Аргументы:

uid
Идентификатор пользователя, который требуется установить для процесса.

Библиотека:

libc

Описание:

Функция setuid() позволяет вызывающему процессу установить реальный, эффективный и сохраненный идентификатор владельца процесса на основе следующей информации:


Note: Если процесс установки UID задает значение своего эффективного UID как своего реального идентификатора пользователя, он все равно может установить эффективный UID обратно на сохраненный и установленный UID.

Если требуется изменить только эффективный UID, даже если вы являетесь суперпользователем, следует рассмотреть возможность использования функции seteuid().

«Суперпользователем» является любой процесс с эффективным UID «0» или «root».

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EINVAL
Значение uid находится вне допустимого диапазона.
EPERM
Процесс не является суперпользователем, а uid не соответствует реальному или сохраненному UID.

Примеры:

/*
* 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 системной библиотеки