Расширенные атрибуты файла являются файловой системой функции , которые позволяют пользователям связывать компьютерные файлы с метаданными не интерпретируется в файловой системе, в то время как обычные атрибуты имеют цель строго определенные файловую система (например, разрешения или записи создания и изменений времени). В отличие от вилок , размер которых обычно может достигать максимального размера файла, расширенные атрибуты обычно ограничены по размеру до значения, значительно меньшего, чем максимальный размер файла. Типичные варианты использования включают сохранение имени автора документа, кодировки символов обычного текстового документа или контрольной суммы , криптографического хэша илицифровой сертификат и информация о дискреционном управлении доступом .
В Unix-подобных системах расширенные атрибуты обычно обозначаются аббревиатурой xattr . [1]
Реализации
AIX
В AIX файловая система JFS2 v2 поддерживает расширенные атрибуты, которые доступны с помощью команды getea . [2]getea , [3]setea , [4]listea , [5]statea , [6] и removeea [7] API-интерфейсы поддерживают выборку, настройку, перечисление, получение информации и удаление расширенных атрибутов.
BeOS / Haiku
В ныне несуществующей BeOS и ее преемниках, таких как Haiku , расширенные атрибуты файлов широко используются в базовых и сторонних программах. Система Be File позволяет индексировать и запрашивая атрибуты, по существу , давая файловую базу данных -like характеристик. Использование расширенных атрибутов в Be-подобных системах различно: например, Tracker и OpenTracker , файловые менеджеры BeOS и Haiku соответственно, оба хранят расположение значков файлов в атрибутах, [8] служба Haiku "Mail" хранит все содержимое сообщения и метаданные в расширенных атрибутах файлов [9], а файлы типов MIME хранятся в их атрибутах. Расширенные атрибуты файлов можно просматривать и редактировать в графическом интерфейсе Be-like систем через файловый менеджер, часто Tracker или его производные.
FreeBSD
В FreeBSD 5.0 и более поздних версиях файловые системы UFS1 , UFS2 и ZFS поддерживают расширенные атрибуты, используя extattr_ [10] семейство системных вызовов. Любой обычный файл может иметь список расширенных атрибутов. Каждый атрибут состоит из имени и связанных данных. Имя должно быть строкой с завершающим нулем и существовать в пространстве имен, идентифицированном идентификатором пространства имен с малым целым числом. В настоящее время существует два пространства имен: пользовательское и системное. Пространство имен пользователя не имеет ограничений в отношении именования или содержимого. Системное пространство имен в основном используется ядром для списков управления доступом и принудительного управления доступом .
Linux
В Linux файловые системы ext2 , ext3 , ext4 , JFS , Squashfs , Yaffs2 , ReiserFS , Reiser4 , XFS , Btrfs , OrangeFS , Lustre , OCFS2 1.6 , ZFS и F2FS [11] поддерживают расширенные атрибуты (сокращенно xattr ), если они включены в конфигурация ядра. Любой обычный файл или каталог может иметь расширенные атрибуты, состоящие из имени и связанных данных. Имя должно быть строкой с завершающим нулем, с префиксом идентификатора пространства имен и точкой. В настоящее время существует четыре пространства имен: пользовательское, доверенное, безопасность и система. Пространство имен пользователя не имеет ограничений в отношении именования или содержимого. Системное пространство имен в основном используется ядром для списков управления доступом . Например, пространство имен безопасности используется SELinux .
Поддержка концепции расширенных атрибутов из проекта POSIX.1e [ необходима ссылка ] , который был отозван в 1997 году, была добавлена в Linux примерно в 2002 году. [12] [13] По состоянию на 2016 год они еще не получили широкого распространения в пользовательском пространстве. Программы для Linux, но используются Beagle , OpenStack Swift , Dropbox , фреймворком семантических метаданных KDE (Baloo), Chromium , Wget и cURL . Набор рекомендаций по их использованию доступен на freedesktop.org . [14]
Linux ядро позволяет расширенный атрибут иметь имена до 255 байтов и значений до 64 KiB, [15] , как это делают XFS и ReiserFS , но ext2 / 3 / 4 и Btrfs налагать гораздо меньшие ограничения, требуя все атрибуты (имена и значения) одного файла, чтобы поместиться в один «блок файловой системы» (обычно 4 КиБ). Согласно POSIX.1e, [ необходима цитата ] имена должны начинаться с одного из следующих значений: безопасность , система , доверенный и пользователь плюс точка. Это определяет четыре пространства имен расширенных атрибутов. [16]
Расширенные атрибуты могут быть доступны и изменены с помощью getfattr
и setfattr
командой из attr
пакета на большинстве дистрибутивов. [17] API-интерфейсы называются getxattr
и setxattr
.
macOS
Mac OS X 10.4 и более поздние версии поддерживают расширенные атрибуты, используя функцию HFS + Attributes File B * -tree, которая позволяет использовать именованные вилки. Хотя именованные вилки в HFS + поддерживают произвольно большие объемы данных через экстенты, поддержка расширенных атрибутов ОС поддерживает только встроенные атрибуты, ограничивая их размер до размера, который может поместиться в пределах одного узла B * -дерева. [ необходима цитата ] Любой обычный файл может иметь список расширенных атрибутов. HFS + поддерживает произвольное количество именованных вилок, и неизвестно, накладывает ли macOS какое-либо ограничение на количество расширенных атрибутов.
Каждый атрибут состоит из имени и связанных данных. Имя представляет собой строку Unicode с завершающим нулем . Никаких ограничений пространства имен нет (что делает эту систему открытой 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 ) расширенные атрибуты пользовательского пространства не сохранялись при сохранении в обычных приложениях Какао (TextEdit, Preview и т. Д.). [ необходима цитата ]
OpenBSD
Поддержка расширенных атрибутов файлов была удалена из исходного кода OpenBSD в 2005 году из-за отсутствия интереса к спискам контроля доступа . [24]
OS / 2
В OS / 2 версии 1.2 и новее высокопроизводительная файловая система была разработана с учетом расширенных атрибутов, но их поддержка была также модернизирована в файловой системе FAT DOS. Для совместимости с другими операционными системами, использующими раздел FAT, атрибуты OS / 2 хранятся в одном файле " EA DATA. SF
", расположенном в корневом каталоге. Этот файл обычно недоступен, когда операционная система, поддерживающая расширенные атрибуты, управляет диском, но с ним можно свободно работать, например, под DOS. Файлы и каталоги с расширенными атрибутами используют один или несколько кластеров внутри этого файла. Номер логического кластера первого использованного кластера хранится в записи каталога файла-владельца или каталога . [25] Эти два байта используются для других целей в файловой системе FAT32, и поэтому расширенные атрибуты OS / 2 не могут храниться в этой файловой системе.
В некоторых частях OS / 2 версии 2.0 и более поздних, таких как Workplace Shell, используются несколько стандартизованных расширенных атрибутов (также называемых EAs ) для таких целей, как определение типа файла , комментариев, компьютерных значков и ключевых слов о файле. Программы, написанные на интерпретируемом языке Rexx, хранят уже проанализированную версию кода в виде расширенного атрибута, чтобы обеспечить более быстрое выполнение.
Солярис
Solaris версии 9 и более поздних версий позволяет файлам иметь «расширенные атрибуты», которые на самом деле являются вилками ; максимальный размер «расширенного атрибута» такой же, как максимальный размер файла, и они читаются и записываются так же, как файлы. Внутри они фактически хранятся и доступны как обычные файлы, поэтому их имена не могут содержать символы "/" [26], а их права собственности и права могут отличаться от прав собственности и прав родительского файла.
Версия 4 сетевой файловой системы поддерживает расширенные атрибуты почти так же, как Solaris.
Windows NT
В Windows NT расширенные атрибуты ограниченной длины поддерживаются FAT , [25] HPFS и NTFS . Это было реализовано как часть подсистемы OS / 2 . В частности, они используются сервером NFS подсистемы Interix POSIX для реализации Unix-подобных разрешений. Для Windows Subsystem для Linux добавлена в Windows 10 Anniversary Update использует их для аналогичных целей, сохраняя режим Linux файла, владельца, идентификатор устройства (если применимо), и файл раз в расширенных атрибутах. [27]
Кроме того, NTFS может хранить расширенные атрибуты произвольной длины в форме альтернативных потоков данных (ADS), типа разветвления ресурсов . Плагины для файлового менеджера Total Commander , такие как NTFS Descriptions и QuickSearch eXtended, поддерживают фильтрацию списка файлов или поиск метаданных, содержащихся в ADS. [28] [29] NTFS-3G поддерживает отображение ADS на расширенные атрибуты в FUSE ; он также таким образом сопоставляет атрибуты файла. [30]
Смотрите также
- Пара атрибут – значение
- Атрибут файла
Рекомендации
- ^ - Руководство программиста Linux - Обзор, условные обозначения и разное
- ^ "Команда getea" . Документация IBM AIX V7.2 . IBM . Проверено 11 июля 2017 .
- ^ "Подпрограмма getea" . Документация IBM AIX V7.2: Базовая операционная система и расширения, Том 1 . IBM . Проверено 11 июля 2017 .
- ^ "Подпрограмма setea" . Документация IBM AIX V7.2: Базовая операционная система и расширения, Том 2 . IBM . Проверено 11 июля 2017 .
- ^ "Подпрограмма listea" . Документация IBM AIX V7.2: Базовая операционная система и расширения, Том 1 . IBM . Проверено 11 июля 2017 .
- ^ "Подпрограмма состояния" . Документация IBM AIX V7.2: Базовая операционная система и расширения, Том 2 . IBM . Проверено 11 июля 2017 .
- ^ "Подпрограмма removeea" . Документация IBM AIX V7.2: Базовая операционная система и расширения, Том 2 . IBM . Проверено 11 июля 2017 .
- ^ «Атрибуты» . Руководство пользователя Haiku . Хайку, Inc . Проверено 28 января 2021 года .
- ^ «Мастерская: Управление электронной почтой» . Руководство пользователя Haiku . Хайку, Inc . Проверено 28 января 2021 года .
- ^ - Руководство по системным вызовам FreeBSD
- ^ Ким, Джегык (2012-10-05). «[PATCH 13/16] f2fs: добавьте функции xattr и acl» . Проверено 11 июля 2017 .
- ^ "v2.5.3 журнал коммитов git" . 2002-02-05 . Проверено 11 июля 2017 .
- ^ «Примечания к выпуску Red Hat Enterprise Linux AS 3 (x86 Edition)» . Красная шляпа . 2003. Архивировано из оригинала на 2015-12-21 . Проверено 11 июля 2017 .
Функциональность EA (расширенные атрибуты) и ACL (списки контроля доступа) теперь доступна для файловых систем ext3. Кроме того, для NFS доступна функция ACL.
- ^ «Рекомендации по расширенным атрибутам» . 2013-05-18 . Проверено 11 июля 2017 .
- ^ "linux / include / uapi / linux / limits.h" . 2012-10-13 . Проверено 11 июля 2017 .
- ^ - Руководство программиста Linux - Обзор, условные обозначения и разное
- ^ «Команды для управления расширенными атрибутами файловой системы» . GNU Savannah . Проверено 11 июля 2017 .
- ^ - Руководство по системным вызовам Darwin и macOS
- ^ - Руководство по системным вызовам Darwin и macOS
- ^ - Руководство по системным вызовам Darwin и macOS
- ^ - Руководство по системным вызовам Darwin и macOS
- ^ - Дарвин и руководство по основным командам macOS
- ^ «Примечания к выпуску служб запуска» . developer.apple.com .
- ^ Дейл Ран (2005-07-03). "Журнал CVS для src / sys / ufs / ufs / Attic / extattr.h" .
- ^ а б Нетерпеливый, Боб (2000-10-28). «Реализация расширенных атрибутов файловой системы FAT» . Проверено 11 июля 2017 .
- ^ - Справочное руководство по стандартам, средам и макросам Solaris 10
- ^ Хэммонс, Джек (2016-06-15). «Поддержка файловой системы WSL» . MSDN . Проверено 11 июля 2017 .
- ^ «Описание NTFS 1.2.1» . TotalCmd.net . Проверено 16 апреля 2018 года .
- ^ «Расширенный поиск QuickSearch» . TotalCmd.net . Проверено 16 апреля 2018 года .
- ^ «Расширенные атрибуты» . Туксера .