Установить процессу реальный и эффективный идентификаторы пользователя
#include <unistd.h>int setreuid( uit_t ruid,uid_t euid );
-1
, если данный идентификатор изменять не требуется.-1
, если данный идентификатор изменять не требуется.libc
Функция setreuid() устанавливает реальный и эффективный идентификаторы пользователя (UID) для вызывающего процесса. Если значение ruid или euid равно -1
, то соответствующий реальный или эффективный UID у процесса не будет изменен.
В случае, если у вызывающего процесса эффективный UID соответствует суперпользователю, то возможно установить реальный и эффективный UID процесса в любое допустимое значение.
В случае, если у вызывающего процесса эффективный UID не соответствует суперпользователю, то возможно либо установить реальный UID процесса в значение равное эффективному UID, либо установить эффективный UID в значение равное SUID
(set-user ID) или равное реальному UID данного процесса.
![]() | Если процесс, обладающий SUID, устанавливает свой эффективный UID в значение реального UID, то возможно изменить обратно свой эффективный UID в значение равное SUID. |
Процесс считается “суперпользователем”, если его эффективный UID равен 0
.
В любом случае, если у процесса изменяется реальный UID (т.е. параметр ruid не равен -1
), или изменяется эффективный UID на значение не равное реальному UID, то его SUID устанавливается равным новому эффективному UID.
POSIX 1003.1 X/Open Systems Interfaces Extension
execve(), getuid(), setregid(), setuid()
Предыдущий раздел: Описание API системной библиотеки