posix_spawnattr_setcred()

Установить идентификатор пользователя и идентификатор группы дочернего процесса

Прототип:

#include <posix_spawnattr.h>
int posix_spawnattr_setcred( posix_spawnattr_t *attrp,
uid_t uid,
gid_t gid );

Аргументы:

attrp
Объект атрибутов порождения attrp, используемый реализацией. Объект атрибутов имеет тип posix_spawnattr_t (определен в <spawn.h>) и используется для указания наследования атрибутов процесса в операции порождения. IEEE Std 1003.1-2001 не определяет операторы сравнения или присваивания для типа posix_spawnattr_t.
uid
Идентификатор пользователя, устанавливаемый для процесса.
gid
Идентификатор группы, устанавливаемый для процесса.

Библиотека:

libc

Описание:

Функция posix_spawnattr_setcred() установливает учетные данные порожденного процесса, отличные от учетных данных вызывающей стороны. Как правило, учетные данные (то есть идентификатор пользователя и идентификатор группы) для процесса, порожденного с помощью posix_spawn() и posix_spawnp(), наследуются от вызывающей функции. Вызывающая функция должна иметь эффективный uid root на момент выполнения вызова posix_spawn() или posix_spawnp(); в противном случае вызов posix_spawn() возвращает EPERM. Эффективный uid root не требуется для установки учетных данных в те же значения, что и у вызывающей стороны, что имело бы тот же эффект, что и полное отсутствие вызова этой функции.

Если вызывающая сторона удовлетворяет критериям posix_spawn(), как реальный, так и эффективный uid / gid порожденного процесса устанавливаются на указанные учетные данные; однако режим setuid / setgid порожденного образа имеет приоритет над действующим uid / gid порожденного процесса так же, как описано для POSIX_SPAWN_RESETIDS (setuid / setgid порожденного образа приводит к тому, что порожденный процесс наследует uid / gid образа как его эффективный uid / gid соответственно. Реальный uid / gid будет таким, как указано в учетных данных).


Note: Учетные данные порожденного процесса вступают в силу до фактического запуска процесса и, следовательно, определяют его доступ к определенным ресурсам. Это может привести к сбою в порожденном процессе, асинхронно успешному вызову posix_spawn() или posix_spawnp().

Учетные данные, установленные с помощью функции posix_spawnattr_setcred(), не действуют, если не был установлен флаг POSIX_SPAWNATTR_SETCRED. Значение EPERM не будет возвращено posix_spawn() или posix_spawnp(), если не установлен флаг POSIX_SPAWNATTR_SETCRED. Если установлены оба POSIX_SPAWN_SETCRED и POSIX_SPAWN_RESETIDS, POSIX_SPAWN_SETCRED будет иметь приоритет. Это означает, что когда POSIX_SPAWN_SETCRED установлен, функция posix_spawnattr_getcred() возвращает uid и gid (где значения больше или равны 0, а родитель имеет привилегии root); в противном случае, когда POSIX_SPAWN_SETCRED не установлен, используется поведение наследования по умолчанию.


Note: Флаг POSIX_SPAWN_SETCRED определяется, чтобы установить требуемые учетные данные, указанные в объекте атрибутов posix_spawnattr_t, на который необходимо воздействовать. Без этого флага любые uid и gid, указанные с помощью функции posix_spawnattr_setcred(), будут игнорироваться. Данный флаг можно установить, используя posix_spawnattr_setxflags().

Функция posix_spawnattr_setcred() позволяет вызывающей стороне указать как идентификатор пользователя (uid), так и идентификатор группы (gid) для назначения объекту атрибутов posix_spawnattr_t. Вызывающий должен указать оба параметра и может фактически оставить один из них без изменений, передав результаты getuid() или getgid() соответственно. Для того, чтобы uid / gid вступили в силу, объект атрибутов posix_spawnattr_t должен быть передан в качестве параметра вызова posix_spawn(), а также должен быть установлен флаг POSIX_SPAWN_SETCRED, и вызывающая сторона должна иметь эффективный идентификатор пользователя 0 (т.е. root). В качестве альтернативы, если вызывающая сторона предоставляет uid для getuid() и gid для getgid(), вызывающая сторона не обязана иметь привилегии root, поскольку это эквивалентно поведению наследования по умолчанию.

Функция posix_spawnattr_getcred() используется, чтобы позволить вызывающей стороне получить uid и gid объекта атрибутов posix_spawnattr_t, заданные с помощью функции posix_spawnattr_setcred().


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

EINVAL
Было задано недопустимое значение параметра.
EOK
Успешное завершение.

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

POSIX 1003.1 Realtime Signals Extension

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

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

posix_spawn(), posix_spawn_file_actions_addclose(), posix_spawn_file_actions_adddup2(), posix_spawn_file_actions_addopen(), posix_spawn_file_actions_destroy(), posix_spawn_file_actions_init(), posix_spawnattr_addpartid(), posix_spawnattr_addpartition(), posix_spawnattr_destroy(), posix_spawnattr_getcred(), posix_spawnattr_getflags(), posix_spawnattr_getnode(), posix_spawnattr_getpartid(), posix_spawnattr_getpgroup(), posix_spawnattr_getrunmask(), posix_spawnattr_getschedparam(), posix_spawnattr_getschedpolicy(), posix_spawnattr_getsigdefault(), posix_spawnattr_getsigignore(), posix_spawnattr_getsigmask(), posix_spawnattr_getstackmax(), posix_spawnattr_getxflags(), posix_spawnattr_init(), posix_spawnattr_setnode(), posix_spawnattr_setpgroup(), posix_spawnattr_setschedparam(), posix_spawnattr_setrunmask(), posix_spawnattr_setschedpolicy(), posix_spawnattr_setsigdefault(), posix_spawnattr_setsigignore(), posix_spawnattr_setsigmask(), posix_spawnattr_setstackmax(), posix_spawnattr_setxflags(), posix_spawnp()




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