Расширенные атрибуты
Блок расширенных атрибутов состоит из трех секций. Первые 32 байта образуют заголовок; за ним следует вторая секция, содержащая список записей имен. Третья секция начинается с конца блока и следует по направлению к началу. В ней хранятся значения атрибутов, причем их порядок может не совпадать с порядком следования записей имен. Структура блока расширенных атрибутов показана на рис. 15.1.
Заголовок расширенных атрибутов начинается с байта 0 блока, а его длина равна 32 байтам. Поля заголовка перечислены в табл. 15.15.
Таблица 15.15. Структура данных заголовка расширенных атрибутов
Диапазон | Описание | Необходимость |
0-3 | Сигнатура (0хЕА020000) | Нет |
4-7 | Счетчик ссылок | Нет |
8-11 | Количество блоков | Да |
12-15 | Хеш-код | Нет |
16-31 | Зарезервировано | Нет |
Счетчик ссылок указывает, сколько файлов с одинаковыми расширенными атрибутами совместно использует этот блок расширенных атрибутов. Linux в настоящее время не поддерживает многоблочные списки атрибутов, но в других ОС такая возможность может быть реализована. По хеш-кодам, вычисляемому по значениям атрибутов, ОС легко проверяет, обладают ли два файла одинаковыми атрибутами.
После заголовка начинаются записи имен.
Структура каждой записи описана в табл. 15.16.Таблица 15.16. Структура данных записи имен блока расширенных атрибутов
Диапазон | Описание | Необходимость |
0-0 | Длина имени | Да |
1-1 | Тип атрибута (см. табл. 15.17) | Да |
2-3 | Смещение значения | Да |
4-7 | Блок, содержащий значение атрибута | Да |
8-11 | Размер значения | Да |
12-15 | Хеш-код значения | Нет |
16+ | Имя в кодировке ASCII | Да |
Смещение задается в байтах внутри заданного блока. В текущих версиях Linux набор расширенных атрибутов может храниться только в одном блоке, а поле блока в записи не заполняется. Поле размера содержит количество байт в значении. Длина имени определяет длину записи, а следующая запись начинается с ближайшей 4-байтовой границы. Поле типа записи может содержать одно из шести значений, приведенных в табл. 15.17.
Таблица 15.17. Значения поля типа в записях имен расширенных атрибутов
Значение Описание
1 | Атрибут пользовательского пространства |
2 | POSIX ACL |
3 | POSIX ACL по умолчанию (только для каталогов) |
4 | Атрибут доверенного пространства |
5 | LUSTRE (в настоящее время не используется в Linux) |
6 | Атрибут пространства безопасности |
Если атрибут относится к пользовательскому или доверенному пространству, а также пространству безопасности, в конце блока хранится простое значение, соответствующее данному имени.
Если в поле типа указан один из типов POSIX ACL, значение обладает собственным набором структур данных.«Значение» атрибута POSIX ACL начинается с заголовка, за которым следует список записей. Структура данных заголовка содержит единственное поле, представленное в табл. 15.18. Структура данных записей ACL приведена в табл. 15.19.
Таблица 15.18. Структура данных заголовка POSIX ACL
Диапазон | Описание | Необходимость |
0-3 | Версия (1) | Да |
Таблица 15.19. Структура данных записей POSIX ACL
Диапазон | Описание | Необходимость |
0-1 | Тип (см. табл. 15.20) | Да |
2-3 | Разрешения (см. табл. 15.21) | Да |
4-7 | Идентификатор пользователя/группы (не включается для некоторых типов) | Да |
Поле типа в записи ACL определяет тип разрешений, для которого предназначена данная запись. Определены значения, перечисленные в табл. 15.20.
Таблица 15.20. Допустимые значения поля типа в записях POSIX ACL
Значение Описание
0x001 | Пользователь — указывается в индексном узле |
0x004 | Группа — указывается в индексном узле |
0x20 | Прочие — все остальные пользователи |
/>0x10 | Маска прав |
0x02 | Пользователь — указывается в атрибуте |
0x08 | Г руппа — указывается в атрибуте |
Первые три типа относятся к владельцу, группе и «прочим» пользователям, обычно используемым в индексных узлах ExtX.
Другими словами, информация в этих записях дублирует информацию, находящуюся в индексном узле. Размер записи, относящейся к одному из этих типов, равен всего 4 байтам, потому что такие записи не используют поле идентификаторов в байтах 4-7. Для других типов должен быть задан идентификатор пользователя или группы, к которым относятся разрешения.Поле разрешений содержит флаги, перечисленные в табл. 15.21.
Флаг разрешений | Описание |
0x001 | Выполнение |
0x002 | Запись |
0x004 | Чтение |
Таблица 15.21. Флаги поля разрешений в записях POSIX ACL
# dcat -f linux-ext3 ext3-2.dd 1238 0000000: 0000 02ea 0100 0000 0100 0000 7447 05e8
0000016: 0000 0000 0000 0000 0000 0000 0000 0000
0000032: 0601 c003 0000 0000 1900 0000 a8e9 5147
0000048: 736f 7572 6365 0000 0002 dc03 0000 0000
0000064: 2400 0000 2500 adOl 0000 0000 0000 0000
[...]
0000944: 0000 0000 0000 0000 0000 0000 0000 0000
0000960: 7777 772e 6469 6769 7461 6c2d 6576 6964
0000976: 656e 6365 2e6f 7267 0000 0000 0100 0000
0000992: 0100 0600 0200 0400 4a00 0000 0200 0600
0001008: f401 0000 0400 0400 1000 0600 2000 0400
Первые 4 байта содержат сигнатуру, в байтах 4-7 находится счетчик ссылок со значением 1, а в байтах 8-11 — количество блоков 1.
Первая запись начинается с байта 32; мы видим, что длина имени в ней равна 6. Запись относится к типу 1 (атрибут пользовательского пространства), а байты 2-3 показывают, что значение хранится со смещением 960 (ОхОЗсО). Байты 40-43 показывают, что размер значения равен 25 байтам, а байт 48 является первым байтом имени атрибута «source». Имя заканчивается в байте 53. Записи выравниваются по границе 4 байт, поэтому за следующим атрибутом необходимо перейти к байту 56. Значение первого атрибута хранится в байтах 960-94 и представляет собой строку «www.digitaUevidence.org».Блок также содержит второй атрибут для записи ACL. Он начинается в байте 988 и продолжается до байта 1023. Заголовок хранится в байтах 988-991, а первая запись находится в байтах 992-993. Запись относится к типу 1, то есть определяет разрешения для идентификатора пользователя, указанного в индексном узле. Разрешения задаются в байтах 994-995; мы видим, что владелец обладает разрешениями на чтение и запись. Вторая запись начинается с байта 996 и относится к типу 2. Она предоставляет разрешения на чтение пользователю с идентификатором 74 (0x4а). При желании читатель может расшифровать остальные разрешения самостоятельно, а я приведу результат выполнения программы istat для файла: istat -f linux-ext3 ext3-2.dd 70 [...]
Extended Attributes (Block: 1238) user.source=www.digital -evidence.org POSIX Access Control List Entries: uid: 0: Read. Write uid: 74: Read uid: 500: Read. Write gid: 0: Read mask: Read. Write other: Read [...3
Еще по теме Расширенные атрибуты:
- Расширенные атрибуты UFS2
- Стандартные атрибуты файлов
- Атрибуты записей MFT
- Другие концепции атрибутов
- Атрибуты и структуры данных индексов
- Атрибуты индексов NTFS
- 1.2.2. Отбор и найм как атрибуты рыночного хозяйствования
- Тема 6.1. Политический плюрализм и многопартийность как неотъемлемые атрибуты демократии
- Медиа — расширения человека
- Управление процессом расширения
- Способы расширения границ торговых марок
- 4.4. Роль финансов в процессе расширенного воспроизводства
- 12.2. Расширенная концепция производства
- Направления расширения подразделений
- Расширение сельскохозяйственных угодий
- Расширение границ торговой марки и ассортимент продукции
- Расширение НАТО и Россия
- 2.3. Проблемы природопользования в условиях расширенного воспроизводства