Extended attributes (Русский)

From ArchWiki
Состояние перевода: На этой странице представлен перевод статьи Extended attributes. Дата последней синхронизации: 22 сентября 2023. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Расширенные атрибуты (Extended attributes) — это пары ключ-значение, привязанные к файлу или каталогу. Существует четыре их класса: security, system, trusted и user.

Важно: По умолчанию cp, rsync и другие подобные программы не сохраняют расширенные атрибуты; смотрите раздел #Сохранение расширенных атрибутов.

Расширенные атрибуты также используются для установки привилегий (Capabilities).

Пользовательские расширенные атрибуты

Класс user может использоваться для хранения произвольной информации о файле. Пример создания атрибута:

$ setfattr -n user.checksum -v "3baf9ebce4c664ca8d9e5f6314fb47fb" файл.txt

Просмотр имеющихся атрибутов:

$ getfattr -e text -d файл.txt
# file: файл.txt
user.checksum="3baf9ebce4c664ca8d9e5f6314fb47fb"

Удаление атрибута:

$ setfattr -x user.checksum файл.txt

Для поиска файлов с определёнными расширенными атрибутами используйте rawhideAUR:

$ rh /путь/к/каталогу '"XATTR_REGEX".reea'

Некоторые другие пользовательские расширенные атрибуты:

  • user.mime_type: помогает программам узнать MIME-тип.
  • user.charset: используется модулем mod_mime_xattr веб-сервера Apache.
  • user.creator: название приложения, в котором был создан файл.

XDG также предлагает набор стандартизированных расширенных атрибутов для использования программами:

  • user.xdg.comment: поддерживается в Dolphin и других файловых менеджерах.
  • user.xdg.origin.url: ссылка, по которой был скачан файл.
  • user.xdg.robots.index: «true», если файл нужно индексировать, иначе «false».
  • user.xdg.robots.backup: «true», если для файла нужно создавать резервные копии, иначе «false».
  • user.xdg.language
  • user.xdg.creator
  • user.xdg.publisher
  • user.xdg.origin.email.subject
  • user.xdg.origin.email.from
  • user.xdg.origin.email.message-id

Сохранение расширенных атрибутов

Команда Сохраняет по умолчанию? / Требуемый флаг
cp --archive/--preserve=all/--preserve=xattr
mv Да1
tar --xattrs для создания и --xattrs-include='*' для извлечения
bsdtar -p для извлечения
rsync -X, --xattrs
cpio Нет
gzip Нет
pax Нет
syncthing при включении syncXattrs
  1. mv без предупреждения убирает расширенные атрибуты, если целевая файловая система их не поддерживает.

Чтобы сохранить расширенные атрибуты в текстовых редакторах, настройте их на усечение (truncate) файлов при сохранении вместо использования rename(2).[1]

Поддержка

Файловые системы

Все основные файловые системы Linux, в том числе Ext4, Btrfs, ZFS и XFS, поддерживают расширенные атрибуты. Ядро позволяет иметь имена расширенных атрибутов размером до 255 байт и значения до 64 КиБ, однако Ext4 и Btrfs могут устанавливать меньшие ограничения, требуя, чтобы расширенные атрибуты умещались в «блок файловой системы».

NTFS использует альтернативные потоки данных (Alternative Data Streams) для хранения пользовательских данных. По умолчанию должна использоваться опция монтирования user_xattr или streams_interface=xattr. Однако это может не поддерживаться, если используется streams_interface=windows. NTFS-3G поддерживает сопоставление альтернативных потоков данных с расширенными атрибутами в FUSE.

NFS на данный момент не поддерживает расширенные атрибуты.

Программы

Приложение Поддержка расширенных атрибутов Примечания
baloo
user.xdg.tags
user.baloo.rating
caja Да Поддерживается расширениями caja-xattr-tags и caja.eiciel.
Chromium Нет Использовались для поддержки referrer и url, но были отключены из соображений приватности и безопасности. Смотрите также CVE-2018-20483.
braveAUR Нет
CURL
user.xdg.origin.url
user.xdg.referrer.url
Включется флагом --xattrs.
dolphin
user.baloo.rating
user.xdg.comment
user.xdg.tags
[2]
Dropbox user.com.dropbox.attributes
emacs-vm Нет Удаляет имеющиеся атрибуты у mbox.
Epiphany Нет
Exiftool Нет
fd Нет
findutils Нет
Firefox Нет
gallery-dlAUR Нет
Gwenview user.xdg.tags
kfind Нет
konqueror Нет
kio [3]
Nautilus Нет
recoll user.xdg.tags
tagspacesAUR Нет
tmsuAUR Нет
Thunar Нет
youtube-dlAUR, yt-dlp
user.xdg.referrer.url
user.dublincore.title
user.dublincore.date
user.dublincore.description
user.dublincore.contributor
user.dublincore.format
Включается флагом --xattrs.
Wget
user.xdg.origin.url
user.xdg.referrer.url
Включается флагом --xattrs.
Webkit Нет

Другие системы тегов

Расширенные атрибуты могут оказаться недоступны из-за отсутствия поддержки со стороны файловой системы или программ. Поэтому многие медиаформаты позволяют хранить метаданные прямо внутри файла, и просмотреть их можно с помощью программ типа Exiftool или более специализированных, например id3AUR для аудио.

gvfs

Другим решением, не зависящим от файловой системы, является gvfs — виртуальная файловая система Gnome, которая используется для хранения метаданных (gvfsd-metadata). Например, Firefox хранит метаданные таким образом, и их можно просмотреть с помощью команды:

$ gio info --attributes=metadata:: скачанный-файл.html

Другие программы, использующие этот подход:

  • Thunar: для сохранения цветов файлов.

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