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


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


ИМЯ: inuse

inuse Запретить использование терминала

НАЗНАЧЕНИЕ

Блокирует ваш терминал путем перевода в состояние занятости. Если кто-либо попытается вторгнуться, вы это заметите.

ФОРМАТ ВЫЗОВА

inuse

ПРИМЕРЫ ВЫЗОВА

inuse Перевод терминала в состояние занятости

mypasswd Вводится мой пароль, но не отображается на экран

ТЕКСТ ПРОГРАММЫ

1 : 2 # @(#) inuse v1.0 Disable terminal and alert if used Author: Russ Sage 2а Запретить использование терминала и сообщить о попытке использования   4 trap "echo you\'re BUSTED!!; stty echo; kill $$" 2 15   6 PATH=/bin:/usr/bin 7 SECRET="secret"   9 stty -echo 10 echo "Lock string: \c" 11 read BUF1 12 echo   14 while : 15 do 16 BUF2=`line < /dev/tty` 17 if [ "$BUF2" = "$BUF1" ] 18 then break 19 elif [ "$BUF2" = "$SECRET" ] 20 then break 21 fi 22 echo "^G\c" 23 done 24 stty echo

ОПИСАНИЕ

Зачем нам нужен командный файл inuse?

Рабочий день всегда загружен: много людей, еще больше бумаг, всякие поручения и так далее и так далее. Когда вы покидаете свое рабочее место, что вы собираетесь делать со своим зарегистрированным терминалом? Каждый раз входить в систему и выходить из нее слишком долго, но вы не хотите оставлять вашу работу открытой для всех. Вам необходима программа, которую вы можете запустить на время вашего отсутствия и которая не позволит другим людям использовать то, что вы делаете.

Конечно, не достаточно иметь некий процесс, который выполняется в фоновом режиме, создавая впечатление, что терминал используется. Мы должны перехватывать прерывания в случае, если кто-нибудь введет символы "прерывания" или "выхода" с вашей клавиатуры. Единственным способом разблокирования терминала должен быть ввод пароля или заранее определенного слова, которое в любом случае разблокирует его.

Что делает inuse?

Inuse переводит ваш терминал в режим вечной работы. Это означает, что терминал не отвечает на ваши запросы или запросы кого-то другого. Когда вы готовы разблокировать ваш терминал, введите секретный пароль или пароль, который вы придумали.

Когда вы первый раз вызываете inuse, у вас запрашивается пароль. Эхо-отображение на терминал отключено, поэтому пароль не выводится на экран. Для гарантии того, что никто не пытается переадресовать командному файлу inuse какой-либо файл данных, все операции чтения производятся непосредственно из файла терминального устройства /dev/tty, а не через файловый дескриптор стандартного ввода. Это позволяет защититься от попыток других пользователей вторгнуться в работу терминала путем посылки на стандартный ввод файла большого размера, содержащего разные слова.

После чтения вашего пароля inuse попадает в бесконечный цикл, который читает символы с клавиатуры и сравнивает полученные входные данные с двумя паролями. Каждый раз, когда кто-то вводит что-то некорректное, выдается звуковой сигнал. Когда же введен один из допустимых паролей, программа останавливается и терминал разблокируется.

Мы предлагаем две реализации inuse: командный файл интерпретатора shell, приведенный выше, и программу на языке Си. Они выполняют одну и ту же работу довольно похожими способами. Они демонстрируют, насколько похожи эти два подхода, а их небольшие отличия рассматриваются ниже. Сначала обсуждается командный файл, а затем Си-программа.

ПОЯСНЕНИЯ




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



Книжный магазин