other versions
- wheezy 0.98-4
other sections
| GETGROUPS(2) | Руководство программста Linux | GETGROUPS(2) |
ИМЯ¶
getgroups, setgroups - получить/установить список дополнительных идентификаторов (ID) группОБЗОР¶
#include <sys/types.h>ОПИСАНИЕ¶
- getgroups
- Увеличивает список list идентификаторов дополнительных групп (членами которых является текущий пользователь -- прим. пер.) до размера size и возвращает этот список. Невозможно узнать будет ли включен в этот список эффективный идентификатор группы, вызывающего процесса. (Таким образом, приложение должно также вызвать getegid(2) и добавить или удалить полученное значение.) Если размер size равен нулю, список list не изменяется, просто возвращается общее количество идентификаторов дополнительных групп для текущего процесса.
- setgroups
- Устанавливает идентификаторы дополнительных групп для текущего процесса. Только суперпользователь может использовать эту функцию.
ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ¶
- В случае успеха
- getgroups возвращает количество идентификаторов дополнительных групп. При ошибке возвращается -1 и значение errno устанавливается соответствующим образом.
- В случае успеха
- setgroups возвращает ноль. При ошибке возвращается -1 и значение errno устанавливается соответствующим образом.
ОШИБКИ¶
- EFAULT
- Список list имеет неправильный адрес.
- EPERM
- Пользователь вызывавший setgroups, не является суперпользователем.
- EINVAL
- Для setgroups, size больше, чем NGROUPS (32 для Linux 2.0.32). Для getgroups, size меньше, чем количество дополнительных идентификаторов групп, но не ноль.
ЗАМЕЧАНИЯ¶
Процесс может иметь как минимум NGROUPS_MAX дополнительных идентификаторов групп в дополнении к эффективному идентификатору группы. Список дополнительных идентификаторов групп наследуется из родительского процесса и может быть изменён при использовании setgroups. Максимальное количество дополнительных идентификаторов групп можно найти используя 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.СМОТРИТЕ ТАКЖЕ¶
initgroups(3), getgid(2), setgid(2)ПЕРЕВОД¶
Перевёл с английского Виктор Вислобоков <corochoone@perm.ru> 2003| 1997-12-10 | Linux 2.0.32 |