Приемы профессиональной работы в UNIX


ЗАЩИТА ЛИЧНОЙ ИНФОРМАЦИИ - часть 6


Нам нужно рассмотреть смысл клавиши выхода из программы. Она производит прерывание, похожее на все другие прерывания, но кроме того выводит дамп памяти для запущенного процесса. Мы оставляем клавишу выхода нетронутой оператором trap, поскольку она становится нашей последней надеждой на приостановление командного файла inuse. Когда ваш терминал заблокирован, он эхо-отображает вводимые с клавиатуры символы, но не реагирует на них. Тот, кто нажимает на клавиши, видит это и пытается выйти из ситуации, нажимая на клавишу прерывания (обычно это клавиша DEL). Когда он это делает, на экран выводится сообщение "you're busted", эхо-отображение снова включается и программа сама себя уничтожает (сигнал 15). Когда сигнал уничтожения принимается программой, этот сигнал ловится, печатается сообщение и программа снова сама себя уничтожает. Эта последовательность выполняется снова и снова, как в вечном цикле. Каждый раз, когда ловушка уничтожается и снова запускается, используется стек. Если все это будет выполняться достаточно долго, то весь стек заполнится записями об активизации и переполнится, аварийно завершая весь сеанс работы.

Если клавиша выхода будет нажата до активизации оператора trap, то программа завершится чисто. Если же клавиша выхода будет нажата после начала работы оператора trap, то произойдет выдача дампа памяти процесса и программа завершится. Это не совсем честный прием, но программирование на языке shell вынуждено быть именно таким, и это предупреждает вас о том, что что= то не в порядке.

Текущие значения клавиш для сигналов прерывания и выхода отображаются командой stty(1). Эти значения можно переустановить в любые по вашему желанию. У меня текущие установки такие:

speed 9600 baud; intr = DEL; quit = ^|; erase = ^h; kill = ^u; eof = ^d;

Набрав на клавиатуре "stty intr z", вы можете установить символ z в качестве сигнала прерывания ваших процессов, поэтому такое изменение клавиши прерывания и запуск бесконечного цикла представляет собой еще один способ защиты вашего сеанса работы. Поскольку вам потом нужно будет вернуть старое значение, вы должны запомнить то, что вы делали. Такой настройкой сигналов вы можете делать с вашим терминалом почти все, что хотите. Этот подход дает меньшую степень защиты, чем перехват прерываний, но может обеспечить вас минимальной защитой, не приводя к выдаче дампа памяти.

Теперь мы представляем версию на языке Си.

ТЕКСТ ПРОГРАММЫ inuse НА ЯЗЫКЕ СИ




Начало  Назад  Вперед