Шрифт:
3. По получении регистрационного имени
4.
5. Затем
6. Наконец,
Обратите внимание, как один процесс меняет свою сущность от системного процесса до процесса пользователя. Каждый потомок
ЗАМЕЧАНИЕ. Открытые файлы остаются открытыми и доступными для использования, даже после изменения процессом своих UID или GID. Таким образом, программы с setuid должны заранее открыть все нужные файлы, изменить их ID на ID действительного пользователя и продолжить оставшуюся часть работы без дополнительных привилегий
В табл. 11.1 приведена сводка шести стандартных функций для манипулирования значениями UID и GID.
Таблица 11.1. Сводка API для установки действительных и эффективных ID [120]
120
E (Effective) эффективный ID, R (Real) действительный ID и S (Saved) сохраненный ID — Примеч. науч. ред.
Функция | Устанавливает | Постоянно | Обычный пользователь | Root |
---|---|---|---|---|
seteuid | E | Нет | Из R, E, S | Любое |
setegid | E | Нет | Из R, E, S | Любое |
setuid | Root: R,E,S Другие: E | Root: да Другие: нет | Из R, E | Любое |
setgid | Root: R,E,S Другие: E | Root: да Другие: нет | Из R, E | Любое |
setreuid | E, может установить R | Нет | Из R, E | Любое |
setregid | E, может установить R | Нет | Из R, E | Любое |
11.7. Работа со всеми тремя ID:
Linux предоставляет дополнительные системные вызовы, посредством которых вы можете непосредственно работать с действительными, эффективными и сохраненными ID пользователя и группы:
Функции следующие:
Получает значения действительного, эффективного и сохраненного set-user ID. Возвращаемое значение 0 в случае успеха и -1 при ошибке,
Получает значения действительного, эффективного и сохраненного set-group ID. Возвращаемое значение 0 в случае успеха и -1 при ошибке,
Устанавливает значения действительного, эффективного и сохраненного set-user ID соответственно. Когда значение параметра равно -1, соответствующий UID остается без изменения.