Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
PRILOZhYeNIYe_2.doc
Скачиваний:
11
Добавлен:
10.07.2019
Размер:
337.92 Кб
Скачать

Расширенные атрибуты

В ext3 расширенные атрибуты хранились в отдельном блоке на диске. В индексном дескрипторе в стандартных полях содержится поле ACL, в котором хранится номер блока с расширенными атрибутами. Атрибуты могут быть прочитаны независимо от основных данных файла. Несколько индексных дескрипторов с одинаковыми расширенными атрибутами могут ссылаться на один и тот же блок. Сходство блоков определяется по истории недавних вызовов файлов. Ext4 может хранить расширенные атрибуты как в отдельном блоке, так и прямо в индексном дескрипторе, если они туда поместятся.

ACL или Access Control List состоит из набора записей. Каждый из трех типов пользователей представлен записью в ACL. Минимальный ACL содержит 3 записи: владелец, группа владельца и остальные. Этот набор указан в первых 2 байтах индексного дескриптора и выводится командой ls -l. Расширенный ACL содержит больше записей: в них можно указывать конкретного пользователя и конкретную группу, а также маску [18].

Записи в ACL могут быть нескольких типов, которые представлены в табл. П.2.8. Каждый ACL состоит из заголовка, описателей элементов (или просто элементов) и их значений.

Таблица П.2.8

Типы записей в ACL

Тип

Текстовая форма

Owner

user::rwx

Named user

user:name:rwx

Owning group

group::rwx

Named group

group:name:rwx

Mask

mask::rwx

Others

other::rwx

Заголовки атрибутов, хранимых в индексном дескрипторе и в блоке, разные, но хранятся элементы списков в одинаковом формате. Формат ACL, распределенного по свободному пространству блока или внутри индексного дескриптора, может быть представлен в следующем виде:

Заголовок

Элемент 1

Элемент 2

Элемент 3

4 Нулевых байта

Величина 3

Величина 2

Величина 1

В отдельном блоке диска дескрипторы элементов сортируются, в индексном дескрипторе элементы несортированы. Значения атрибутов (величины) выровнены по концу блока без особого порядка [17].

Заголовки в блоке и в индексном дескрипторе отличаются друг от друга. В табл. П.2.9 представлен формат заголовка в блоке.

Таблица П.2.9

Формат заголовка ACL в блоке

Размер, байт

Поле

4

Магическое число 0хЕА020000

4

Число ссылок

4

Число использованных блоков на диске

4

Хэш-функция от всех атрибутов

4х4

Зарезервировано

В качестве заголовка ACL в индексном дескрипторе используется магическое число 0xEA020000. Описатели элементов расширенного атрибута имеют формат, представленный в табл. 2.10.

Таблица П.2.10

Формат элемента расширенного атрибута

Размер, байт

Поле

1

Длина имени

1

Индекс имени атрибута

2

Смещение величины атрибута от начала блока

4

Номер блока, в котором хранится значение

4

Размер величины атрибута

4

Хэш-функция от имени и значения атрибута

-

Имя атрибута

Установить расширенные атрибуты для файла можно утилитой setfacl. Например, установить для пользователя право на запись в файл можно командой setfaclm u:username:rw- <path_to_file>. Просмотреть расширенные атрибуты можно командой getfacl <path_to_file>.

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

В листинге выделено подчеркиванием магическое число 0xEA020000, идущее сразу после фиксированных полей индексного дескриптора. Следующие 16 байтов занимает заголовок элемента атрибута (его имя имеет нулевую длину), а последние 28 байтов (именно такой размер указан в заголовке элемента) в блоке занимает значение атрибута. При этом поле «ACL» индексного дескриптора (выделено подчеркиванием) содержит нулевое значение, то есть не содержит ссылок на внешний блок данных.

0x00000000 B4 81 00 00 44 42 00 00 : 1E 23 82 4B 55 21 82 4B ....DB...#.KU!.K

0x00000010 79 68 81 4B 00 00 00 00 : 00 00 01 00 28 00 00 00 yh.K........(...

0x00000020 00 00 08 00 01 00 00 00 : 0A F3 01 00 04 00 00 00 ................

0x00000030 00 00 00 00 00 00 00 00 : 05 00 00 00 EA 88 0C 00 ................

0x00000040 00 00 00 00 00 00 00 00 : 00 00 00 00 00 00 00 00 ................

0x00000050 00 00 00 00 00 00 00 00 : 00 00 00 00 00 00 00 00 ................

0x00000060 00 00 00 00 A9 91 3B 8A : 00 00 00 00 00 00 00 00 ......;.........

0x00000070 00 00 00 00 00 00 00 00 : 00 00 00 00 00 00 00 00 ................

0x00000080 1C 00 00 00 C4 6B A7 33 : F4 8A DA C3 20 4E 14 B9 .....k.3.... N..

0x00000090 79 68 81 4B CC 7A F7 AC : 00 00 00 00 00 00 02 EA yh.K.z..........

0x000000A0 00 02 44 00 00 00 00 00 : 1C 00 00 00 00 00 00 00 ..D.............

0x000000B0 00 00 00 00 00 00 00 00 : 00 00 00 00 00 00 00 00 ................

0x000000C0 00 00 00 00 00 00 00 00 : 00 00 00 00 00 00 00 00 ................

0x000000D0 00 00 00 00 00 00 00 00 : 00 00 00 00 00 00 00 00 ................

0x000000E0 00 00 00 00 01 00 00 00 : 01 00 06 00 02 00 06 00 ................

0x000000F0 E8 03 00 00 04 00 04 00 : 10 00 06 00 20 00 04 00 ............ ...

Рис. П.2.6. Индексный дескриптор с расширенными атрибутами

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