seteuid
устанавливает действующий идентификатор пользователя текущего процесса.
Непривилегированные пользовательские процессы могут менять действующий идентификатор
пользователя только на действительный, действующий или сохраненный идентификатор пользователя.
То-же самое справедливо при работе
setegid
для групп.
ВОЗВРАЩАЕМЫЕ ЗНАЧЕНИЯ
При нормальном завершении работы возвращается 0.
При ошибках возвращается -1, а переменной
errno
присваивается код соответствующей ошибки.
НАЙДЕННЫЕ ОШИБКИ
EPERM
Текущий процесс не является процессом суперпользователя и
euid
(соответственно
egid)
не является действительным, действующим или сохраненным
идентификатором пользователя (группы).
ЗАМЕЧАНИЯ
Установка действующего идентификатора пользователя (группы)
в сохраненный идентификатор пользователя (группы) возможно
с версии Linux 1.1.37 (1.1.38).
В других системах надо проверять _POSIX_SAVED_IDS.
В libc4, libc5 и glibc2.0
seteuid(euid)
эквивалентно
setreuid(-1, euid),
и поэтому может изменить сохраненным идентификатор пользователя.
А в glibc2.1 оно эквивалентно
setresuid(-1, euid,-1)
и изменить сохраненный идентификатор пользователя не может.
Аналогичные замечания относятся и к
setegid.