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> 20031997-12-10 | Linux 2.0.32 |