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.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 | 
- 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: для сохранения цветов файлов.