setgid()

Установить реальные, эффективные и сохраненные идентификаторы групп

Прототип:

#include <unistd.h>
int setgid( gid_t gid );

Аргументы:

gid
Идентификатор группы, который вы хотите использовать для процесса.

Библиотека:

libc

Описание:

Функция setgid() позволяет вызывающему процессу установить реальный, эффективный и сохраненный идентификатор группы по следующим принципам:

Функция не изменяет идентификаторы дополнительных групп вызывающего процесса.

Если необходимо изменить только эффективной идентификатор группы и процесс создан суперпользователем, следует рассмотреть возможность использования функции setegid().

Процесс, созданный суперпользователем – это процесс с эффективным идентификатором пользователя 0 или эффективным идентификатором пользователя root.

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

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

Коды ошибок:

EINVAL
Недопустимое значение gid.
EPERM
Процесс не имеет соответствующих привилегий и gid не соответствует реальному идентификатору группы.

Примеры:

#include <stdio.h>
#include <sys/types.h>
#include <unistd.h>
#include <stdlib.h>
int main( void )
{
gid_t ogid;
ogid = getgid();
if ( setgid( 2 ) == -1 )
{
perror( "setgid" );
return (EXIT_FAILURE);
}
printf( "group id is now 2, was %d\n", ogid );
return (EXIT_SUCCESS);
}

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

POSIX 1003.1

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

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

errno, setegid(), seteuid(), setuid()




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