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

ИМЯ

       seteuid, setegid - устанавливает эффективный идентификатор пользователя или группы

LIBRARY

       Standard C library (libc, -lc)

СИНТАКСИС

       #include <unistd.h>

       int seteuid(uid_t euid);
       int setegid(gid_t egid);

   Требования макроса тестирования свойств для glibc (см. feature_test_macros(7)):

       seteuid(), setegid():
           _POSIX_C_SOURCE >= 200112L
               || /* glibc <= 2.19: */ _BSD_SOURCE

ОПИСАНИЕ

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

       Тоже   самое  справедливо  при  работе  setegid()  с  «групповым»  идентификатором,  а  не
       «пользовательским».

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

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

       Замечание:  есть  случаи,  когда  seteuid()  может  завершиться  с  ошибкой даже когда UID
       вызывающего равен 0;  это  серьёзная  ошибка  безопасности  —  не  проверять  возвращаемое
       значение seteuid().

ОШИБКИ

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

       EPERM  Для seteuid(): вызывающий процесс не имеет прав  (не  имеет  мандата  CAP_SETUID  в
              своём пространстве имён пользователя) и euid не совпадает с текущим действительным,
              эффективным или сохранённым идентификатором пользователя.

              Для setegid(): вызывающий процесс не имеет прав  (не  имеет  мандата  CAP_SETGID  в
              своём пространстве имён пользователя) и egid не совпадает с текущим действительным,
              эффективным или сохранённым идентификатором группы.

СТАНДАРТЫ

       POSIX.1-2001, POSIX.1-2008, 4.3BSD.

ЗАМЕЧАНИЯ

       Установка эффективного идентификатора пользователя (группы)  в  сохранённый  идентификатор
       пользователя  (группы)  возможна  с  версии  Linux 1.1.37 (1.1.38). В других системах надо
       проверять _POSIX_SAVED_IDS.

       В glibc 2.0 вызов seteuid(euid)эквивалентен setreuid(-1, euid), и поэтому  может  изменить
       сохранённый  идентификатор пользователя. В glibc 2.1 и новее он эквивалентен setresuid(-1,
       euid, -1) и  поэтому  не  изменяет  сохранённый  идентификатор  пользователя.  Аналогичные
       замечания  относятся  и  к  setegid(),  с  той  разницей,  что  изменение  в реализации из
       setregid(-1, egid) в setresgid(-1, egid, -1) произошло в glibc 2.2  или  2.3  (зависит  от
       аппаратной архитектуры).

       Согласно  POSIX.1,  seteuid() (setegid()) необходимо запрещать euid (egid) равный текущему
       эффективному идентификатору пользователя (группе), и  некоторые  реализации  не  позволяют
       этого.

   Отличия между библиотекой C и ядром
       В  Linux,  seteuid() и setegid() реализованы в виде библиотечных функций, которые вызывают
       setreuid(2) и setregid(2), соответственно.

СМ. ТАКЖЕ

       geteuid(2),  setresuid(2),  setreuid(2),   setuid(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⟩.