stringtranslate.com

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

Расширенные атрибуты файлов — это функции файловой системы , которые позволяют пользователям связывать компьютерные файлы с метаданными, не интерпретируемыми файловой системой, тогда как обычные атрибуты имеют цель, строго определенную файловой системой (например, разрешения или записи времени создания и изменения). В отличие от forks , размер которых обычно равен максимальному размеру файла, размер расширенных атрибутов обычно ограничен значением, значительно меньшим максимального размера файла. Типичное использование включает хранение автора документа, кодировки символов открытого текстового документа или контрольной суммы , криптографического хеша или цифрового сертификата , а также информации о дискреционном управлении доступом .

В Unix-подобных системах расширенные атрибуты обычно обозначаются сокращением xattr . [1]

Реализации

ЭКС

В AIX файловая система JFS2 v2 поддерживает расширенные атрибуты, доступные с помощью команды getea . [2] API- интерфейсы getea , [3] setea , [4] listea , [5] statea , [6] и Removeea [7] поддерживают выборку, настройку, листинг, получение информации и удаление расширенных атрибутов.

BeOS/Хайку

В ныне несуществующей BeOS и ее преемниках, таких как Haiku , расширенные атрибуты файлов широко используются в базовых и сторонних программах. Файловая система Be позволяет индексировать и запрашивать атрибуты, по существу придавая характеристикам, подобным базе данных файловой системы. Использование расширенных атрибутов в Be-подобных системах разнообразно: например, Tracker и OpenTracker , файловые менеджеры BeOS и Haiku соответственно, хранят расположение значков файлов в атрибутах, [8] Служба «Mail» Haiku хранит все Содержимое сообщения и метаданные в расширенных атрибутах файлов [9] , а файлы MIME-типа хранятся в их атрибутах. Расширенные атрибуты файлов можно просматривать и редактировать в графическом интерфейсе Be-подобных систем через файловый менеджер, часто Tracker или его производные.

FreeBSD

В FreeBSD 5.0 ​​и более поздних версиях файловые системы UFS1 , UFS2 и ZFS поддерживают расширенные атрибуты с использованием семейства системных вызовов extattr_ [10] . Любой обычный файл может иметь список расширенных атрибутов. Каждый атрибут состоит из имени и связанных с ним данных. Имя должно быть строкой с нулевым завершением и существовать в пространстве имен, определяемом небольшим целочисленным идентификатором пространства имен. В настоящее время существует два пространства имен: пользовательское и системное. Пространство имен пользователя не имеет ограничений в отношении именования или содержимого. Пространство имен системы в основном используется ядром для списков управления доступом и обязательного контроля доступа .

Линукс

В Linux файловые системы ext2 , ext3 , ext4 , JFS , Squashfs , UBIFS , Yaffs2 , ReiserFS , Reiser4 , XFS , Btrfs , OrangeFS , Lustre , OCFS2 1.6 , ZFS и F2FS [11] поддерживают расширенные атрибуты (сокращенно xattr ), когда они включены. в конфигурации ядра. Любой обычный файл или каталог может иметь расширенные атрибуты, состоящие из имени и связанных с ним данных. Имя должно представлять собой строку с нулевым завершением, перед которой стоит идентификатор пространства имен и точка. В настоящее время существует четыре пространства имен: пользовательское, доверенное, безопасность и системное. Пространство имен пользователя не имеет ограничений в отношении именования или содержимого. Пространство имен системы в основном используется ядром для списков управления доступом . Пространство имен безопасности используется , например, SELinux .

Поддержка концепции расширенных атрибутов из проекта POSIX.1e [ нужна ссылка ] , которая была отозвана [12] в 1997 году, была добавлена ​​в Linux примерно в 2002 году. [13] [14] По состоянию на 2016 год они еще не получили широкого распространения в Linux. программы Linux в пользовательском пространстве, но используются Beagle , OpenStack Swift , Dropbox , инфраструктурой семантических метаданных KDE (Baloo) , Chromium , Wget и cURL .

Ядро Linux позволяет расширенным атрибутам иметь имена длиной до 255 байт и значения до 64 КиБ [15] , как и XFS и ReiserFS , но ext2 / 3 / 4 и btrfs накладывают гораздо меньшие ограничения, требуя, чтобы все атрибуты (имена и значения) одного файла, чтобы поместиться в один «блок файловой системы» (обычно 4 КиБ). Согласно POSIX.1e, [ необходима ссылка ] имена должны начинаться с одного из следующих значений: security , system , доверенный и user плюс точка. Это определяет четыре пространства имен расширенных атрибутов. [16]

