Provided by: manpages-ru-dev_4.19.0-7_all bug

ИМЯ

       setgid - устанавливает идентификатор группы процесса

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <unistd.h>

       int setgid(gid_t gid);

ОПИСАНИЕ

       Вызов  setgid()  устанавливает  эффективный идентификатор группы вызвавшего процесса. Если
       вызывающий процесс имеет права  (точнее,  мандат  CAP_SETGID  в  своём  пространстве  имён
       пользователя),  то  также  устанавливаются  действительный  и  сохраненный  идентификаторы
       группы.

       В  Linux  setgid()  реализован  так  же,  как  в  версии  POSIX   где   есть   возможность
       _POSIX_SAVED_IDS.   Это   позволяет  set-group-ID-программам  (не  являющимся  программами
       суперпользователя) сбросить привилегии  группы,  проделать  непривилегированную  работу  и
       безопасно вернуть исходный эффективный идентификатор группы.

ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ

       On  success, zero is returned.  On error, -1 is returned, and errno is set to indicate the
       error.

ОШИБКИ

       EINVAL Идентификатор  группы,  заданный  в  gid,  некорректен  в   этом   пользовательском
              пространстве имён.

       EPERM  У  вызвавшего процесса нет прав (не имеет мандата CAP_SETGID в его пользовательском
              пространстве имён) и gid не совпадает  с  эффективным  идентификатором  группы  или
              сохраненным set-group-ID идентификатором группы вызывающего процесса.

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008, SVr4.

ЗАМЕЧАНИЯ

       Первоначальная  версия  системного  вызова  setgid() в Linux поддерживала только 16-битные
       идентификаторы групп. Позднее в Linux 2.4 был добавлен  вызов  setgid32(),  поддерживающий
       32-битные  идентификаторы.  В  glibc  обёрточная  функция gsetgid() работает одинаково вне
       зависимости от версий ядра.

   Отличия между библиотекой C и ядром
       На уровне ядра  ID  пользователя  и  группы  являются  атрибутами  нити.  Однако  в  POSIX
       требуется,  чтобы  все  нити  в  процессе  имели одинаковые права. В реализации нитей NPTL
       требования POSIX реализованы через обёрточные функции  для  различных  системных  вызовов,
       которые изменяют UID и GID процесса. В этих функциях (включая и для setgid()) используется
       алгоритмы на основе сигналов, которые следят за тем, что когда  у  одной  нити  изменяются
       права,  эти  изменения  выполняются  и  для  остальных  нитей процесса. Подробное описание
       смотрите в nptl(7).

СМ. ТАКЖЕ

       getgid(2), setegid(2), setregid(2), capabilities(7), credentials(7), user_namespaces(7)

ПЕРЕВОД

       Русский   перевод   этой   страницы   руководства    был    сделан    Alexander    Golubev
       <fatzer2@gmail.com>,   Azamat   Hackimov  <azamat.hackimov@gmail.com>,  Hotellook,  Nikita
       <zxcvbnm3230@mail.ru>,       Spiros       Georgaras       <sng@hellug.gr>,       Vladislav
       <ivladislavefimov@gmail.com>,    Yuri    Kozlov   <yuray@komyakino.ru>   и   Иван   Павлов
       <pavia00@gmail.com>

       Этот  перевод  является  бесплатной  документацией;  прочитайте  Стандартную  общественную
       лицензию GNU версии 3 ⟨https://www.gnu.org/licenses/gpl-3.0.html⟩ или более позднюю, чтобы
       узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

       Если вы обнаружите ошибки в переводе  этой  страницы  руководства,  пожалуйста,  отправьте
       электронное письмо на ⟨man-pages-ru-talks@lists.sourceforge.net⟩.