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.)