Доступ к расширенным атрибутам и их изменение можно получить с помощью команд getfattrи setfattrиз attrпакета в большинстве дистрибутивов. [17] API называются getxattrи setxattr.

macOS

Mac OS X 10.4 и более поздние версии поддерживают расширенные атрибуты за счет использования функции B*-дерева файлов атрибутов файловой системы HFS+ , которая позволяет создавать именованные ветки. Хотя именованные ответвления в HFS+ поддерживают сколь угодно большие объемы данных посредством экстентов, поддержка ОС расширенных атрибутов поддерживает только встроенные атрибуты, ограничивая их размер тем, который может поместиться в один узел B*-дерева. [ нужна цитация ] Любой обычный файл может иметь список расширенных атрибутов. HFS+ поддерживает произвольное количество именованных вилок, и неизвестно, накладывает ли macOS какие-либо ограничения на количество расширенных атрибутов.

Каждый атрибут состоит из имени и связанных с ним данных. Имя представляет собой строку Юникода, завершающуюся нулем . Никаких ограничений пространства имен не существует (что делает эту систему открытой xattr ), и соглашением является использование обратной строки DNS (аналогично Uniform Type Identifiers ) в качестве имени атрибута.

macOS поддерживает просмотр, [18] получение, [19] настройку, [20] и удаление [21] расширенных атрибутов из файлов и каталогов с использованием Linux-подобного API. Из командной строки эти возможности доступны с помощью утилиты xattr . [22]

Начиная с macOS 10.5, файлы, полученные из Интернета, помечаются com.apple.quarantineрасширенными атрибутами файлов. [23] В некоторых старых версиях macOS (например, Mac OS X 10.6 ) расширенные атрибуты пользовательского пространства не сохранялись при сохранении в обычных приложениях Cocoa (TextEdit, Preview и т. д.). [ нужна цитата ]

OpenBSD

Поддержка расширенных атрибутов файлов была удалена из исходного кода OpenBSD в 2005 году из-за отсутствия интереса к спискам управления доступом . [24]

ОС/2

В OS/2 версии 1.2 и более поздних версиях высокопроизводительная файловая система была разработана с учетом расширенных атрибутов, но их поддержка также была добавлена ​​в файловую систему FAT DOS. Для совместимости с другими операционными системами, использующими раздел FAT, атрибуты OS/2 хранятся в одном файле " EA DATA. SF", расположенном в корневом каталоге. Этот файл обычно недоступен, когда диском управляет операционная система, поддерживающая расширенные атрибуты, но им можно свободно манипулировать, например, в DOS. Файлы и каталоги, имеющие расширенные атрибуты, используют один или несколько кластеров внутри этого файла. Логический номер первого использованного кластера хранится внутри записи каталога владеющего файла или каталога . [25] Эти два байта используются для других целей в файловой системе FAT32, и, следовательно, расширенные атрибуты OS/2 не могут храниться в этой файловой системе.

Части OS/2 версии 2.0 и более поздних версий, такие как Workplace Shell, используют несколько стандартизированных расширенных атрибутов (также называемых EA ) для таких целей, как определение типа файла, комментариев, значков компьютера и ключевых слов о файле. Программы, написанные на интерпретируемом языке Rexx, сохраняют уже проанализированную версию кода как расширенный атрибут, чтобы обеспечить более быстрое выполнение.

Солярис

Solaris версии 9 и более поздних версий позволяет файлам иметь «расширенные атрибуты», которые на самом деле являются ответвлениями ; максимальный размер «расширенного атрибута» такой же, как максимальный размер файла, и они читаются и записываются так же, как файлы. Внутри они фактически хранятся и доступны как обычные файлы, поэтому их имена не могут содержать символы «/» [26] , а их права собственности и права могут отличаться от прав родительского файла.

Версия 4 сетевой файловой системы поддерживает расширенные атрибуты почти так же, как Solaris.

Windows НТ

В Windows NT расширенные атрибуты ограниченной длины поддерживаются FAT , [25] HPFS и NTFS . Это было реализовано как часть подсистемы OS/2 . В частности, они используются сервером NFS подсистемы Interix POSIX для реализации разрешений, подобных Unix. Подсистема Windows для Linux , добавленная в юбилейном обновлении Windows 10, использует их для аналогичных целей, сохраняя режим файла Linux, владельца, идентификатор устройства (если применимо) и время файла в расширенных атрибутах. [27]

