Введение
Набор функций файловой системы. Расширенные атрибуты файлов — это функции файловой системы, позволяющие пользователям связывать компьютерные файлы с метаданными, которые не интерпретируются файловой системой, в то время как обычные атрибуты имеют чётко определённое файловой системой назначение (например, права доступа или записи о времени создания и изменения). В отличие от форков, которые обычно могут быть размером сопоставимы с максимальным размером файла, расширенные атрибуты обычно ограничены по размеру значительно меньшим значением, чем максимальный размер файла. Типичные области применения включают хранение автора документа, кодировки символов текстового файла, контрольной суммы, криптографического хеша или цифрового сертификата, а также информации о дискреционном управлении доступом. В Unix-подобных системах расширенные атрибуты обычно обозначаются аббревиатурой xattr.
Extended file attributes are file system features that enable users to associate computer files with metadata not interpreted by the filesystem, whereas regular attributes have a purpose strictly defined by the filesystem (such as permissions or records of creation and modification times). Unlike forks, which can usually be as large as the maximum file size, extended attributes are usually limited in size to a value significantly smaller than the maximum file size. Typical uses include storing the author of a document, the character encoding of a plain text document, or a checksum, cryptographic hash or digital certificate, and discretionary access control information. In Unix like systems, extended attributes are usually abbreviated as xattr.
AIX
В AIX файловая система JFS2 v2 поддерживает расширенные атрибуты, к которым можно получить доступ с помощью команды. API `getea`, `setea`, `listea`, `getattr` и `removeea` поддерживают получение, установку, перечисление, получение информации о и удаление расширенных атрибутов.
BeOS/Haiku (англ.) русск.
В ныне несуществующей BeOS и её преемниках, таких как Haiku, расширенные атрибуты файлов широко используются как в базовых, так и в сторонних программах. Файловая система Be позволяет индексировать и выполнять поиск по атрибутам, фактически наделяя файловую систему свойствами, характерными для баз данных. Сферы применения расширенных атрибутов в системах, подобных BeOS, разнообразны: например, Tracker и OpenTracker, файловые менеджеры BeOS и Haiku соответственно, хранят местоположения значков файлов в атрибутах, служба "Mail" в Haiku сохраняет всё содержимое сообщений и метаданные в расширенных атрибутах файлов, а типы MIME файлов хранятся в их атрибутах. Расширенные атрибуты файлов можно просматривать и редактировать в графическом интерфейсе систем, подобных BeOS, через файловый менеджер, обычно Tracker или его производные.
FreeBSD
В FreeBSD 5.0 и более поздних версиях файловые системы UFS1, UFS2 и ZFS поддерживают расширенные атрибуты, используя семейство системных вызовов. Любой обычный файл может иметь список расширенных атрибутов. Каждый атрибут состоит из имени и связанных с ним данных. Имя должно быть строкой, завершающейся нулевым символом, и существует в пространстве имен, идентифицируемом небольшим целочисленным идентификатором пространства имен. В настоящее время существует два пространства имен: пользовательское и системное. В пользовательском пространстве имен нет ограничений на именование или содержимое. Системное пространство имен используется в основном ядром для списков контроля доступа и обязательного контроля доступа.
macOS
Mac OS X 10.4 и более поздние версии поддерживают расширенные атрибуты, используя функцию дерева атрибутов файловой системы HFS+ B* tree, которая позволяет использовать именованные ветви (forks). Хотя именованные ветви в HFS+ поддерживают произвольно большие объемы данных посредством экстентов, поддержка расширенных атрибутов в ОС ограничивается встроенными атрибутами, размер которых не превышает размер узла B* tree. Любой обычный файл может иметь список расширенных атрибутов. HFS+ поддерживает произвольное количество именованных ветвей, и неизвестно, устанавливает ли macOS какие-либо ограничения на количество расширенных атрибутов. Каждый атрибут состоит из имени и связанных с ним данных. Имя представляет собой строку Unicode, завершающуюся нулевым символом. Ограничений пространства имен нет (что делает эту систему открытой xattr), и общепринятой практикой является использование строки в обратном формате DNS (аналогично Uniform Type Identifiers) в качестве имени атрибута. macOS поддерживает просмотр, получение, установку и удаление расширенных атрибутов из файлов или каталогов с помощью API, аналогичного Linux. Эти возможности доступны из командной строки через утилиту xattr. Начиная с macOS 10.5, файлы, полученные из сети, помечаются атрибутом com.apple.quarantine посредством расширенных атрибутов файла. В некоторых старых версиях macOS (например, Mac OS X 10.6) расширенные атрибуты, созданные пользователем, не сохранялись при сохранении в распространенных приложениях Cocoa (TextEdit, Preview и т.д.).
OpenBSD (всего один раз)
В 2005 году поддержка расширенных атрибутов файлов была удалена из исходного кода OpenBSD в связи с недостаточным интересом к спискам управления доступом.
OS/2
В OS/2 версии 1.2 и более поздних, высокопроизводительная файловая система изначально проектировалась с учетом расширенных атрибутов, но поддержка была также добавлена и к файловой системе FAT DOS. Для совместимости с другими операционными системами, использующими FAT-раздел, атрибуты OS/2 хранятся в одном файле "" в корневом каталоге. Этот файл обычно недоступен, когда операционная система, поддерживающая расширенные атрибуты, управляет диском, но может быть свободно изменен, например, в DOS. Файлы и каталоги, имеющие расширенные атрибуты, используют один или несколько кластеров внутри этого файла. Логический номер кластера первого используемого кластера хранится в записи каталога владельца файла или каталога. Эти два байта используются для других целей в файловой системе FAT32, поэтому расширенные атрибуты OS/2 не могут быть сохранены в этой файловой системе. Компоненты OS/2 версии 2.0 и более поздних, такие как Workplace Shell, используют несколько стандартизированных расширенных атрибутов (также называемых EAs) для таких целей, как определение типа файла, комментарии, значки компьютера и ключевые слова, связанные с файлом. Программы, написанные на интерпретируемом языке Rexx, хранят уже проанализированную версию кода в виде расширенного атрибута для обеспечения более быстрого выполнения.
Солярис
Solaris версии 9 и более поздние позволяют файлам иметь "расширенные атрибуты", которые фактически являются форками; максимальный размер "расширенного атрибута" равен максимальному размеру файла, и они читаются и записываются аналогично файлам. Внутренне они фактически хранятся и используются как обычные файлы, поэтому их имена не могут содержать символ "/", а права владения и разрешения могут отличаться от прав родительского файла. Версия 4 сетевой файловой системы поддерживает расширенные атрибуты схожим образом, как и Solaris.