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[ссылка недействительна: package not found] | Нет | |
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: для сохранения цветов файлов.