int setresuid(uid_t ruid, uid_t euid, uid_t suid); int setresgid(gid_t rgid, gid_t egid, gid_t sgid);
ОПИСАНИЕ
Функция
setresuid
устанавливает идентификатор реального пользователя, идентификатор эффективного пользователя
и идентификатор сохраненного пользователя текущего процесса.
Непривилегированные процессы пользователя (например, процессы с ненулевыми идентификаторами
реального, эффективного и сохраненного пользователей) могут изменить идентификаторы на:
идентификатор текущего пользователя, идентификатор реального текущего пользователя и идентификатор
текущего сохраненного пользователя.
Суперпользователь может установить произвольные значения идентификаторов реального,
эффективного и сохраненного пользователей.
Если один из параметров равен -1, то соответствующее ему значение не изменяется.
setresgid
устанавливает идентификаторы групп реальных, эффективных и сохраненных пользователей процесса
с теми же ограничениями.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При удачном завершении возвращаемое значение равно нулю.
При ошибке возвращается -1 , а переменной
errno
присваивается номер ошибки.
НАЙДЕННЫЕ ОШИБКИ
EPERM
Текущий процесс, не являясь привилегированным, сделал попытку изменить
идентификатор.
СООТВЕТСТВИЕ СТАНДАРТАМ
Этот вызов является нестандартным.
ПРИМЕЧАНИЯ ПО ИСТОРИИ
Эта функция впервые появилась в HP-UX.
В Linux она доступна начиная с Linux 2.1.44.
На текущий момент она также существует в FreeBSD (для эмуляции исполняемых файлов Linux).
ЗАМЕЧАНИЯ
В HP-UX и FreeBSD прототип функции находится в
<unistd.h>.
В Linux прототип задан в glibc, начиная с версии 2.3.2,
обеспечивая определение _GNU_SOURCE.