НАЗВАНИЕ
setreuid, seteuid − установить действительный и/или фактический идентификатор пользователя
КРАТКАЯ СВОДКА
#include
<sys/types.h>
#include <unistd.h>
int
setreuid(uid_t ruid, uid_t
euid);
int seteuid(uid_t euid);
ОПИСАНИЕ
setreuid устанавливает действительный и фактический идентификаторы владельца текущего процесса. Непривилегированные пользователи могут изменять действительный идентификатор владельца на фактический и наоборот.
В Linux версий раньше 1.1.37 парадигма сохраненных идентификаторов, при использовании с setreuid или seteuid, была некорректно реализована.
Начиная с 1.1.37, можно также устанавливать действительный идентификатор пользователя в сохраненный идентификатор пользователя.
Только суперпользователь может делать все другие изменения.
Передавая −1 в качестве действительного или фактического идентификатора пользователя оставляет соответствующий идентификатор без изменений.
В настоящий момент вызов seteuid(euid) функционально эквивалентен вызову setreuid(-1, euid).
Если действительный идентификатор пользователя изменяется или же фактический идентификатор пользователя устанавливается в значение, не равное предыдущему действительному идентификатору пользователя, то сохраненный идентификатор устанавливается в новый фактический идентификатор.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае успеха возвращается ноль. При ошибке возвращается −1, а errno устанавливается должным образом.
ОШИБКИ
EPERM |
Текущий процесс не имеет прав суперпользователя и пытается выполнить что-то помимо (i) обмена фактического идентификатора на действительный, (ii) установки одного в значение другого, или же (iii) установки фактического идентификатора пользователя в значение сохраненного идентификатора. |
СООТВЕТСТВИЕ СТАНДАРТАМ
BSD 4.3 (системный вызов setreuid впервые появился в 4.2BSD.)
СМОТРИ ТАКЖЕ
ПЕРЕВОД
Перевод Copyright (C) Alexey Mahotkin <alexm [AT] hsys.ru> 2000