Главная » 2017 » Ноябрь » 24 » man 2 seteuid
05:05
man 2 seteuid

SEO sprint - Всё для максимальной раскрутки!





ИМЯ


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



ОБЗОР


#include <sys/types.h>
#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() с «групповым» идентификатором, а не
«пользовательским».



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


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

Замечание: есть случаи, когда 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 (зависит от



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


geteuid(2), setresuid(2), setreuid(2), setuid(2), capabilities(7), credentials(7),
user_namespaces(7)



Категория: (2) Системные вызовы ядра (функции языка Си) | Просмотров: 23 | Добавил: Администратор | Рейтинг: 0.0/0
Всего комментариев: 0
avatar