Extended attributes (Русский)
Расширенные атрибуты (Extended attributes) — это пары ключ-значение, привязанные к файлу или каталогу. Существует четыре их класса: security, system, trusted и user.
Расширенные атрибуты также используются для установки привилегий (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.languageuser.xdg.creatoruser.xdg.publisheruser.xdg.origin.email.subjectuser.xdg.origin.email.fromuser.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 |
- 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 для аудио.
- Для любых файлов: Exiftool
- Для аудио: Audio tag editors
- Для видео: ffprobe(1) из ffmpeg
gvfs
Другим решением, не зависящим от файловой системы, является gvfs — виртуальная файловая система Gnome, которая используется для хранения метаданных (gvfsd-metadata). Например, Firefox хранит метаданные таким образом, и их можно просмотреть с помощью команды:
$ gio info --attributes=metadata:: скачанный-файл.html
Другие программы, использующие этот подход:
- Thunar: для сохранения цветов файлов.