НАЗВАНИЕ¶
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).
СМОТРИ
ТАКЖЕ¶
getgid(2),
setgid(2)
ПЕРЕВОД¶
Перевод Copyright (C) Alexey Mahotkin
<alexm@hsys.msk.ru> 2000
http://alexm.here.ru/manpages-ru/