Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Redaktsia_4_UP_Linux_-_Osnovnaya_chast.doc
Скачиваний:
57
Добавлен:
06.11.2018
Размер:
2.02 Mб
Скачать

4.2. Временные отметки файлов

Временные отметки (ВО) обычно фиксируются в компьютерной памяти в виде 4-байтных полей, содержащих число секунд с новогодней полуночи 1970 года. В индексном дескрипторе файла сохраняются 4 временные отметки [6]:

  • время C (Create) – время последнего изменения индексного дескриптора. Судя по справочным данным о системных вызовах (см. ниже), это значение обновляется при создании файла и записи в существующий файл, при изменении прав владения и доступа, а также изменении количества имен файла (прямых ссылок на inode). Для каталога и символической ссылки действуют эти же правила;

  • время A (Access) – время последнего открытия файла. Как указано в [6], эта временная отметка обновляется при создании или чтении файла. Но по отношению к каталогам это не вполне верно. Время А также может обновляться или произвольно устанавливаться с помощью системного вызова utime();

  • время M (Modify) – время последней модификации файла или каталога, хотя справедливее назвать его временем последнего сохранения файла. Время М устанавливается при создании файла и при записи в существующий файл или каталог, а также при повторной записи в файл прежних данных. Время М также может обновляться или произвольно устанавливаться с помощью системного вызова utime();

  • время D (Delete) – время удаления файла (иначе – объявления его inode и занимаемого им дискового пространства свободными). В файловых системах еxt3fs и еxt4fs при удалении файла происходит стирание его индексного дескриптора, включая все временные отметки, поэтому использование этой временной отметки выглядит проблематично.

Работа системы с временными отметками файлов программно реализована на уровне системных вызовов. Системный вызов – это обращение прикладной программы к ядру операционной системы для выполнения какой-либо операции. Любая прикладная программа или системная утилита реализует низкоуровневый ввод-вывод путем вызова подпрограмм или функций из системной библиотеки.

Справочные данные о воздействии системных вызовов на временные отметки файлов сведены в табл. 4.5.

Таблица 4.5

Системный вызов

Временные отметки

C

M

A

creat() – создает новый или очищает существующий файл

+

+

+

read() – читает данные из файла в буфер памяти

+

write() – записывает данные из буфера памяти в файл

+

+

link() – создает еще одно имя для существующего файла

+

unlink() – удаляет одно из существующих имен файла

+

utime() – устанавливает времена доступа и модификации указанного файла

+

+

+

Таким образом, преобразование временных отметок файлов происходит по единым алгоритмам, что позволяет использовать ВО при расследовании компьютерных правонарушений в качестве юридических доказательств. И наоборот, временные отметки прошлого предполагается использовать как свидетельство ранее произведенных над файлами операций.

Многие сложные действия над файловыми объектами включают в себя несколько системных вызовов. Так, копирование файла из одного каталога в другой упрощенно представляет собой:

  • открытие первого каталога в режиме чтения,

  • открытие второго каталога в режиме записи,

  • нахождение и чтение индексного дескриптора файла,

  • чтение блоков копируемого файла в буфер памяти,

  • создание во втором каталоге записи о новом файле,

  • создание нового индексного дескриптора файла,

  • выделение новому файлу необходимого количества блоков в новом месте,

  • запись данных из буфера памяти в блоки нового файла,

  • закрытие файлов и каталогов.

Установление и определение ВО файлов может быть связано с временными погрешностями. Системный таймер может накапливать ошибку отсчета текущего времени, и администратор должен систематически проверять и корректировать показание системных часов. Разряженный элемент питания CMOS-памяти приводит к сбросу показаний системных часов при отключении компьютера от источника питания. Файлы, скопированные с сетевых ресурсов, могут иметь иное системное время. В первом приближении будем считать, что системное время определяется с погрешностью, не превышающей одной секунды.

