SETREUID(2)

НАЗВАНИЕ
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.)

СМОТРИ ТАКЖЕ
getuid(2), setuid(2)

ПЕРЕВОД
Перевод Copyright (C) Alexey Mahotkin <alexm@hsys.msk.ru> 2000 http://alexm.here.ru/manpages-ru/