seteuid()

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

Прототип:

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

Аргументы:

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

Библиотека:

libc

Описание:

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

Реальный и сохраненный идентификатор пользователя не изменяются.


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

Процесс, созданный суперпользователем – это процесс с эффективным идентификатором пользователя 0 или эффективным идентификатором пользователя root.

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

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

Коды ошибок:

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

Примеры:

/*
* This process sets its effective userid to 0 (root).
*/
#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
int main( void )
{
uid_t oeuid;
oeuid = geteuid();
if ( seteuid( 0 ) == -1 )
{
perror( "seteuid" );
return (EXIT_FAILURE);
}
printf( "effective userid now 0, was %d\n", oeuid );
return (EXIT_SUCCESS);
}

Классификация:

POSIX 1003.1

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

errno, geteuid(), setegid(), setuid(), setgid()




Предыдущий раздел: Описание API системной библиотеки