
- •История создания unix систем. Мультиплатформенность. Пперечень реализаций ос и в чем их отличие.
- •Возникновение и первая редакция ос unix
- •Исследовательский unix
- •Первый перенос ос unix
- •Седьмая редакция
- •Возникновение группы университета г. Беркли (bsd)
- •Unix System III и первые коммерческие версии системы
- •Основные понятия многопользовательской ос
- •Пользователь
- •Интерфейс пользователя
- •Привилегированный пользователь
- •Программы
- •Команды
- •Процессы
- •Перенаправление ввода/вывода
- •Основные сведения для пользователей Unix
- •Терминал
- •Состав программного обеспечения на примере System V версии 4.0
- •Базовая операционная система
- •Дополнительные пакеты программ
- •Структура ядра операционной системы и функции ядра операционной системы Ядро ос unix
- •Общая организация традиционного ядра ос unix
- •Функции операционной системы
- •Предполагаемая аппаратная среда
- •Прерывания и особые ситуации
- •Уровни прерывания процессора
- •Распределение памяти
- •Структура системы
- •Среда выполнения процессов
- •Специальные символы shell-переменных
- •Специальные символы shell-операторов
- •Команды ос unix
- •Регистрационный каталог" пользователя
- •Общее файловое дерево
- •Первый слой файловой системы
- •Второй слой
- •Символические каналы связи
- •Имя пути
- •Полное имя пути
- •Родственное имя пути
- •Правила именования справочников и файлов
- •Дополнительная информация по файловой системе
- •Перечень специальных символов
- •Минимальный набор команд
- •Организация справочника/каталога
- •Команда mkdir - создать справочник/каталог
- •Команда ls - напечатать содержимое справочника/каталога
- •Часто используемые ключи команды ls
- •Команда cd - изменить текущий справочник
- •Команда rmdir - удалить справочник
- •Доступ к файлу и работа с ним
- •Основные команды
- •Команды cat, pg, pr - распечатать содержимое файла
- •Команда cat
- •Команда pg
- •Команда pr
- •Команда cp - сделать копию файла
- •Команда mv - переименование файла
- •Команда rm - удалить файл
- •Команда wc - подсчет строк, слов и символов
- •Команда chmod - изменить статус файла
- •Как определить права
- •Как изменить существующие права
- •Альтернативный метод
- •Дополнительные команды
- •Команда diff
- •Команда grep
- •Команда sort
- •Режимы редактора
- •Создание текста в режиме Append
- •Выход из режима Append
- •Редактирование текста в командном режиме
- •Перемещение курсора
- •Удаление текста
- •Добавление текста
- •Команда перемещения: - (знак минус)
- •Позиционирование слов
- •Позиционирование в окне
- •Позиционирование курсора на неотображаемом тексте
- •Прокрутка текста
- •Удаление текста
- •Удаление текста в режиме ввода текста
- •Отменить последнюю команду
- •Команды удаления в командном режиме
- •Удаление слов
- •Удаление строк
- •Удаление текста после курсора
- •Модификация текста
- •Замена текста
- •Подстановка текста
- •Изменение текста
- •Извлечение и присоединение текста
- •Перемещение текста
- •Перемещение букв
- •Копирование текста
- •Специальные команды
- •Повторить последнюю команду
- •Объединение строк
- •Очистить окно и восстановить текст
- •Заменить нижний регистр на верхний и vice versa
- •Использование команд построчного редактора
- •Временный возврат к shell
- •Запись текста в новый файл
- •Переход к указанной строке
- •Удалить остаток буфера
- •Добавить файл в буфер
- •Провести глобальные изменения
- •Специальные опции для VI
- •Восстановление потерянного файла
- •Редактирование нескольких файлов
- •Просмотр файла
- •Интерпретатор shell последовательность действий интерпретатора shell
- •Специальные символы shell-переменных
- •Специальные символы shell-операторов
- •Встроенные операторы языка shell
- •Команды System V Bourne Shell
- •Дополнительные команды System V.2
- •Общая характеристика командных языков
- •Базовые возможности семейства командных интерпретаторов
- •1. Синтаксические
- •Связь ос unix с другими компьютерными станциями
- •Печать форматированного файла
- •Простые шаблоны
- •Простые действия
- •Встроенные переменные
- •Определенные пользователем переменные
- •Функции
- •Примеры некоторых полезных программ
- •Сообщения об ошибках
- •Шаблоны
- •Шаблоны begin и end
- •Комбинация шаблонов
- •Область шаблона
- •Поле переменных
- •Операторы управления потоком
- •Массивы
- •Функции, определенные пользователем
- •Комментарии
- •Файлы и каналы
- •Разделители ввода
- •Использование awk с другими командами и с shell
- •Функция system
- •Взаимодействие с shell
- •Примеры использования
- •Генерирование отчетов
- •Дополнительные примеры Частота использования слов
- •Накопление
- •Случайный выбор
- •Возможности shell
- •10.27.1. Ограничения
- •Запуск и остановка системы
10.27.1. Ограничения
При работе с awk вы должны придерживаться следующих ограничений:
100 |
полей |
2500 |
символов во вводной записи |
2500 |
символов в выводной записи |
1024 |
символов в индивидуальном поле |
1024 |
символов в строке printf |
400 |
символов в строке, заключенной в кавычки |
400 |
символов в классе символов |
15 |
открытых файлов |
1 |
канал |
Инициализация, сравнение и тип приведения
Каждые переменная или поле могут потенциально быть строкой или числом, либо состоять из того и другого. Когда значение переменной устанавливается при присвоении:
var = expr
то тип переменной определяется выражением. В арифметических выражениях тип - цифровой, в конкатенации - строковый, и т.д. Если назначение является простым копированием:
v1 = v2
то типом v1 становится тип v2. При сравнении, если оба операнда являются цифровыми, то производится цифровое сравнение. В противном случае, операнды рассматриваются как строковые и сравнение производится над строками. Тип любого выражения может быть приведен к цифровому таким образом:
expr + 0
и к строковому типу:
expr ""
(это конкатенация с пустой строкой)
Инициализированные переменные имеют цифровое значение 0, а строковые - значение "". Соответственно, если x проинициализировано, то оператор
if (x) ...
имеет значение "ложь", а
if (!x) ...
if (x == 0) ...
if (x == "") ...
все являются истиной, но
if (x == "0") ...
является ложью.
Тип поля определяется по контексту. Например:
$1++
означает, что $1 будет цифровым, и
$1 = $1 "," $2
означает, что и $1 и $2 являются строковыми. Приведение к типу выполняется при необходимости.
Если по контексту тип не может быть определен, например:
if ($1 == $2) ...
тип поля определяется при вводе.
Поля, которые являются нулевыми, имеют строки со значением "", они не являются цифровыми.
Определения типов для элементов массива, созданных split(), аналогичны определению типов для полей.
Так, если arr[i] не существует, то :
if (arr[i] == "") ...
приводит к тому, что он появляется со значением "".
ЗАЩИТА И НАДЕЖНОСТЬ СИСТЕМЫ
Введение
Каждая вычислительная система нуждается в защите от людей, пытающихся обратиться к машине, дискам и системным файлам без санкции администратора системы. Операционная система осуществляет свою собственную защиту через механизм встроенных функций. Эти функции доступны всем пользователям системы и поддерживаются администратором системы.
В данном разделе защита рассматривается с точки зрения обычного пользователя. Функции, не наблюдаемые в вашей системе, выключены администратором.
Далее будут рассмотрены следующие вопросы:
* терминология, используемая в описании методологии защиты
* роль администратора
* регистрация в системе, смена пароля и использование другого регистрационного счета
* запуск команд в системе с защитой
* советы и приемы защиты данных.
Терминология
При описании методологии защиты используется следующая терминология:
"Троянский конь" - это программа, невинно маскирующаяся под простую программу. Она открывает другому пользователю дорогу к захвату ваших данных, разрушению целостности ваших файлов или доступ к вашему регистрационному счету.
Под видом программы регистрации действует некая программа-мистификатор, пытающаяся разузнать ваш пароль. Программа запрашивает параметры регистрации и ожидает ввода с терминала вашего имени и пароля, после получения которых запоминает пароль и сообщает о том, что попытка регистрации не удалась. На этом ложная программа регистрации завершает свою работу, уступая место истинной программе регистрации.
Подсистема защиты включает в себя файлы, устройства и команды, осуществляющие процесс защиты ресурсов.
База защиты вычислений (TCB) объединяет в себе соответствующее техническое, программное и микропрограммное обеспечение.
Ответственный за секретность
Ответственный за секретность (администратор) призван обеспечить проведение соответствующих мероприятий, слежение за системой, пресечение попыток пробить защиту и восстановление системы защиты после неблагоприятных событий.
Защита на входе в систему
В данном разделе описывается порядок регистрации, смена пароля и использования другого регистрационного счета в системе с защитой. Рассматриваются также возможные выходы из затруднительных положений.
Регистрация
Запрос параметров регистрации имеет следующий вид:
│ login: имя_пользователя
│ password: неотображаемый_пароль
│
Если пароль указан верно, на экране появляются даты последних удачной и неудачной попыток регистрации данного пользователя:
────────────────────────────────────────────────────
│ Last successful login for пользователь: дата и время
│ Last unsuccessful login for пользователь: дата и время
│
Если эти даты не совпадают с датами аналогичных действий с вашей стороны, немедленно обратитесь к администратору. Не исключено, что ваш регистрационный счет использован кем-то другим.
Что нужно делать в случае неудачи
Если войти в систему вам не удается, последовательно рассмотрите возможность каждой из следующих причин:
* Для вашего пароля администратором был установлен срок действия, истекший к данному моменту. Попросите администратора изменить ваш пароль и открыть заново ваш регистрационный счет.
* Администратор установил ограничение на количество неудачных попыток регистрации, связанных с данным регистрационным счетом. При превышении указанного ограничения регистрационный счет пользователя автоматически блокируется. Попросите администратора открыть счет заново. Если же вы считаете, что ввели параметры регистрации правильно, немедленно обратитесь к администратору. Не исключено, что система была повреждена в результате постороннего вмешательства.
* Администратор установил ограничение на количество неудачных попыток регистрации, разрешенных на вашем терминале. При превышении указанного ограничения регистрационный счет пользователя автоматически блокируется. Попросите администратора открыть счет заново. Если же вы считаете, что ввели параметры регистрации правильно, немедленно обратитесь к администратору.
* Администратор заблокировал ваш регистрационный счет или терминал. Чтобы продолжить работу, попросите администратора открыть счет заново.
* Администратор установил дату окончания действия пароля. Вам предоставляется возможность сменить пароль.
* Если вы забыли свой пароль, попросите администратора сменить его.
Смена пароля
Смена пароля производится с разрешения и по усмотрению администратора. Администратор также может устанавливать минимальный интервал времени между сменами пароля.
Если самостоятельная смена пароля вам не разрешена:
В этом случае при попытке использования команды passwd выдается соответствующее сообщение, приведенное ниже. За новым паролем обратитесь к администратору.
────────────────────────────────────────────────────
│ Password cannot be changed. Reason: Not allowed to execute
│ password for the given user.
│
Если самостоятельная смена пароля вам разрешена:
В этом случае администратор указывает в вашем регистрационном счете на возможность выбора пароля по вашему усмотрению или использования пароля, сгенерированного системой.
Если вы введете команду passwd, она запросит ваш текущий пароль:
────────────────────────────────────────────────────
│ Old password:
│
Если вы ответили правильно, на экране появится информация о времени последнего изменения вашего пароля:
────────────────────────────────────────────────────
│ Last successful login for пользователь: дата и время
│ Last unsuccessful login for пользователь: дата и время
│
Сверьте эти данные с вашими реальными действиями. При наличии несоответствия немедленно поставьте в известность администратора.
Затем появляется следующий запрос:
────────────────────────────────────────────────────
│ Choose password
│
│ You can choose whether you pick your own password,
│ or have the system create one for you.
│
│ 1. Pick your own password
│ 2. Pronounceable password will be generated for you
│
│ Enter choice (default is 1):
│
Если вы ответите "1" (этот же ответ принимается по умолчанию), вам будет предложено ввести новый пароль самостоятельно.
Чтобы избежать недоразумений, пароль вводится дважды.
Если вы ответили "2", пароль будет сгенерирован системой. На экране при этом появится следующее сообщение:
────────────────────────────────────────────────────
│ Generating random pronounceable password for пользователь.
│ The password, along with the hyphenated version, is shown.
│ Hit <RETURN> or <ENTER> until you like the choice.
│ When you have chosen the password you want, type it in.
│ Note: Type your interrupt character or 'quit' to abort at any
│ time.
│
│ Password:xxxxxx Hyphenation:xx-xx-xx Enter password:
│
Вам предлагается нажимать клавишу <RETURN> или <ENTER> до тех пор, пока один из предлагаемых вам паролей не удовлетворит вас.
Как только последнее произойдет, вам следует ввести выбранный пароль в машину. Чтобы легче было запомнить пароль, он разбивается на экране на несколько частей, связанных символом "дефис".
Если же вы передумали менять пароль, введите "quit" или нажмите клавишу прерывания (обычно <DEL>). В этом случае попытка смены пароля будет признана неудачной и на экране появится следующее сообщение:
────────────────────────────────────────────────────
│ Password cannot be changed. Reason: user stopped program.
│
Использование другого регистрационного счета
Команда su позволяет использовать другой регистрационный счет. Администратор может ограничивать возможности использования этой команды. Например, пользователям обычно не дозволяется переключаться на счет администратора или корневой счет.
Командный аспект секретности
────────────────────────────────────────────────────
Список команд, разрешенных к использованию в системе с защитой данных, строго ограничен. Некоторые команды требуют специальной санкции администратора. В данном разделе рассматриваются различные типы разрешений и их влияние на возможности используемых команд.
Распределение полномочий
В механизме защиты используются два уровня санкционирования: уровень ядра и уровень подсистемы. Санкционирование на уровне ядра включает в себя выдачу разрешений на запуск определенных процессов в данной операционной среде. Санкционирование на уровне подсистемы касается выполнения определенных команд в подсистеме с защитой данных.
Команды санкционирования на уровне ядра:
execsuid Позволяет запускать SUID-программы. SUID-программа получает доступ ко всем файлам, процессам и ресурсам, принадлежащим пользователю, который запустил программу, или владельцу программного файла.
nopromain Определяет поведение SUID-программы. Если разрешение данного типа установлено, SUID-программы запускаются, как в традиционных UNIX-подобных системах. В противном случае создается т.н. промен (promain - от "protected domain", что означает "защищенный домен"), в котором программы имеют меньше возможностей разрушить или использовать принадлежащие вам данные.
chmodsugid Позволяет с помощью команды chmod менять атрибуты setuid и setgid для файла или каталога.
chown Позволяет с помощью команды chown производить смену владельцев файлов.
На уровне подсистемы имеются два подуровня санкционирования: первичный и вторичный. На первичном подуровне выдается разрешение на использование команд с присвоением привилегий администратора. Все эти привилегии полностью описаны в руководстве администратора (Administrator's Guide). Простым пользователям могут быть переданы следующие привилегии:
mem Разрешение использования команды ps для проверки статуса выполнения процессов, принадлежащих другим пользователям, и команды ipcs для исследования статуса взаимодействия процессов. Пользователи, не имеющие указанного разрешения, могут наблюдать только за своими собственными процессами.
terminal Разрешение использования команды write для осуществления связи с другими пользователями. При отсутствии указанного разрешения команда write преобразует все содержащиеся в сообщении управляющие коды и esc-последовательности в символы ASCII.
На вторичном подуровне выдается разрешение на использование команд подсистемы без передачи привилегий администратора. Вторичные полномочия включают в себя:
printqueue Разрешение на просмотр очереди заданий, запущенных другими пользователями и ожидающих вы вода на печать.
printerstat Разрешение использования команд enable и disable для изменения статуса печатающего устройства.
queryspace Разрешение использования команды df для получения информации об об'емах пространства, принадлежащего различным файловым системам.
Обратите внимание на то, что на уровне подсистемы разрешение на смену регистрационного счета командой su не выдается.
Команда auths
Команда auths позволяет просматривать перечень выделенных вам на уровне ядра полномочий и перезапускать Shell с указанными полномочиями на использование тех или иных команд. Перейдем к объяснению порядка использования команды auths с различными аргументами (примеры даны для пользователя с полномочиями типа execsuid и chown):
* Команда auths без аргументов выдает список полномочий уровня ядра. Например:
───────────────────────────────────────────────────
│ $ auths
│ Kernel authorizations: execsuid, chown
│
* Команда auths с опцией -a позволяет ограничивать набор выделяемых полномочий. Так, например, пользователь, уже имеющий полномочия execsuid и chown, может сократить их до полномочия chown:
──────────────────────────────────────────────────
│ $ auths -a chown
│ $ auths
│ Kernel authorizations: chown
│
Для восстановления полномочий вам следует выйти из Shell'а, запущенного с командой auths -a.
* Команда auths с опцией -r позволяет указывать снимаемые полномочия. Например:
───────────────────────────────────────────────────
│ $ auths -r chown
│ $ auths
│ Kernel authorizations: execsuid
│
Для восстановления полномочий вам следует выйти из Shell'а, запущенного с командой auths -r.
* Команда auths с опцией -c позволяет вместо запуска интерактивной подоболочки вводить команду. В нижеприведенном примере после удаления полномочий chown запускается команда auths.
────────────────────────────────────────────────────
│ $ auths -r chown -c auths
│ Kernel authorizations: execsuid
│
Когда же пользователь вновь обратится к списку полномочий, которыми он располагает, полномочия chown восстановятся:
────────────────────────────────────────────────────
│ $ auths
│ Kernel authorizations: execsuid, chown
│
Промены
Благодаря наличию променов можно управлять степенью разрушений, порождаемых в ваших данных SUID-программой. Напомним, что SUID-программа начинает свое выполнение под исполнительным кодом пользователя, равным коду владельца SUID-программы, и действительным кодом пользователя, вызвавшего программу. В традиционных UNIX-подобных системах SUID-программа имеет полный доступ ко всем файлам, процессам и IPC-об'ектам (т.е. ко всему, что имеет общее название "ресурсы"), к которым владелец программы ИЛИ инициатор ее запуска сам имеет доступ, поскольку программа с помощью команды setuid может переходить с кода владельца на код запускающего. Снаружи промена эта возможность ограничивается ресурсами, к которым инициатор запуска и владелец имеют доступ одновременно, что видно из настоящего раздела.
В UNIX-подобных системах SUID-программы используются для того, чтобы защитить файлы от доступа к ним извне кого бы то ни было, за исключением хорошо известного набора программ. Примером может служить набор команд управления устройством построчной печати, имеющий дело с совокупностью файлов конфигурации, файлов состояния и командных файлов на языке Shell, с помощью которых ведется слежение за распределением заданий между печатающими устройствами. Несколькими командами пользователи и администраторы запускают и отменяют эти задания, запрашивают и изменяют статус печатающих устройств, добавляют и удаляют устройства из системы или из активного контура. Все файлы печати принадлежат псевдопользователю lp, код которого выступает в качестве кода владельца всех файлов, используемых в подсистеме управления построчной печатью, включая сами специальные файлы печатающих устройств.
В то время, когда файл распечатывается командой lp, программа может обращаться не только к файлам в базе данных, но также и к файлам, направляемым на принтер, ибо она может переключиться на ваш пользовательский код с тем, чтобы получить доступ к вашим файлам. Программа-нарушитель с легкостью отыщет в структуре ваших каталогов защищенные файлы и скопирует их в специальное место, доступное только для lp. Другими словами, ваше доверие lp как программе базируется на надежде, что она не злоупотребит выделенной ей властью.
Если при запуске SUID-программы привилегия nopromain отсутствует, промен создается и текущий каталог становится корнем промена. Файлы в поддереве, начинающемся с этого корня, находятся внутри промена, все прочие файлы являются по отношению к промену внешними. Промены защищают данные пользователя от программы-нарушителя, ограничивая способы доступа последней к содержимому промена. Выполняясь под кодом идентификации пользователя, инициировавшего ее запуск, SUID-программа может обращаться только к тем файлам, к которым имеют доступ как сам инициатор, так и владелец (т.е. к общим файлам). Внутри же промена все обращения программ подчиняются обычным правилам. Примеры использования променов см. в UNIX User's Reference.
Защита файлов в каталогах, имеющих признак sticky-bit
Удаление файла из каталога, имеющего признак sticky-bit, разрешено только владельцу файла.
Запрещенные команды
В системе с защитой данных запрещено использование сетевых команд. Передавая данные, администратор должен использовать диск или ленту.
Рекомендуемая практика защиты данных
Данный раздел содержит в себе набор практических сведений по защите данных, предназначенных для простого пользователя.
Защита пароля
Защита вашего пароля является вашей обязанностью. При выборе и сохранении пароля руководствуйтесь следующими указаниями:
* Пароль должен иметь длину не менее 8 символов и включать в себя буквы, цифры и знаки пунктуации. Например: frAiJ6*.
* Не используйте пароль, который легко разгадать. Паролем не должно быть имя, прозвище или слово, имеющееся в каталоге. Не пользуйтесь также датой вашего рождения и вашими адресными данными.
* Не используйте обратное написание слов.
* Не вставляйте в начало или конец пароля цифры (например, terry9).
* На разных машинах используйте различные пароли. Не используйте в паролях наименования машин.
* Всегда храните пароли в тайне от других. Пароль никогда не следует записывать на бумаге, использовать совместно с кем бы то ни было, передавать по электронной почте или разглашать в разговоре.
* Не используйте один и тот же пароль многократно. Иначе возрастает вероятность его угадывания посторонними лицами.
* Никогда не вводите пароль в машину в чьем-либо присутствии.
Вход и выход
Ниже приводятся некоторые практические рекомендации, к которым полезно было бы прислушаться на стадиях входа в систему и выхода из системы:
* На входе в систему сверяйте данные о последней регистрации, сообщаемые машиной, с вашими реальными действиями. Обращайте внимание на аналогичную информацию, касающуюся попыток регистрации, на выходе из системы. О всех несоответствиях немедленно ставьте в известность администратора.
* Будьте внимательны при вводе пароля.
* Если при вводе пароля система выдает сообщение об ошибке, несмотря на то, что на ваш взгляд ваши действия являются правильными, немедленно поставьте в известность администратора. Сверьте время последней регистрации в сообщении с текущим временем. Причиной несоответствия может быть использование вашего пароля некой программой-мистификатором.
* Никогда не оставляйте терминал, не выйдя предварительно из системы.
Защита файлов
При создании, копировании и перемещении файлов следуйте следующим рекомендациям:
* При создании файла или каталога им будут сообщены права доступа, определенные в вашем загрузочном файле. Доступ ко вновь создаваемым файлам и каталогам следует разрешать только владельцу (т.е. вам) и группе. Если вы предполагаете использовать какие-то файлы совместно с другими пользователями, измените права доступа к каждому из этих файлов по отдельности.
* В результате использования команды cp для копирования SUID-файла, принадлежащего не вам, будет создан новый SUID-файл, владельцем которого уже будете вы. Обратите внимание на то, что этот файл имеет доступ ко всем вашим файлам и каталогам. Будет разумным шагом использовать команду chmod для такого изменения прав доступа к файлу, после которого файл остался бы доступен только для вас.
* В результате использования команды cp для копирования файла будет создан новый файл, наследующий права доступа от исходного файла. Не забудьте проверить эти данные и в случае необходимости внесите в них изменения командой chmod.
* Помните о том, что временные каталоги открыты для всех.
* Для проверки прав доступа к вашей оболочке, почте и загрузочному файлу используйте команду ls. Если окажется, что файлы открыты для посторонних на чтение и модификацию, ограничьте доступ к ним командой chmod.
Запуск ненадежных программ
Данный раздел содержит указания по запуску ненадежных программ, касающиеся защиты файлов, доступ к которым должен быть закрыт.
Защищенный фрагмент иерархической файловой структуры может быть создан путем использования т.н. "шлюзового" (промежуточного) каталога, выполняющего роль "клапана" или пропускного устройства по отношению к программам, выполняющимся в каталогах ниже "шлюзового". Такой механизм становится на пути возможности открытия файлов по относительным составным именам (т.е. по именам, не начинающимся с "/"), а также возможности поиска, открытия и удаления файлов по полным составным именам.
Прислушайтесь к следующим рекомендациям:
1. Снимите полномочия типа execsuid, chmodsugid и chown с вашей программы командой auths. Такая операция не позволит программе запускать другие SUID-программы, создавать SUID-файлы с передачей их в ваше владение и отбирать их обратно с помощью команды chown. auths -r execsuid,chmodsugid,chown
2. Создайте "шлюзовой" каталог. Затем перенесите все файлы, обрабатываемые программой, в подкаталог указанного каталога. После этого смените маску защиты для "шлюзового" каталога на 000 командой chmod:
mkdir /usr/you/gateway
mkdir /usr/you/gateway/test
cd /usr/you/gateway/test
cp /usr/you/testfiles/* .
chmod 000 /usr/you/gateway
ls -ldu /usr/you/gateway
Обратите внимание на время, содержащееся в сообщении команды ls. Это время является моментом выполнения предыдущей команды chmod.
3. Закройте доступ к вашему загрузочному каталогу:
chmod 000 /usr/you
4. Обратите внимание на сообщение команды ls:
cd
ls -ldu
Время, содержащееся в сообщении, может измениться. Это говорит о том, что ваш каталог был открыт и закрыт программой.
5. Запустите программу. Все обращения к файлам по относительным составным именам, начинающимся от каталога /usr/you/gateway/test, остановятся на уровне "шлюзового" каталога и любые другие попытки получить доступ к файлам в вашей иерархии остановятся на уровне вашего загрузочного каталога.
6. Проверьте состояние фоновых процессов. Программа-нарушитель может инициировать выполнение процесса, угрожающего целостности ваших данных и ожидающего лишь удобного случая для достижения своей цели.
7. После запуска программы следите за появляющимися сообщениями об ошибках и файлами-невидимками (используя команду ls с опцией -a). Обращайте особое внимание на время последнего обращения к вашему загрузочному и "шлюзовому" каталогам:
ls -ldu /usr/you
chmod 750 /usr/you
ls -ldu /usr/you/gateway
8. В зависимости от вашего желания вы можете восстановить прежние права доступа к "шлюзовому" каталогу:
chmod 750 /usr/you/gateway
Теперь вы можете вывести результаты программы, убрать "шлюзовой" каталог и т.д.
Благодаря вышеописанной процедуре большая часть ваших файлов будет защищена от нанесения ущерба. Тем не менее, изощренные атаки, управляющие доступом к вашим "шлюзовому" и загрузочному каталогам и нарушающие целостность ваших файлов, могут быть обнаружены только по своим последствиям. Если программа не вызывает вашего доверия, перед ее запуском следует сохранить вашу файловую структуру или проанализировать исходный текст самой программы.
Шифрование информации - команды и описания
Если ваши данные чувствительны к внешнему воздействию и требуют дополнительных мер защиты, помимо ограничения доступа, вы можете зашифровать или закодировать их. Закодированный файл нельзя прочесть, не зная пароля.
-----------------------------------------------------------------
Замечание.
Возможность шифрования информации требует инсталляции в вашей системе команды crypt. Соответствующее программное обеспечение имеет хождение только в Соединенных Штатах и может быть заказано у вашего дистрибьютера.
-----------------------------------------------------------------
В процессе шифрования используются семь различных команд. Краткое описание этих команд содержится в следующей таблице.
┌───────────┬────────────────────────────────────────────────────┐
│ Командная │ Описание │
│ строка │ │
├───────────┼────────────────────────────────────────────────────┤
│ crypt │ Эта команда используется для кодирования и декоди- │
│ │ рования файлов. Она считывает данные из стандартно- │
│ │ го ввода или с клавиатуры и записывает в стандарт- │
│ │ ный вывод или на терминал. │
├───────────┼────────────────────────────────────────────────────┤
│ makekey │ Эта команда создает ключ шифрования. │
├───────────┼────────────────────────────────────────────────────┤
│ ed -x │ Редактирует уже существующий закодированный файл │
│ │ или создает новый закодированный файл средствами │
│ │ редактора ed. │
├───────────┼────────────────────────────────────────────────────┤
│ vi -x │ Редактирует уже существующий закодированный файл │
│ │ или создает новый закодированный файл средствами │
│ │ редактора vi. │
└───────────┴────────────────────────────────────────────────────┘
┌───────────┬────────────────────────────────────────────────────┐
│ ex -x │ Редактирует уже существующий закодированный файл │
│ │ или создает новый закодированный файл средствами │
│ │ редактора ex. │
├───────────┼────────────────────────────────────────────────────┤
│ edit -x │ Редактирует уже существующий закодированный файл │
│ │ или создает новый закодированный файл средствами │
│ │ редактора edit. │
├───────────┼────────────────────────────────────────────────────┤
│ X │ Эта команда выполняет кодирование файла, находяще- │
│ │ гося в режиме редактирования (ed, ex или edit). │
└───────────┴────────────────────────────────────────────────────┘
Команда crypt - кодирование/декодирование файлов
Команда crypt выполняет кодирование и декодирование файлов. По этой команде файлу присваивается пароль (ключ) шифрования. Тот же самый пароль используется при декодировании файла. Закодированный файл не доступен для чтения без пароля.
Если в команде crypt пароль не указан, система предложит вам ввести его. При этом вводимый вами пароль на экране не отображается.
Защита пароля - наиболее уязвимое место команды crypt. Любой человек, узнавший ваш пароль, получает доступ к вашим файлам. Старайтесь избегать известных сочетаний символов при выборе пароля.
Файл может быть закодирован в режиме оболочки (командой crypt) и в режиме редактирования (с помощью опций -x и X). Декодирование файла осуществляется командой crypt в режиме оболочки. Формат команды кодирования файла:
crypt <старый_файл> новый_файл
Прежде, чем удалить старый файл, убедитесь в том, что закодированный новый файл поддается декодированию.
-----------------------------------------------------------------
Замечание.
Помните всегда о необходимости удаления старых, незакодированных файлов. Закодированным останется лишь новый файл.
-----------------------------------------------------------------
Команда crypt без аргументов принимает стандартный ввод с клавиатуры и кодирует его перед направлением в стандартный вывод (на экран). Чтобы закодировать существующий файл, сделайте указание команде crypt принять ввод (<) из файла вместо клавиатуры. Точно также вывод команды (>) можно направить вместо дисплея в новый файл.
Чтобы декодировать файл, перенаправьте вывод из закодированного файла в новый файл, доступный для чтения. Формат команды декодирования файла:
crypt <закодированный_файл> имя_нового_файла
-----------------------------------------------------------------
Замечание.
Кодирование и декодирование файлов всегда выполняйте по отдельности.
-----------------------------------------------------------------
Кодирование данных в редакторах
Такие редакторы, как ed, edit, ex и vi, могут использоваться как для редактирования существующего закодированного файла, так и для создания нового закодированного файла (с помощью опции -x). При выполнении кодирования вами назначается пароль, который используется и при выполнении декодирования. Закодированный файл не доступен для чтения без пароля.
Командные строки вызова редакторов (ed, edit, ex и vi) с опцией -x имеют вид:
ed -x [имя_файла]
edit -x [имя_файла]
ex -x [имя_файла]
vi -x [имя_файла]
Опция -x используется либо для редактирования уже существующего закодированного файла, либо для создания нового закодированного файла. Система предложит вам ввести пароль.
Для декодирования файла следует в режиме оболочки вызвать команду crypt.
Другим способом кодирования файла в режиме редактирования является использование команды редактора X. Эта команда работает только в редакторах ed, edit и ex. (В редакторе vi ей соответствует команда :X.) Для выполнения кодирования/декодирования ей так же требуется пароль.
Воспользоваться командой X вы можете и сразу после редактирования файла, для этого:
1. Оставаясь в редакторе, укажите в строке символ X.
2. Система предложит вам ввести пароль.
3. Выйдите из файла.