int setregid(gid_t rgid, gid_t egid); int setegid(gid_t egid);
ОПИСАНИЕ
setregid
устанавливает действительный и фактический идентификатор группы
текущего процесса. Непривилегированные пользователи могут изменять
действительный идентификатор на фактический и наоборот.
В Linux до версии 1.1.38 парадигма сохраненных идентификаторов,
которая использовалась вместе с
setregid
или
setegid,
была неверно реализована. Начиная с 1.1.38, можно устанавливать
фактический идентификатор группы в сохраненный идентификатор группы.
Все остальные изменения может делать только суперпользователь.
Передавая -1 в качестве действительного или фактического
идентификатора группы оставляет этот идентификатор без изменений.
В настоящий момент (libc-4.x.x), вызов
setegid(egid)
функционально эквивалентен вызову
setregid(-1, egid).
Если действительный идентификатор группы изменяется или фактический
идентификатор группы устанавливается в значение, не равное предыдущему
действительному идентификатору, то сохраненный идентификатор группы
будет установлен в новый фактический идентификатор группы.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
В случае успеха возвращается ноль. При ошибке возвращается -1, а
errno
устанавливается должным образом.
ERRORS
EPERM
Текущий процесс не имеет прав суперпользователя и пытается выполнить
что-то помимо (i) обмена фактического идентификатора на
действительный, (ii) установки одного в значение другого, или же (iii)
установки фактического идентификатора группы в значение сохраненного
идентификатора группы.
СООТВЕТСТВИЕ СТАНДАРТАМ
BSD 4.3 (системный вызов
setregid
впервые появился в 4.2BSD).