Введение

Метаданные, связанные с компьютерным файлом, которые определяют поведение файловой системы. Атрибуты файлов — это тип метаданных, описывающих и, возможно, изменяющих поведение файлов и/или каталогов в файловой системе. Типичные атрибуты файла могут, например, указывать, видим ли файл, может ли он быть изменен, сжат или зашифрован. Доступность большинства атрибутов файлов зависит от поддержки базовой файловой системы (например, FAT, NTFS, ext4), где данные атрибутов должны храниться вместе с другими управляющими структурами. Каждый атрибут может находиться в одном из двух состояний: установлен или снят. Атрибуты рассматриваются отдельно от других метаданных, таких как даты и время, расширения имен файлов или разрешения файловой системы. Помимо файлов, атрибуты могут иметь папки, тома и другие объекты файловой системы.

Unix и POSIX

В Unix и Unix-подобных системах, включая системы, соответствующие стандарту POSIX, каждый файл имеет 'режим', содержащий 9 битов флагов, управляющих разрешениями на чтение, запись и выполнение для владельца файла, группы и всех остальных пользователей (см. Разрешения файловой системы § Традиционные Unix-разрешения для получения более подробной информации), а также флаги setuid и setgid и 'sticky' бит. Режим также определяет тип файла (обычный файл, каталог или другой специальный тип).

Линукс

Операционная система Linux может поддерживать широкий спектр атрибутов файлов, которые можно перечислить с помощью команды lsattr и изменить, где это возможно, с помощью команды chattr. Программы могут изучать и изменять атрибуты, используя операции ioctl. Многие файловые системы Linux поддерживают только ограниченный набор атрибутов, и ни одна из них не поддерживает все атрибуты, которые может изменить chattr. Файловые системы, поддерживающие хотя бы некоторые атрибуты, включают ext4, XFS и btrfs. + Общие атрибуты файлов, поддерживаемые многими распространенными файловыми системами Linux.

Опция флага атрибута | Семантика и обоснование
---|---
Нет обновлений времени доступа | A+A, Запись времени доступа не изменяется при чтении/открытии файла.
Только добавление | a+a, Запись в файл разрешена только в режиме добавления.
Неизменяемый | i+i, iПредотвращает любое изменение содержимого файла или метаданных: файл/каталог нельзя перезаписать, удалить, переименовать или создать жесткую ссылку.
Не включать в резервное копирование | d+d, dФайл исключается из программы резервного копирования.
Безопасное удаление | s+s, sЗапрашивает, чтобы при удалении все блоки данных файла были заполнены нулями.
Синхронные обновления | S+S, SИзменения синхронно записываются на базовый носитель файловой системы; эквивалентно опции монтирования 'sync' для затронутых файлов.

OpenSolaris и производные

В 2007 году в OpenSolaris была добавлена поддержка "системных атрибутов" (в которых операционная система определяет значение, в отличие от общих расширенных атрибутов файлов) для поддержки сервера CIFS. Эта поддержка была перенесена в релизы Oracle Solaris 11 и проект illumos с открытым исходным кодом. В данной реализации широкий спектр атрибутов может быть установлен с помощью команды chmod и просмотрен командой ls. Программы могут исследовать и изменять атрибуты, используя функции getattrat и setattrat. В настоящее время файловая система ZFS поддерживает все определенные атрибуты, а начиная с Oracle Solaris 11.2, файловая система tmpfs поддерживает их подмножество. + Общие атрибуты файлов, поддерживаемые Oracle Solaris и illumos:

AttributeCompact флаг для & Semantics и rationale
appendonly – Запись в файл разрешена только в режиме добавления.
immutable – Предотвращает любые изменения содержимого файла или метаданных (за исключением времени доступа): файл/каталог нельзя перезаписать, удалить или переименовать.
nodump – Файл должен быть исключен из программ резервного копирования.
nounlink – Запрещает удаление файла, но разрешает другие изменения.