Provided by: manpages-ru-dev_4.27.0-1_all bug

НАИМЕНОВАНИЕ

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

БИБЛИОТЕКА

       Стандартная библиотека языка C (libc, -lc)

ОБЗОР

       #include <unistd.h>

       int setgid(gid_t gid);

ОПИСАНИЕ

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

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

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

       При успешном выполнении возвращается 0. При ошибке возвращается -1, а в errno содержится код ошибки.

ОШИБКИ

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

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

ВЕРСИИ

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

СТАНДАРТЫ

       POSIX.1-2008.

ИСТОРИЯ

       POSIX.1-2001, SVr4.

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

СМОТРИТЕ ТАКЖЕ

       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> и Kirill Rekhov <krekhov.dev@gmail.com>

       Этот  перевод является свободной программной документацией; он распространяется на условиях общедоступной
       лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html  версии  3  или
       более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

       Если  вы  обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом
       разработчику(ам)  по  его(их)  адресу(ам)  электронной  почты  или  по   адресу   списка рассылки русских
       переводчиков.

Справочные страницы Linux 6.9.1                   2 мая 2024 г.                                        setgid(2)