Scroll to navigation

xattr(7) Miscellaneous Information Manual xattr(7)

ИМЯ

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

ОПИСАНИЕ

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

Extended attributes are extensions to the normal attributes which are associated with all inodes in the system (i.e., the stat(2) data). They are often used to provide additional functionality to a filesystem—for example, additional security features such as Access Control Lists (ACLs) may be implemented using extended attributes.

Пользователи, у которых доступ к поиску для файла или каталога могут использовать 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.

Системные расширенные атрибуты

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

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

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

Пользовательские расширенные атрибуты

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

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

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

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

The kernel and the filesystem may place limits on the maximum number and size of extended attributes that can be associated with a file. The VFS-imposed limits on attribute names and values are 255 bytes and 64 kB, respectively. The list of attribute names that can be returned is also limited to 64 kB (see BUGS in listxattr(2)).

Для использования пользовательских расширенных атрибутов в некоторых файловых системах, таких как Reiserfs (и, исторически, ext2 и ext3), требуется, чтобы файловая система была смонтирована с параметром монтирования user_xattr.

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

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

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

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

СТАНДАРТЫ

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

ПРИМЕЧАНИЯ

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

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

СМОТРИТЕ ТАКЖЕ

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

ПЕРЕВОД

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

Этот перевод является свободной программной документацией; он распространяется на условиях общедоступной лицензии GNU (GNU General Public License - GPL, https://www.gnu.org/licenses/gpl-3.0.html версии 3 или более поздней) в отношении авторского права, но БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ.

Если вы обнаружите какие-либо ошибки в переводе этой страницы руководства, пожалуйста, сообщите об этом разработчику(ам) по его(их) адресу(ам) электронной почты или по адресу списка рассылки русских переводчиков.

5 февраля 2023 г. Справочные страницы Linux 6.03