initgroups()

Инициализировать вспомогательный групповой список доступа

Прототип:

#include <grp.h>
#include <sys/types.h>
int initgroups( const char *name,
gid_t basegid );

Аргументы:

name
Имя пользователя, членство в группе которого необходимо использовать в качестве дополнительного группового списка доступа.
basegid
ID группы, которую необходимо включить в создаваемый групповой список доступа.

Библиотека:

libc

Описание:

Функция initgroups() считывает группы, в которых состоит пользователь name, из базы данных групп, и инициализирует дополнительный групповой список доступа вызывающего процесса (смотрите getgrnam() и getgroups()).

Если число групп в дополнительном списке превышает NGROUPS_MAX, добавляемые группы игнорируются.

Возвращаемое значение:

0
Успешное завершение.
-1
Возникла ошибка. Код ошибки записан в errno.

Коды ошибок:

EPERM
Вызов функции осуществляется не пользователем root.

Файлы:

/etc/group
База данных групп.

Классификация:

Unix

Безопасность использования
Точка остановки потока
Нет
Обработчик прерываний
Нет
Обработчик сигналов
Нет
В потоке
Нет

Предостережения:

Если initgroups() завершается ошибкой, дополнительный групповой список доступа не изменяется.

Функция getgrouplist(), вызываемая initgroups() основана на getgrent(). Если вызывающий процесс использует функцию getgrent(), структура struct group перезаписывается в памяти вызовом initgroups().

Тематические ссылки:

getgrent(), getgrnam(), getgrouplist(), getgroups()




Предыдущий раздел: Описание API системной библиотеки