Документация по LinuxLinuxDoc.Ru 🔍

getgroups, setgroups - получает/устанавливает список дополнительных (supplementary) идентификаторов групп

НАЗВАНИЕ
getgroups, setgroups - получает/устанавливает список
дополнительных (supplementary) идентификаторов групп

СИНТАКСИС
#include
#include

int getgroups(int size, gid_t list[]);

#include

int setgroups(size_t size, const gid_t *list);

ОПИСАНИЕ

getgroups
Возвращает в параметре list дополнительные
идентификаторы групп. Количество получаемых
элементов устанавливается в параметре size. При
этом точно не установлено, включен ли эффективный
идентификатор группы вызывающего процесса в
возвращаемый список или нет. (Т.о., приложение
должно также вызвать getegid(2), чтобы удалить или
добавить его в окончательный результат.)

getgroups
Если параметр size равен нулю, то list не
изменяется, а возвращается только количество
дополнительных идентификаторов групп для процесса.

setgroups
Устанавливает дополнительные идентификаторы групп
для процесса. Эту функцию может использовать только
суперпользователь.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ
getgroups
При удачном завершении вызова возвращается
количество дополнительных идентификаторов групп. В
случае возникновения ошибки возвращается -1, а
переменной errno присваивается соответствующее
значение.

setgroups
При удачном завершении вызова возвращается ноль. В
случае возникновения ошибки возвращается -1, а
переменной errno присваивается соответствующее
значение.

КОДЫ ОШИБОК
EFAULT Означает, что list имеет неправильный адрес.

EPERM В случае setgroups означает, что Вы используете ее,
не обладая правами суперпользователя.

EINVAL В случае setgroups означает, что параметр size
больше чем величина NGROUPS (32 для 2.0.32). В
случае getgroups означает, что параметр size
меньше, чем количество дополнительных
идентификаторов групп, но и не равно нулю.

ЗАМЕЧАНИЯ

Процесс может иметь по меньшей мере NGROUPS_MAX
дополнительных идентификаторов групп в дополнение к
эффективному идентификатору группы. Множество
дополнительных идентификаторов групп наследуется от
родительского процесса и может быть изменено используя
вызов sysconf(3):
long ngroups_max;
ngroups_max = sysconf(_SC_NGROUPS_MAX);
Максимальное возвращаемое значение функцией getgroups не
может быть больше, чем значение полученное этим способом.

Прототип для setgroups будет доступен, если определено
_BSD_SOURCE (либо явно, либо неявно - не определением
_POSIX_SOURCE или компиляцией с флагом -ansi).

СООТВЕТСТВИЕ СТАНДАРТАМ

SVr4, SVID (только в выпуске 4; эти вызовы отсутствуют в
SVr3), X/OPEN, 4.3BSD. Вызов getgroups соответствует
POSIX.1. Вызов setgroups требует прав суперпользователя и
не входит в стандарт POSIX.1.
Читать новости Linux в Telegram
Linux - getgroups, setgroups - получает/устанавливает список дополнительных (supplementary) идентификаторов групп
Мы в соцсетях ✉