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 <
[email protected]>, Yuri Kozlov
<
[email protected]> и Иван
Павлов <
[email protected]>
Этот
перевод
является
бесплатной
документацией;
прочитайте
Стандартную
общественную
лицензию GNU
версии 3
или более
позднюю,
чтобы
узнать об
условиях
авторского
права. Мы не
несем
НИКАКОЙ
ОТВЕТСТВЕННОСТИ.
Если вы
обнаружите
ошибки в
переводе
этой
страницы
руководства,
пожалуйста,
отправьте
электронное
письмо на
[email protected]