В структурах данных индексных узлов хранятся метаданные, описывающие файлы и каталоги. И снова в 11Е81 и иЕ82 используются разные структуры данных, поскольку поля иЕ82 имеют больший размер. Индексные узлы делятся между группами цилиндров; количество индексных узлов в одной группе указывается в суперблоке. Каждая группа цилиндров обладает собственной таблицей индексных узлов, ее смещение также задается в суперблоке. В ОТЗІ величина начального сдвига таблицы индексных узлов изменяется в зависимости от группы цилиндров (разброс), но в иР82 индексные таблицы всегда располагаются с одинаковым смещением относительно начала группы.

Длина индексных узлов иРБІ составляет 128 байт, а их поля перечислены в табл. 17.7.

Таблица 17.7. Структура данных индексного узла в 1)РБ1

Диапазон

Описание

Необходимость

0-1

Режим файла (тип и разрешения) - см. раздел

«Индексные узлы» главы 15

Да

2-3

Счетчик ссылок

Да

4-7

Не используется

Нет

8-15

Размер

Да

16-19

Время обращения

Нет

20-23

Время обращения (наносекунды)

Нет

24-27

Время модификации

Нет

28-31

Время модификации (наносекунды)

Нет

32-35

Время изменения

Нет

36-39

Время изменения (наносекунды)

Нет

40-87

12 прямых указателей на блоки

Да

88-91

Косвенный указатель 1 уровня

Да

92-95

Косвенный указатель второго уровня

Да

96-99

Косвенный указатель третьего уровня

Да

100-103

Флаги состояния

Нет

104-107

Количество блоков

Нет

108-111

Номер поколения (^Б)

Нет

112-115

Идентификатор пользователя

Нет

116-119

Идентификатор группы

Нет

120-127

Не используется

Нет

Поле режима содержит те же значения, что и в ExtX. Счетчик ссылок выполняет те же функции и увеличивается с созданием каждого имени файла, ссылающегося на индексный узел. За подробностями обращайтесь к главе 15.

Рассмотрим индексный узел из образа UFS1. В начале главы уже говорилось о том, что таблица индексных узлов смещена на 32 фрагмента от базового адреса группы, а так как речь идет о группе 0, мы знаем, что таблица находится во фрагменте 32. Первым используемым индексным узлом файловой системы является узел 3, поэтому мы извлекаем его содержимое с помощью dcat и dd:

# dcat -f openbsd openbsd.dd 32 dd bs=128 skip=3 count=l xxd

0000000: a481 0100 0000 0000 0074 1300 0000 0000 .........t......

0000016: 689d 0f41 8033 023b 7a9d 0f41 0057 a616 h..A.3.;zt.A.W..

0000032: 7a9d 0f41 0057 a616 2001 0000 2801 0000 Z..A.W.....(...

0000048: 3001 0000 3801 0000 4001 0000 4801 0000 0...8....H...

0000064: 5001 0000 5801 0000 9001 0000 9801 0000 P...X...........

0000080: aOOl 0000 a801 0000 8001 0000 0000 0000 ................

0000096: 0000 0000 0000 0000 d009 0000 5ade 19ас ............Z...

0000112: 0000 0000 0000 0000 0000 0000 0000 0000 ................

Первые 4 байта определяют режим; пример разбора для UFS2 уже приводился ранее в разделе «Индексные узлы» главы 15, поэтому сейчас мы его рассматривать не будем. Биты 12-15 содержат значение 8 - это признак обычного файла. Размер (байты 8-15) составляет 1 274 880 байт (0x00137400). A-время задается в байтах 16-19. После преобразования в обычный формат мы получаем 14:12:56, 3 августа 2004 г. по UTC.

Адрес первого блока в байтах 40-43 равен 288 (0x0120). Второй блок обладает адресом 296 (0x0128). Эти блоки являются смежными, так как в файловой системе один блок состоит из 8 фрагментов. В байтах 88-91 содержится косвенный указатель на блок, содержащий указатели на блоки; в нашем примере это блок 384.

Программа istat выводит для этого файла следующий результат:

# istat -f openbsd -z UTC openbsd.dd 3 inode: 3

Allocated Group: 0

uid / gid: 0/0 mode: -rw-r--r--size: 1274880 num of links: 1

Inode Times:

Accessed: Tue Aug 3 14:12:56 2004

File Modified: Tue Aug 3 14:13:14 2004

Inode Modified: Tue Aug 3 14:13:14 2004

Direct Blocks:

288 289 290 291 292 293 294 295 296 297 298 299 300 301 301 303 304 305 306 307 308 309 310 311 [...]

1568 1569 1570 1571 1572 1573 1574 1575 1576 1577 1578 1579 1580 Indirect Blocks :

384 385 386 387 388 389 390 391

В выходных данных istat перечисляются все выделенные фрагменты; в последней строке указано всего пять фрагментов.

Информация о состоянии выделения индексного узла хранится в битовой карте индексных узлов. Для каждой группы цилиндров ведется битовая карта индексных узлов, которая хранится в дескрипторе группы. При рассмотрении дескриптора группы UFS1 было показано, что таблица индексных узлов начинается со смещения 264. Мы можем просмотреть ее содержимое:

# dcat -f openbsd openbsd.dd 24 8 xxd [...]

0000256: 3f00 3f00 3f00 3f00 ffOO 0000 0000 0000 ?.?.?.?.........

0000272: 0000 0000 0000 0000 0000 0000 0000 0000 ................

[...]

Байт 264 равен Oxff; это означает, что индексные узлы 0-7 выделены (содержимое узла 3 было проанализировано ранее). Индексные узлы 8 и далее в этой группе цилиндров свободны.

Битовые карты блоков и фрагментов | Криминалистический анализ файловых систем | Индексные узлы ирб2


Криминалистический анализ файловых систем



Новости за месяц

  • Март
    2020
  • Пн
  • Вт
  • Ср
  • Чт
  • Пт
  • Сб
  • Вс