Книга: Программирование для Linux. Профессиональный подход
10.4.1. Программы с установленным битом SUID
10.4.1. Программы с установленным битом SUID
Выше было показано, как процесс пользователя root
может временно принять на себя права другого пользователя или отказаться от специальных привилегий, изменив свои реальный и эффективный идентификаторы. Но вот загадка: может ли непривилегированный пользователь стать суперпользователем? Это кажется невозможным, но следующий пример свидетельствует об обратном:
% whoami
mitchell
% su
Password: ...
% whoami
root
Команда whoami
аналогична команде id
, но отображает только эффективный идентификатор пользователя. Команда su
позволяет вызвавшему ее пользователю стать суперпользователем, если введен правильный пароль.
Как же работает команда su
? Ведь мы знаем, что интерпретатор команд был запущен с реальным и эффективным идентификаторами, равными mitchell
. Функция setreuid()
не позволит ему поменять ни один из них.
Дело в том, что у программы su
установлен бит смены идентификатора пользователя (SUID, set user identifier). Это значит, что при запуске ее эффективным идентификатором станет идентификатор владельца (реальный идентификатор останется тем же, что у пользователя, запустившего программу). Для установки бита SUID предназначены команда chmod +s
и флаг S_SUID
функции chmod()
.[34]
В качестве примера рассмотрим программу, показанную в листинге 10.3.
- 12.2. Закрываем SUID- и SGID-двери
- СТРУКТУРА ПРОСТОЙ ПРОГРАММЫ
- ПРИМЕР ПРОСТОЙ ПРОГРАММЫ НА ЯЗЫКЕ СИ
- 1.2.5. Пример программы
- 24.7. Использование программы-твикера
- Часть III Прикладные программы
- Цикл создания программы
- Описание программы настройки BIOS
- Программы для восстановления данных
- Программы для тестирования привода
- Программы для диагностики и настройки видеокарты
- Программы для тестирования монитора