Расширенные атрибуты файла
Расширенные атрибуты файлов — это функции файловой системы , которые позволяют пользователям связывать компьютерные файлы с метаданными , не интерпретируемыми файловой системой, тогда как обычные атрибуты имеют цель, строго определенную файловой системой (например, разрешения или записи времени создания и изменения). В отличие от forks , размер которых обычно равен максимальному размеру файла, размер расширенных атрибутов обычно ограничен значением, значительно меньшим максимального размера файла. Типичное использование включает сохранение автора документа, кодировки символов открытого текстового документа или контрольной суммы , криптографического хеша или цифрового сертификата , а также о дискреционном управлении доступом информации .
В Unix-подобных системах расширенные атрибуты обычно обозначаются сокращением xattr . [1]
Реализации
[ редактировать ]ЭКС
[ редактировать ]В AIX файловая система JFS2 v2 поддерживает расширенные атрибуты, доступные с помощью команды команда getea . [2] получить [3] жажда , [4] список , [5] stateaстоял [6] и удалитьеа [7] API поддерживают выборку, настройку, перечисление, получение информации и удаление расширенных атрибутов.
BeOS/Хайку
[ редактировать ]В ныне несуществующей BeOS и ее преемниках, таких как Haiku , расширенные атрибуты файлов широко используются в базовых и сторонних программах. Файловая система Be позволяет индексировать и запрашивать атрибуты, по существу придавая характеристикам, подобным базе данных файловой системы . Использование расширенных атрибутов в Be-подобных системах разнообразно: например, Tracker и OpenTracker , файловые менеджеры BeOS и Haiku соответственно, оба сохраняют расположение значков файлов в атрибутах. [8] Служба «Почта» Haiku хранит все содержимое сообщений и метаданные в расширенных атрибутах файла. [9] а файлы MIME-типов хранятся в их атрибутах. Расширенные атрибуты файлов можно просматривать и редактировать в графическом интерфейсе Be-подобных систем через файловый менеджер, часто Tracker или его производные.
FreeBSD
[ редактировать ]В FreeBSD 5.0 и более поздних версиях файловые системы UFS1 , UFS2 и ZFS поддерживают расширенные атрибуты, используя extattr_ [10] семейство системных вызовов. Любой обычный файл может иметь список расширенных атрибутов. Каждый атрибут состоит из имени и связанных с ним данных. Имя должно быть строкой с нулевым завершением и существовать в пространстве имен, определяемом небольшим целочисленным идентификатором пространства имен. В настоящее время существует два пространства имен: пользовательское и системное. Пространство имен пользователя не имеет ограничений в отношении именования или содержимого. Пространство имен системы в основном используется ядром для списков управления доступом и обязательного контроля доступа .
Линукс
[ редактировать ]В Linux ext2 ext4 , ext3 , ReiserFS , JFS , Squashfs , UBIFS , Yaffs2 , Reiser4 , и , XFS , Btrfs , OrangeFS , Lustre , OCFS2 1.6 , ZFS . F2FS [11] файловые системы поддерживают расширенные атрибуты (сокращенно xattr ), если они включены в конфигурации ядра. Любой обычный файл или каталог может иметь расширенные атрибуты, состоящие из имени и связанных с ним данных. Имя должно представлять собой строку с нулевым завершением, перед которой стоит идентификатор пространства имен и точка. В настоящее время существует четыре пространства имен: пользовательское, доверенное, безопасность и системное. Пространство имен пользователя не имеет ограничений в отношении именования или содержимого. Пространство имен системы в основном используется ядром для списков управления доступом . Пространство имен безопасности используется 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 , доверенный и user плюс точка. Это определяет четыре пространства имен расширенных атрибутов. [16]
Доступ к расширенным атрибутам и их изменение можно получить с помощью getfattr
и setfattr
команды из attr
пакет в большинстве дистрибутивов. [17] API называются getxattr
и setxattr
.
macOS
[ редактировать ]Mac OS X 10.4 и более поздние версии поддерживают расширенные атрибуты за счет использования HFS+ файлов атрибутов файловой системы функции B*-дерева , которая позволяет создавать именованные ветки. Хотя именованные ответвления в 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]
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Linux программиста Руководство – Обзор, условные обозначения и прочее –
- ^ «Команда гетеа» . IBM AIX Документация V7.2 . ИБМ . Проверено 11 июля 2017 г.
- ^ «Подпрограмма getea» . Документация IBM AIX V7.2: Базовая операционная система и расширения, Том 1 . ИБМ . Проверено 11 июля 2017 г.
- ^ «Подпрограмма setea» . Документация IBM AIX V7.2: Базовая операционная система и расширения, том 2 . ИБМ . Проверено 11 июля 2017 г.
- ^ "Подпрограмма listea" . Документация IBM AIX V7.2: Базовая операционная система и расширения, Том 1 . ИБМ . Проверено 11 июля 2017 г.
- ^ «Подпрограмма состояния» . Документация IBM AIX V7.2: Базовая операционная система и расширения, том 2 . ИБМ . Проверено 11 июля 2017 г.
- ^ «Подпрограмма Removeea» . Документация IBM AIX V7.2: Базовая операционная система и расширения, том 2 . ИБМ . Проверено 11 июля 2017 г.
- ^ «Атрибуты» . Руководство пользователя Хайку . Хайку, Инк . Проверено 28 января 2021 г.
- ^ «Практикум: Управление электронной почтой» . Руководство пользователя Хайку . Хайку, Инк . Проверено 28 января 2021 г.
- ^ FreeBSD по системным вызовам Руководство –
- ^ Ким, Джегык (5 октября 2012 г.). «[ИСПРАВЛЕНИЕ 13/16] f2fs: добавлены функции xattr и acl» . Проверено 11 июля 2017 г.
- ^ Шауфлер, Кейси (30 апреля 2002 г.). "Posix.1e?" . Группа новостей : comp.security.unix .
- ^ «Журнал фиксации git v2.5.3» . 05.02.2002 . Проверено 11 июля 2017 г.
- ^ «Примечания к выпуску Red Hat Enterprise Linux AS 3 (выпуск x86)» . Красная шляпа . 2003. Архивировано из оригинала 9 июля 2017 г. Проверено 11 июля 2017 г.
Функции EA (расширенные атрибуты) и ACL (списки управления доступом) теперь доступны для файловых систем ext3. Кроме того, для NFS доступна функциональность ACL.
- ^ "linux/include/uapi/linux/limits.h" . 13 октября 2012 г. Проверено 11 июля 2017 г.
- ^ Linux программиста Руководство – Обзор, условные обозначения и прочее –
- ^ «Команды для управления расширенными атрибутами файловой системы» . ГНУ Саванна . Проверено 11 июля 2017 г.
- ^ Darwin и macOS по системным вызовам Руководство –
- ^ Darwin и macOS по системным вызовам Руководство –
- ^ Darwin и macOS по системным вызовам Руководство –
- ^ Darwin и macOS по системным вызовам Руководство –
- ^ Darwin и macOS по общим командам Руководство –
- ^ «Примечания к выпуску служб запуска» . разработчик.apple.com .
- ^ Дейл Ран (3 июля 2005 г.). «Журнал CVS для src/sys/ufs/ufs/Attic/extattr.h» .
- ^ Перейти обратно: а б Игер, Боб (28 октября 2000 г.). «Реализация расширенных атрибутов файловой системы FAT» . Проверено 11 июля 2017 г.
- ^ Solaris 11.4. по стандартам, средам, макросам, наборам символов и прочему Справочное руководство –
- ^ Хэммонс, Джек (15 июня 2016 г.). «Поддержка файловой системы WSL» . MSDN . Проверено 11 июля 2017 г.
- ^ «Описания NTFS 1.2.1» . TotalCmd.net . Проверено 16 апреля 2018 г.
- ^ «Расширенный быстрый поиск» . TotalCmd.net . Проверено 16 апреля 2018 г.
- ^ «Расширенные атрибуты» . Туксера . Архивировано из оригинала 14 августа 2020 г.