НАЗВАНИЕ
setregid, setegid − установить действительный и/или фактический идентификатор группы
КРАТКАЯ СВОДКА
#include
<sys/types.h>
#include <unistd.h>
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).
СМОТРИ ТАКЖЕ
ПЕРЕВОД
Перевод Copyright (C) Alexey Mahotkin <alexm [AT] hsys.ru> 2000