русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

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


Дата добавления: 2014-11-28; просмотров: 1606; Нарушение авторских прав


Временные отметки (ВО) обычно фиксируются в компьютерной памяти в виде 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

№ п/п Файловая операция Временные отметки источника Временные отметки приемника
Каталог Файл Каталог Файл
С М А С М А С М А С М А
Копирование файла обычное                        
Копирование с замещением файла                        
Копирование с переименованием файла                        
Перемещение файла       * * *            
Создание прямой ссылки на файл                        
Создание символической ссылки на файл                        
Чтение файла через символическую ссылку                        
Запись файла через символическую ссылку                        
Запуск файла через символическую ссылку                        
Переход в другой каталог                        

 

 

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

 

Таблица 4.7

№ п/п Файловая операция Временные отметки
Каталог Файл
С М А С М А
Создание каталога            
Создание файла            
Запись в файл            
Чтение файла            
Исполнение программного файла            
Удаление файла * * *      
Изменение владельца файла            
Изменение прав доступа к файлу            
Переименование файла            
Поиск файла в каталоге            
Монтирование файловой системы к пустому каталогу            
Вход в каталог и выход из него            

 

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

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

 

4.3. Алгоритмы логического удаления и восстановления файлов

 

Многие исследователи и опытные пользователи утверждают, что операционные системы клона Linux весьма надежны и успешно противостоят сбоям в работе. Тем не менее опасность потери файлов с ценной информацией является угрозой для любой системы. Чаще эти угрозы исходят не от операционной системы, а от пользователей. Для обычного пользователя, не имеющего доступа к элементам файловой системы, восстановление уничтоженной информации невозможно. Правда, графическая оболочка современных версий Linux предусматривает «корзину» для удаленных файлов.

Администратор имеет право использовать отладчики и редакторы файловой системы, но восстановление удаленных файлов требует хороших знаний о файловой системе и может потребовать немало времени.

Логическое удаление файла в Linux происходит тогда, когда из соответствующего каталога удаляется последнее имя (жесткая ссылка) файла. Кроме удаления записи в каталоге, система обнуляет биты, закрепленные за этим файлом в битовой карте блоков и индексных дескрипторов, увеличивая цифру свободных inode и блоков.

Удаление объектов файловой системы производится с помощью утилиты rm (remove). Ввод команды с опцией –f означает безусловное удаление файла, при указании -r происходит безусловное рекурсивное удаление каталога. При обычном удалении файла система выводит запрос на удаление, который необходимо подтвердить символом «Y» (Yes) и <Enter>.

Право на удаление файла в ОС Linux вообще не предусматривается. Для того чтобы удалить файл, пользователь должен иметь права на запись и исполнение в том каталоге, где удаляемый файл находится. На сам удаляемый файл пользователь может вообще не иметь никаких прав. В файловых системах Linux существует единственный каталог, в который имеет право записывать информацию любой пользователь, – это каталог /tmp. И любой пользователь прежде имел возможность в любой момент удалить из этого каталога любые файлы. Для предотвращения такой возможности уже давно используется специальный Sticky-бит, устанавливаемый на этот каталог. Так, права доступа к каталогу /tmp устанавливаются командой

chmod 1777 /tmp,

где первая единица в правах доступа обозначает Sticky-бит.

Права доступа к этому каталогу, отображаемые командой ls –l, будут отображаться так: drwxrwxrwt. Последний символ t как раз и указывает на наличие дополнительных прав (или ограничений) доступа. Но если задать права доступа к этому же каталогу в виде команды chmod 1776 /tmp, то отображаемые права доступа будут выглядеть уже так: drwxrwxrwT. Прописной символ T указывает на противоречие в предоставленных правах: Sticky-бит установлен, но прав на исполнение (поиск в каталоге) для всех пользователей не предоставлено. Это очевидная нелепость, оставшаяся в наследство от давно забытых решений: sticky-бит имеет смысл только при установленном для всех пользователей праве на запись в каталог. Если права записи нет, то и в дополнительном праве (точнее – в запрете) потребности не возникает.

Универсальные операционные системы семейств UNIX и Windows* по умолчанию не предусматривают физического удаления файлов. Для гарантированного стирания файлов пользователям рекомендуется использовать специальные утилиты, которые именуются шредерами (от англ. shred – кромсать, резать). Утилита с таким названием имеется в штатной инсталляции современных операционных систем Linux. Она многократно (по умолчанию 25 раз) перезаписывает 128-байтный фрагмент inode и каждый из выделенных файлу блоков данных. При удалении данных записываемые комбинации бит меняются случайным образом, чтобы каждый элементарный домен на поверхности диска многократно перемагничивался противоположно направленными силовыми линиями магнитного поля. Синтаксис команды shred приведен в кратком справочнике по командам Linux в прил. 1.

Процесс удаления файлов по-разному происходит в файловых системах ext2fs и ext3fs.

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

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

Прослеживается логическая цепочка: каждое из имен файлов содержит ссылку на номер индексного дескриптора, а inode в свою очередь ссылается на номера блоков данных. Но обратной связи не существует: в блоках данных отсутствует информация о том, какому файлу они принадлежат (если только файл не имеет собственной сложной структуры с дублирующей информацией), а в inode нет упоминания об именах файла. Удаление файла начинается с удаления его последнего имени, поэтому искать удаленный файл по его прежнему имени часто бессмысленно. Пример этого будет приведен ниже.

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

Проверить, как происходит создание и удаление файлов в файловых системах ext2fsиext3fs,читателям предлагается, выполнив лабораторное задание № 3.

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

Теперь рассмотрим, что происходит с данными каталога при удалении файла в файловой системе ext2fs. На рис. 4.15 изображен фрагмент логического блока с номером 0x00100203, содержащего каталог /home. В данном каталоге был удален файл с именем Pr_Linux.doc.

 



<== предыдущая лекция | следующая лекция ==>
Drwxr-xr-x 17 root root 4096 Мар 18 17:36 var | СЕТЕВЫЕ ВОЗМОЖНОСТИ ОПЕРАЦИОННЫХ СИСТЕМ LINUX


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.281 сек.