Быстродействие современных компьютерных систем позволяет выполнять основные файловые операции почти мгновенно. Если манипулировать файловыми объектами программно, то за секунду можно успеть изменить состояния и временные отметки у сотен файловых объектов. Но при участии пользователя процесс обновления временных отметок происходит гораздо медленнее. Сравнительно медленно может происходить копирование большого файла, копирование или перемещение группы файлов либо большого каталога.

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

В целях автоматизации процесса наблюдения за динамикой временных отсчетов файлов, а также для исключения ошибок, связанных с «ручными» операциями, автором было написано несколько сценариев, в которых использовались возможности системного вызова stat, а также системной утилиты с аналогичным именем. Вызов stat с именем файла возвращает метаданные этого файла, включая его временные отметки. При этом временные отметки промежуточных каталогов на пути к целевому файлу не искажаются. Утилита stat корректно работает с файловыми системами ext*fs, смонтированными в режиме read only.

Одна из составленных программ через фиксированные интервалы времени производит элементарные операции над файловыми объектами (ФО): создает несколько каталогов, помещает в них небольшие текстовые файлы, производит их чтение, дописывание и удаление, создает прямые и символические ссылки, изменяет права доступа к ФО, осуществляет копирование и перемещение файлов и др. После каждого действия программа выводит на экран или в файл информацию об изменившихся временных отметках ФО. Результаты работы сведены в табл. 4.6 и 4.7.

В табл. 4.6 отображены временные переходы при двухместных операциях, предполагающих различное местоположение исходных и целевых файловых объектов. Звездочки в ячейках временных отметок файла для случая его перемещения указывают на то, что исходный файл логически удаляется, а его временные отметки вместе с inode перестают существовать. В строке 10 таблицы отсутствие отметок указывает на то, что переход из каталога в каталог никаких следов не оставляет, если только при этом не нарушаются права доступа.

Таблица 4.6

п/п

Файловая операция

Временные отметки источника

Временные отметки приемника

Каталог

Файл

Каталог

Файл

С

М

А

С

М

А

С

М

А

С

М

А

1

Копирование файла обычное

2

Копирование с замещением файла

3

Копирование с переименованием файла

4

Перемещение файла

*

*

*

5

Создание прямой ссылки на файл

6

Создание символической ссылки на файл

7

Чтение файла через символическую ссылку

8

Запись файла через символическую ссылку

9

Запуск файла через символическую ссылку

10

Переход в другой каталог

В табл. 4.7 зафиксированы временные отметки, обновившиеся при одноместных операциях. Звездочки в ячейках временных отметок удаленного файла указывают на некорректность их задания.

Таблица 4.7

п/п

Файловая операция

Временные отметки

Каталог

Файл

С

М

А

С

М

А

1

Создание каталога

2

Создание файла

3

Запись в файл

4

Чтение файла

5

Исполнение программного файла

6

Удаление файла

*

*

*

7

Изменение владельца файла

8

Изменение прав доступа к файлу

9

Переименование файла

10

Поиск файла в каталоге

11

Монтирование файловой системы к пустому каталогу

12

Вход в каталог и выход из него

Проведенные наблюдения существенно дополняют и корректируют сведения о ВО файлов, приведенных Б. Кэрриэ [6]. Можно говорить о почти однозначном соответствии между комбинацией синхронно измененных ВО и произведенным действием над файлом. Таким образом, по временным отметкам файлов, каталогов и символических ссылок можно с высокой степенью достоверности реставрировать события прошлого. Более подробные сведения о ретроспективном анализе ВО файлов выходят за рамки данного учебного пособия.

Ранее упомянутая утилита touch с именем существующего файла предназначается для изменения временных меток A и M до текущего значения. Используя аргументы, этой же командой можно устанавливать для файла произвольные значения даты и времени модификации и последнего доступа. Такими возможностями может воспользоваться и нарушитель. Для изменения временных отметок файла нужно обладать правом записи в файл и правом исполнения в каталоге, где этот файл находится.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]