Scroll to navigation

XATTR(7) Руководство программиста Linux XATTR(7)

ИМЯ

xattr - расширенные атрибуты

ОПИСАНИЕ

Расширенные атрибуты представляют собой пары имя:значение, которые постоянно связаны с файлами и каталогами, подобно тому как строки окружения связаны с процессом. Атрибут может быть определён или не определён. Если он определён, то его значение может быть или пустым, или не пустым.

Расширенные атрибуты дополняют обычные атрибуты, которые связаны со всеми inode в файловой системе (т. е., данные stat(2)). Часто они используются для предоставления дополнительных возможностей файловой системы, например, дополнительные возможности безопасности, такие как списки контроля доступа (ACL), могут быть реализованы через расширенные атрибуты.

Пользователи, у которых доступ к поиску для файла или каталога могут использовать listxattr(2) для получения списка имён атрибутов, определённых для этого файла или каталога.

Расширенные атрибуты доступны как атомарные объекты. При чтении (getxattr(2)) возвращается всё значение атрибута и происходит его сохранение в буфер. При записи (setxattr(2)) происходит замещение старого значения на новое.

Место под расширенные атрибуты может быть учтено в дисковой квоте владельца файла и файловой группы.

Пространства имён расширенных атрибутов

Имена атрибутов представляют собой строки с null в конце. Имя атрибута всегда указывается в полной форме — пространство_имён.атрибут, например, user.mime_type, trusted.md5sum, system.posix_acl_access или security.selinux.

Механизм пространства имён используется для определения различных классов расширенных атрибутов. Эти различные классы существуют по нескольким причинам; например, права доступа и мандаты, требуемые для работы с расширенными атрибутами в одном пространстве имён, могут отличаться в другом.

В настоящее время определены следующие классы: security, system, trusted и user. В будущем могут появиться дополнительные классы.

Расширенные атрибуты безопасности

Пространство имён атрибутов безопасности используется модулями безопасности ядра, такими как Security Enhanced Linux, а также для реализации мандатов файлов (смотрите capabilities(7)). Доступ на чтение и запись атрибутов безопасности зависит от политики, реализуемой модулем безопасности для каждого атрибута безопасности. Если модуль безопасности не загружен, то все процессы могут читать расширенные атрибуты безопасности, а запись доступна только процессам с мандатом CAP_SYS_ADMIN.

Extended system attributes

Extended system attributes are used by the kernel to store system objects such as Access Control Lists. Read and write access permissions to system attributes depend on the policy implemented for each system attribute implemented by filesystems in the kernel.

Доверительные расширенные атрибуты

Доверительные расширенные атрибуты видимы и доступны только для процессов с мандатом CAP_SYS_ADMIN. Атрибуты этого класса используются при реализации механизмов в пользовательском пространстве (т. е., вне ядра) для хранения информации в расширенных атрибутах, к которым у обычных процессов не должно быть доступа.

Extended user attributes

Extended user attributes may be assigned to files and directories for storing arbitrary additional information such as the mime type, character set or encoding of a file. The access permissions for user attributes are defined by the file permission bits: read permission is required to retrieve the attribute value, and writer permission is required to change it.

Биты прав по разному учитываются между обычными файлами и каталогами и специальными файлами и символическими ссылками. У обычных файлов и каталогов битами прав определяется доступ к содержимому файлов, а у специальных файлов ими определяется доступ к устройству, которое описывает специальный файл. Файловые права на символические ссылки не используются при проверке доступа. Эти различия позволили бы пользователям использовать ресурсы файловой системы без учёта выделенных дисковых квот для группы или всем остальным, имеющим доступ на запись в специальные файлы и каталоги.

For this reason, extended user attributes are allowed only for regular files and directories, and access to extended user attributes is restricted to the owner and to users with appropriate capabilities for directories with the sticky bit set (see the chmod(1) manual page for an explanation of the sticky bit).

Различия с файловой системой

Ядро и файловая система могут ограничивать максимальное количество и размер расширенных атрибутов, которые можно связать с файлом. size of extended attributes that can be associated with a file. VFS налагает ограничение на длину имени атрибута в 255 байт и на значение атрибута в 64 КБ. Размер возвращаемого списка имён атрибутов также ограничивается 64 КБ (смотрите раздел ДЕФЕКТЫ в listxattr(2)).

Some filesystems, such as Reiserfs (and, historically, ext2 and ext3), require the filesystem to be mounted with the user_xattr mount option in order for extended user attributes to be used.

В текущих реализациях файловых систем ext2, ext3 и ext4 общее количество байт, используемое для имён и значений расширенных атрибутов всех файлов, должно помещаться в один блок файловой системы (1024, 2048 или 4096 байт, в зависимости от размера блока, указанного при создании файловой системы).

В реализациях файловых систем Btrfs, XFS и Reiserfs нет ограничения на количество расширенных атрибутов, связанных с файлом, а для хранения информации о расширенных атрибутах на диске используются масштабируемые алгоритмы.

В реализациях файловых систем JFS, XFS и Reiserfs ограничение на количество байт, используемых для значения EA, задаётся потолком VFS.

В реализации файловой системы Btrfs общее количество байт, используемое для имени, значения и расходов реализации, ограничено значением файловой системы nodesize (по умолчанию 16 КБ).

СООТВЕТСТВИЕ СТАНДАРТАМ

Расширенные атрибуты не описаны в POSIX.1, но некоторых других системах (например, BSD и Solaris) есть подобное свойство.

ЗАМЕЧАНИЯ

Так как файловые системы, на которых хранятся расширенные атрибуты, также могут использоваться на архитектурах с разным порядком байт и размером машинного слова, нужно позаботиться о том, чтобы сохраняемые значения атрибутов были в архитектуро-независимом формате.

Прежде эта страница называлась attr(5).

СМ. ТАКЖЕ

getfattr(1), setfattr(1), getxattr(2), ioctl_iflags(2), listxattr(2), removexattr(2), setxattr(2), acl(5), capabilities(7) selinux(8)

ЗАМЕЧАНИЯ

Эта страница является частью проекта Linux man-pages версии 4.16. Описание проекта, информацию об ошибках и последнюю версию этой страницы можно найти по адресу https://www.kernel.org/doc/man-pages/.

ПЕРЕВОД

Русский перевод этой страницы руководства был сделан Azamat Hackimov <azamat.hackimov@gmail.com>, Yuri Kozlov <yuray@komyakino.ru> и Иван Павлов <pavia00@gmail.com>

Этот перевод является бесплатной документацией; прочитайте Стандартную общественную лицензию GNU версии 3 или более позднюю, чтобы узнать об условиях авторского права. Мы не несем НИКАКОЙ ОТВЕТСТВЕННОСТИ.

Если вы обнаружите ошибки в переводе этой страницы руководства, пожалуйста, отправьте электронное письмо на man-pages-ru-talks@lists.sourceforge.net.

30 апреля 2018 г. Linux