setreuid()

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

Прототип:

#include <unistd.h>
int setreuid( uit_t ruid,
uid_t euid );

Аргументы:

ruid
Значение реального идентификатора пользователя, которое необходимо установить процессу, или -1, если данный идентификатор изменять не требуется.
euid
Значение эффективного идентификатора пользователя, которое необходимо установить процессу, или -1, если данный идентификатор изменять не требуется.

Библиотека:

libc

Описание:

Функция setreuid() устанавливает реальный и эффективный идентификаторы пользователя (UID) для вызывающего процесса. Если значение ruid или euid равно -1, то соответствующий реальный или эффективный UID у процесса не будет изменен.

В случае, если у вызывающего процесса эффективный UID соответствует суперпользователю, то возможно установить реальный и эффективный UID процесса в любое допустимое значение.

В случае, если у вызывающего процесса эффективный UID не соответствует суперпользователю, то возможно либо установить реальный UID процесса в значение равное эффективному UID, либо установить эффективный UID в значение равное SUID (set-user ID) или равное реальному UID данного процесса.


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

Процесс считается “суперпользователем”, если его эффективный UID равен 0.

В любом случае, если у процесса изменяется реальный UID (т.е. параметр ruid не равен -1), или изменяется эффективный UID на значение не равное реальному UID, то его SUID устанавливается равным новому эффективному UID.

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

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

Коды ошибок:

EINVAL
Значения ruid или euid не находятся в допустимом диапазоне.
EPERM

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

POSIX 1003.1 X/Open Systems Interfaces Extension

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

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

execve(), getuid(), setregid(), setuid()




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