.\" -*- coding: UTF-8 -*- .\" Copyright (C), 1994, Graeme W. Wilford. (Wilf.) .\" and Copyright (C) 2010, 2015, Michael Kerrisk .\" .\" SPDX-License-Identifier: Linux-man-pages-copyleft .\" .\" Fri Jul 29th 12:56:44 BST 1994 Wilf. .\" Modified 1997-01-31 by Eric S. Raymond .\" Modified 2002-03-09 by aeb .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .TH setgid 2 "2 мая 2024 г." "Справочные страницы Linux 6.9.1" .SH ИМЯ setgid \- устанавливает идентификатор группы процесса .SH БИБЛИОТЕКА Стандартная библиотека языка C (\fIlibc\fP, \fI\-lc\fP) .SH СИНТАКСИС .nf \fB#include \fP .P \fBint setgid(gid_t \fP\fIgid\fP\fB);\fP .fi .SH ОПИСАНИЕ Вызов \fBsetgid\fP() устанавливает эффективный идентификатор группы вызвавшего процесса. Если вызывающий процесс имеет права (точнее, мандат \fBCAP_SETGID\fP в своём пространстве имён пользователя), то также устанавливаются действительный и сохраненный идентификаторы группы. .P В Linux \fBsetgid\fP() реализован так же, как в версии POSIX где есть возможность \fB_POSIX_SAVED_IDS\fP. Это позволяет set\-group\-ID\-программам (не являющимся программами суперпользователя) сбросить привилегии группы, проделать непривилегированную работу и безопасно вернуть исходный эффективный идентификатор группы. .SH "ВОЗВРАЩАЕМОЕ ЗНАЧЕНИЕ" При успешном выполнении возвращается 0. При ошибке возвращается \-1, а в \fIerrno\fP содержится код ошибки. .SH ОШИБКИ .TP \fBEINVAL\fP Идентификатор группы, заданный в \fIgid\fP, некорректен в этом пользовательском пространстве имён. .TP \fBEPERM\fP У вызвавшего процесса нет прав (не имеет мандата \fBCAP_SETGID\fP в его пользовательском пространстве имён) и \fIgid\fP не совпадает с эффективным идентификатором группы или сохраненным set\-group\-ID идентификатором группы вызывающего процесса. .SH ВЕРСИИ .SS "Отличия между библиотекой C и ядром" На уровне ядра ID пользователя и группы являются атрибутами нити. Однако в POSIX требуется, чтобы все нити в процессе имели одинаковые права. В реализации нитей NPTL требования POSIX реализованы через обёрточные функции для различных системных вызовов, которые изменяют UID и GID процесса. В этих функциях (включая и для \fBsetgid\fP()) используется алгоритмы на основе сигналов, которые следят за тем, что когда у одной нити изменяются права, эти изменения выполняются и для остальных нитей процесса. Подробное описание смотрите в \fBnptl\fP(7). .SH СТАНДАРТЫ POSIX.1\-2008. .SH ИСТОРИЯ POSIX.1\-2001, SVr4. .P Первоначальная версия системного вызова \fBsetgid\fP() в Linux поддерживала только 16\-битные идентификаторы групп. Позднее в Linux 2.4 был добавлен вызов \fBsetgid32\fP(), поддерживающий 32\-битные идентификаторы. В glibc обёрточная функция \fBgsetgid\fP() работает одинаково вне зависимости от версий ядра. .SH "СМОТРИТЕ ТАКЖЕ" \fBgetgid\fP(2), \fBsetegid\fP(2), \fBsetregid\fP(2), \fBcapabilities\fP(7), \fBcredentials\fP(7), \fBuser_namespaces\fP(7) .PP .SH ПЕРЕВОД Русский перевод этой страницы руководства разработал(и) Alexander Golubev , Azamat Hackimov , Hotellook, Nikita , Spiros Georgaras , Vladislav , Yuri Kozlov и Иван Павлов . .PP Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, .UR https://www.gnu.org/licenses/gpl-3.0.html .UE версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ. .PP Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу .MT списка рассылки русских переводчиков .ME .