Кроме того, NTFS может хранить расширенные атрибуты произвольной длины в форме альтернативных потоков данных (ADS), типа ответвления ресурсов . Плагины для файлового менеджера Total Commander , такие как NTFS Descriptions и QuickSearch eXtended, поддерживают фильтрацию списка файлов или поиск метаданных, содержащихся в ADS. [28] [29] NTFS-3G поддерживает сопоставление ADS с расширенными атрибутами в FUSE ; таким же образом он сопоставляет атрибуты файлов. [30]

Смотрите также

Рекомендации

  1. ^ xattr(7)  -  Руководство программиста Linux - Обзор, условные обозначения и прочее
  2. ^ "Команда Getea" . Документация IBM AIX V7.2 . ИБМ . Проверено 11 июля 2017 г.
  3. ^ "Подпрограмма getea" . Документация IBM AIX V7.2: Базовая операционная система и расширения, Том 1 . ИБМ . Проверено 11 июля 2017 г.
  4. ^ "Подпрограмма setea" . Документация IBM AIX V7.2: Базовая операционная система и расширения, том 2 . ИБМ . Проверено 11 июля 2017 г.
  5. ^ "Подпрограмма listea" . Документация IBM AIX V7.2: Базовая операционная система и расширения, Том 1 . ИБМ . Проверено 11 июля 2017 г.
  6. ^ "Подпрограммаstatea" . Документация IBM AIX V7.2: Базовая операционная система и расширения, том 2 . ИБМ . Проверено 11 июля 2017 г.
  7. ^ «Подпрограмма удаления» . Документация IBM AIX V7.2: Базовая операционная система и расширения, том 2 . ИБМ . Проверено 11 июля 2017 г.
  8. ^ «Атрибуты». Руководство пользователя Хайку . Хайку, Инк . Проверено 28 января 2021 г.
  9. ^ «Семинар: Управление электронной почтой» . Руководство пользователя Хайку . Хайку, Инк . Проверено 28 января 2021 г.
  10. ^ extattr(2)  -  Руководство по системным вызовам FreeBSD
  11. ^ Ким, Джегык (5 октября 2012 г.). «[ИСПРАВЛЕНИЕ 13/16] f2fs: добавлены функции xattr и acl» . Проверено 11 июля 2017 г.
  12. ^ Шауфлер, Кейси (30 апреля 2002 г.). «Posix.1e?». Группа новостей : comp.security.unix.
  13. ^ "Журнал коммитов git v2.5.3" . 05 февраля 2002 г. Проверено 11 июля 2017 г.
  14. ^ «Примечания к выпуску Red Hat Enterprise Linux AS 3 (выпуск x86)» . Красная Шапка . 2003. Архивировано из оригинала 9 июля 2017 г. Проверено 11 июля 2017 г. Функции EA (расширенные атрибуты) и ACL (списки управления доступом) теперь доступны для файловых систем ext3. Кроме того, для NFS доступна функциональность ACL.
  15. ^ "Linux/include/uapi/linux/limits.h". 13 октября 2012 г. Проверено 11 июля 2017 г.
  16. ^ xattr(7)  -  Руководство программиста Linux - Обзор, условные обозначения и прочее
  17. ^ «Команды для управления расширенными атрибутами файловой системы» . ГНУ Саванна . Проверено 11 июля 2017 г.
  18. ^ listxattr(2)  -  Руководство по системным вызовам Darwin и macOS
  19. ^ getxattr(2)  -  Руководство по системным вызовам Darwin и macOS
  20. ^ setxattr(2)  -  Руководство по системным вызовам Darwin и macOS
  21. ^ removexattr(2)  -  Руководство по системным вызовам Darwin и macOS
  22. ^ xattr(1)  -  Руководство по общим командам Darwin и macOS.
  23. ^ «Примечания к выпуску служб запуска» . разработчик.apple.com .
  24. ^ Дейл Ран (3 июля 2005 г.). «Журнал CVS для src/sys/ufs/ufs/Attic/extattr.h».
  25. ^ аб Игер, Боб (28 октября 2000 г.). «Реализация расширенных атрибутов файловой системы FAT» . Проверено 11 июля 2017 г.
  26. ^ fsattr(7)  -  Справочное руководство по стандартам, средам, макросам, наборам символов и прочему Solaris 11.4.
  27. ^ Хэммонс, Джек (15 июня 2016 г.). «Поддержка файловой системы WSL». MSDN . Проверено 11 июля 2017 г.
  28. ^ «Описания NTFS 1.2.1» . TotalCmd.net . Проверено 16 апреля 2018 г.
  29. ^ «Расширенный быстрый поиск» . TotalCmd.net . Проверено 16 апреля 2018 г.
  30. ^ «Расширенные атрибуты». Туксера . Архивировано из оригинала 14 августа 2020 г.