setreuid, setregid - устанавливает действительный и/или действующий идентификатор пользователя или группы
НАЗВАНИЕsetreuid, setregid - устанавливает действительный и/или
действующий идентификатор пользователя или группы
СИНТАКСИС
#include
#include
int setreuid(uid_t ruid, uid_t euid);
int setregid(gid_t rgid, gid_t egid);
ОПИСАНИЕ
setreuid устанавливает дествительный и действующий
идентификатор пользователя текущего процесса.
Непривилегированные пользователи могут изменять
действительный идентификатор пользователя на действующий
или действительный идентификатор пользователя, а также
менять действующий идентификатор на дейсвтующий,
действительный и сохраненный идентификатор пользователя.
Если значение действительного или действующего
идентификатора пользователя равно -1, то система не
изменяет его.
Если установлен действительный идентификатор пользователя
или установлено значение действующего идентификатора
пользователя в отличное от предыдущего значения
действительного идентификатора пользователя, то значение
сохраненного идентификатора пользователя будет установлено
в значению действующего идентификатора пользователя.
Аналогично setregid меняет действующие и действительные
идентификаторы групп текущего процесса, и все описанное
выше для пользователя справедливо и для групп.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
При удачном выполнении вызова возвращается ноль. При
ошибке возвращается -1, а переменной errno присваивается
номер ошибки.
КОДЫ ОШИБОК
EPERM Процесс был запущен без прав суперпользователя, а
требуемые изменения не относятся к следующим: 1)
взаимозамене дествующего идентификатора на
действительный идентификатор пользователя (группы);
2) установке значения одного идентификатора на
значение другого; 3) замене действующего
идентификатора пользователя (группы) на сохраненный
идентификатор пользователя (группы).
ЗАМЕЧАНИЯ
Установка дейсвтующего идентификатора пользователя
(группы) в значение сохраненного идентификатора возможно с
версии Linux 1.1.37 (1.1.38).
СООТВЕТСТВИЕ СТАНДАРТАМ
BSD 4.3 (функция setreuid и setregid впервые появилась в
4.2BSD.)