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-like разнообразно: например, Tracker и OpenTracker , файловые менеджеры BeOS и Haiku соответственно, оба хранят местоположения иконок файлов в атрибутах, [8] служба Haiku «Mail» хранит все содержимое сообщений и метаданные в расширенных атрибутах файлов, [9] а типы файлов MIME хранятся в их атрибутах. Расширенные атрибуты файлов можно просматривать и редактировать в графическом интерфейсе систем Be-like через файловый менеджер, часто Tracker или его производные.

FreeBSD

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

Линукс

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

Поддержка концепции расширенных атрибутов из проекта POSIX.1e [ требуется ссылка ] , который был отозван [12] в 1997 году, была добавлена ​​в Linux около 2002 года. [13] [14] По состоянию на 2016 год они еще не получили широкого распространения в программах 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 , trusted и user плюс точка. Это определяет четыре пространства имен расширенных атрибутов. [16]

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

macOS

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

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

macOS поддерживает листинг, [18] получение, [19] установку, [20] и удаление [21] расширенных атрибутов из файлов или каталогов с использованием API, подобного Linux. Из командной строки эти возможности доступны через утилиту 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 и более поздних версиях файловая система High Performance File System была разработана с учетом расширенных атрибутов, но их поддержка также была встроена в файловую систему 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 NT

В Windows NT расширенные атрибуты ограниченной длины поддерживаются FAT , [25] HPFS и NTFS . Это было реализовано как часть подсистемы OS/2 . Они в частности используются сервером NFS подсистемы Interix POSIX для реализации разрешений, подобных Unix. Подсистема Windows для Linux, добавленная в Windows 10 Anniversary Update , использует их для аналогичных целей, сохраняя режим файла 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 . IBM . Получено 2017-07-11 .
  3. ^ "getea Subroutine". Документация IBM AIX V7.2: Базовая операционная система и расширения, том 1 . IBM . Получено 2017-07-11 .
  4. ^ "setea Subroutine". Документация IBM AIX V7.2: Базовая операционная система и расширения, том 2 . IBM . Получено 2017-07-11 .
  5. ^ "listea Subroutine". Документация IBM AIX V7.2: Базовая операционная система и расширения, том 1 . IBM . Получено 2017-07-11 .
  6. ^ "statea Subroutine". Документация IBM AIX V7.2: Базовая операционная система и расширения, том 2 . IBM . Получено 2017-07-11 .
  7. ^ "removeea Subroutine". Документация IBM AIX V7.2: Базовая операционная система и расширения, том 2 . IBM . Получено 2017-07-11 .
  8. ^ "Атрибуты". Руководство пользователя Haiku . Haiku, Inc. Получено 28 января 2021 г.
  9. ^ "Практикум: Управление электронной почтой". Руководство пользователя Haiku . Haiku, Inc. Получено 28 января 2021 г.
  10. ^ extattr(2)  –  Руководство по системным вызовам FreeBSD
  11. ^ Ким, Джэгык (2012-10-05). "[PATCH 13/16] f2fs: add xattr and acl functionalities" . Получено 2017-07-11 .
  12. ^ Шауфлер, Кейси (2002-04-30). "Posix.1e?". Группа новостей : comp.security.unix.
  13. ^ "v2.5.3 git commit log". 2002-02-05 . Получено 2017-07-11 .
  14. ^ "Red Hat Enterprise Linux AS 3 Release Notes (x86 Edition)". Red Hat . 2003. Архивировано из оригинала 2017-07-09 . Получено 2017-07-11 . Функциональность EA (Extended Attributes) и ACL (Access Control Lists) теперь доступна для файловых систем ext3. Кроме того, функциональность ACL доступна для NFS.
  15. ^ "linux/include/uapi/linux/limits.h". 2012-10-13 . Получено 2017-07-11 .
  16. ^ xattr(7)  –  Руководство программиста Linux – Обзор, соглашения и разное
  17. ^ "Команды для управления расширенными атрибутами файловой системы". GNU Savannah . Получено 2017-07-11 .
  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. ^ «Заметки о выпуске служб запуска». developer.apple.com .
  24. ^ Дейл Ран (03.07.2005). "Журнал CVS для src/sys/ufs/ufs/Attic/extattr.h".
  25. ^ ab Eager, Bob (2000-10-28). "Реализация расширенных атрибутов в файловой системе FAT" . Получено 2017-07-11 .
  26. ^ fsattr(7)  –  Справочное руководство по стандартам, средам, макросам, наборам символов и прочему для Solaris 11.4
  27. ^ Хаммонс, Джек (15.06.2016). "Поддержка файловой системы WSL". MSDN . Получено 11.07.2017 .
  28. ^ "NTFS Descriptions 1.2.1". TotalCmd.net . Получено 16 апреля 2018 г. .
  29. ^ "QuickSearch eXtended". TotalCmd.net . Получено 16 апреля 2018 г. .
  30. ^ "Расширенные атрибуты". Tuxera . Архивировано из оригинала 2020-08-14.