Extended attributes (Русский) - ArchWiki

Jump to content

# Extended attributes (Русский)

2 languages

- English
- 日本語

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

Ссылки по теме

- Разрешения и атрибуты файлов
- Capabilities (Русский)

Расширенные атрибуты (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 для аудио.

- Для любых файлов: Exiftool
- Для аудио: Audio tag editors
- Для видео: ffprobe(1) из ffmpeg

### gvfs

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

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

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

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

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

- XDG guidelines for extended attributes
- wikipedia:Extended file attributes#Linux
- Extended attributes: the good, the not so good, the bad.

Category:

- File systems (Русский)