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


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


1. $ acme

Выдача ВСЕХ моих учетных данных. Это последовательный список всех команд, которые были запущены начиная с момента загрузки по настоящее время. Счастливого чтения!

2. $ acme -u -b

Печать в обратном порядке всех учетных записей с моим пользовательским именем. Обратный порядок означает - от самой последней из предыдущих команд до моей первой команды.

3. $ acme -l

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

ПОЯСНЕНИЯ

В строках 4-9 выполняется проверка на наличие ошибок. Если первый позиционный параметр не -l и не -u, то это ошибка. Выводится сообщение об этом и программа завершается.

В строке 11 переменная OPT инициализируется пустой строкой. Эта переменная содержит все дополнительные опции acctcom и их аргументы.

Строки 12-19 представляют собой цикл for, который повторяется по всем позиционным параметрам. Каждый аргумент сверяется в операторе case с допустимыми опциями. Если опцией является -l (строка 15), в переменную OPT заносится то значение, которое она уже имеет, опция -l и добавляется имя терминального устройства, полученное от команды UNIX'а tty. Команда tty выводит и префикс /dev, который не нужен. Для того чтобы избавиться от этого префикса, мы берем из этой символьной строки только основное имя.

Если указана опция -u, в переменную OPT добавляется -u и наше регистрационное имя. Если аргументом являются любые другие данные, то они просто добавляются в переменную OPT. Поступая таким образом, мы можем передать в командной строке acme другие опции команде acctcom. Обратите внимание, что здесь не выполняется проверка на ошибки в аргументах командной строки. Вы можете ввести неверное значение, которое нарушит работу команды acctcom. Однако это та цена, которую мы вынуждены платить за гибкость при передаче аргументов в командной строке, иначе нам придется значительно увеличивать текст командного файла.

После того обработки всех опций строка 21 выводит на экран командную строку, которая должна быть выполнена, так что мы знаем, что мы задавали. В строке 22 выполняется сама команда acctcom. Выходной результат соответствует описанию acctcom(1).




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



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