setregid()

Установить процессу реальный и эффективный идентификаторы группы

Прототип:

#include <unistd.h>
int setregid( gid_t rgid,
gid_t egid );

Аргументы:

rgid
Значение реального идентификатора группы, которое необходимо установить процессу, или -1, если данный идентификатор изменять не требуется.
egid
Значение эффективного (действующего) идентификатора группы, которое необходимо установить процессу, или -1, если данный идентификатор изменять не требуется.

Библиотека:

libc

Описание:

Функция setregid() устанавливает реальный и эффективный идентификаторы группы (GID) для вызывающего процесса. Если значение rigid или egid равно -1, то соответствующий реальный или эффективный GID у процесса не будет изменен.

В случае, если у вызывающего процесса эффективный идентификатор пользователя (UID) соответствует суперпользователю, то возможно установить реальный и эффективный GID процесса в любое допустимое значение.

В случае, если у вызывающего процесса эффективный UID не соответствует суперпользователю, то возможно либо установить реальный GID процесса в значение равное SGID (set-group ID), либо эффективный GID в значение равное SGID или равное реальному GID данного процесса.


Note: Если процесс, обладающий SGID, устанавливает свой эффективный GID в значение реального GID, то возможно изменить обратно свой эффективный GID в значение равное SGID.

Процесс считается “суперпользователем”, если его эффективный UID равен 0.

В любом случае, если у процесса изменяется реальный GID (т.е. параметр rgid не равен -1), или изменяется эффективный GID на значение не равное реальному GID, то его SGID устанавливается равным новому эффективному GID.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EINVAL
Значения rgid или egid не находятся в допустимом диапазоне.
EPERM

Классификация:

POSIX 1003.1 X/Open Systems Interfaces Extension

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Да
В потоке
Да

Тематические ссылки:

execve(), getgid(), setreuid(), setuid()




Предыдущий раздел: Описание API системной библиотеки