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


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


Строка 4 инициализирует оператор trap. При активизации обработчика trap выполняются три команды.

Целью применения ловушки trap является реагирование на любую попытку прервать работу командного файла и прорваться на ваш терминал. Первая команда выдает предупреждение о том, что вы вторгаетесь. Вторая команда переключает терминал обратно в режим эхо-отображения, так что все, что будет впоследствии введено с клавиатуры, отобразится на экране. и последняя команда заставляет программу совершить самоубийство. Как мы увидим позже, это самоубийство является особым родом прекращения работы программы. Обращение к "самому себе" в операторе kill выполняется с использованием метасимволов $$, которые представляют собой идентификационный номер выполняющегося shell-процесса. Обработчик ловушек включается сигналами 2 и 15, которыми являются прерывание и программное завершение соответственно. Отметим, что сигнал выхода из программы (сигнал 3) здесь не используется. Причину этого мы объясним позже.

Строка 6 устанавливает маршрут, по которому может обращаться inuse. Тем самым inuse никогда не сможет быть "застигнут врасплох" кем-нибудь, кто проник незаметно (в "троянском коне"). Строка 7 инициализирует секретный пароль значением "secret", которое совсем не секретно. Вы можете изменить пароль на любое слово перед установкой командного файла в вашей системе. В правах доступа к файлу, в котором хранится текст данной shell-программы, вы должны запретить возможность чтения. В противном случае другие пользователи смогут увидеть секретное слово.

Строка 9 отключает эхо-отображение, строка 10 печатает запрос пароля, а строка 11 читает пароль, который вы вводите, и заносит его в переменную BUF1.

Строки 14-23 представляют собой вечный цикл while, который можно прервать только вводом правильного пароля. Строка 16 читает ввод с клавиатуры. При нажатии возврата каретки строка 17 проверяет, соответствует ли то, что введено с клавиатуры, паролю пользователя. Если нет, переменная BUF2 сравнивается с секретным паролем. Если какой-то из паролей совпадает, оператор break производит выход из цикла while, тем самым прекращая выполнение программы. Если введенные данные не соответствуют ни одному из паролей, то в строке 22 выдается звуковой сигнал и снова начинает выполняться оператор чтения клавиатуры.

Если пароль введен правильно, в строке 24 включается эхо-отображение на терминал и программа завершается. Если происходит прерывание, активизируется оператор trap. Данная операция подробно рассматривается ниже.

ПОДРОБНЕЕ О ЛОВУШКАХ




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