Manpages

НАЗВАНИЕ

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 [AT] hsys.ru> 2000

http://alexm.here.ru/manpages-ru/