НАЗВАНИЕ¶
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/