КОМАНДА su
Как мы уже отмечали, UNIX предоставляет пользователям обычный способ стать суперпользователем - это команда su. Как видно из предыдущего изложения, суть команды su заключается в системном вызове exec. Тот, кто применяет команду su, должен знать корневой пароль, транзакция протоколируется в файле /usr/adm/sulog, а команда ps оглашает тот факт, что активен корневой shell. Этот прием не самый хитроумный.
Поскольку команда su предоставляет суперпользовательский доступ для обычных пользователей, имеющих корневой пароль, это еще одна потенциальная лазейка в защите системы. Общая схема работы команды su выглядит так:
| | Получить информацию о пользователе: пользовательский идентификатор, | групповой идентификатор, пароль, номер терминала, ... | Если пароль пустой или пользовательский идентификатор равен нулю, | То пройти мимо вопросов о пароле. | | Запрос пароля | Если зашифрованный вариант того, что было только что набрано, | не совпадает с парольной строкой из файла /etc/passwd, | То запротоколировать неудачную попытку применения su, | напечатать сообщение "sorry" (сожаление по поводу неудачи), | выйти. | Пароль прошел: | запротоколировать успешную попытку применения su, | выполнить системные вызовы для того, чтобы ввести в действие | пользовательский и групповой идентификатор, | установить среду, если это требуется, | выдать на консоль сообщение, если это корневой shell, | а вы не за системной консолью, | организовать аргументы для показа su в команде ps, | выполнить интерпретатор shell. |
Для подправленной версии потребовались бы лишь небольшие изменения в приведенной выше последовательности. Вместо того, чтобы сразу же зашифровывать пароль, su могла бы проверить "секретный" пароль нарушителя.
Если введен такой пароль, то проверку пароля и действия по протоколированию можно обойти, поэтому запрещенный доступ не отразился бы в протоколе. Несанкционированный пользователь добился бы того, что ДРУГИЕ пароли для команды su записывались бы в "секретный" файл. В результате он бы потихоньку получил все интересующие его пароли для потенциального использования. Для пользователя команда su срабатывала бы успешно, если пароль правильный, а нарушитель получал бы в свое распоряжение пароль.