ZaLinux.ru

Атрибуты файлов в Linux

Атрибуты файлов в файловых системах Linux

У каждого файла имеется определённый набор свойств в файловой системе. Например, это права доступа, владелец, имя, метки времени. В Linux каждый файл имеет довольно много свойств, например, права доступа устанавливаются трижды (для владельца, группы и всех прочих), метки времени также бывают трёх разных видов (время создание, доступа и изменения).

Смотрите также: Время создания, доступа и изменения файла: что это, как их узнать и изменить. Как найти файлы по их времени создания, изменения или последнему открытию

Часть свойств файлов в текущей директории можно посмотреть командой:

ls -l

Пример свойств одного из файлов:

-rw-rw-r-- 1 mial users 262144 авг 18 15:04 custom-x.cramfs.img

При этом свойства файла не нужно путать с метаданными. Метаданные — это та информация, которая хранится в самом файле независимо от файловой системы. А свойства файла специфичны для файловой системы и могут быть потеряны, например, при переносе файла из файловой системы EXT4 в NTFS некоторые свойства файла (например, права доступа или метки времени) будут потеряны по той причине, что файловая система NTFS их не поддерживает.

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

Пользователи Linux обычно в курсе режимов доступа к файлам, подробнее о них смотрите в статье «Азы работы в командной строке Linux (часть 6)». Но файлам и директориям могут быть установлены атрибуты, о которы помнят далеко не все пользователи. Именно файловым атрибутам, а также утилитам для установления и считывания файловых атрибутов посвящена данная статья.

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

Список файловых атрибутов в Linux

Различают следующие виды расширенных атрибутов.

a

Файл с установленным атрибутом «a» можно открыть только в режиме добавления для записи. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE, может установить или очистить этот атрибут.

A

При доступе к файлу с установленным атрибутом «A» его запись atime не изменяется. Это позволяет избежать определённого количества дисковых операций ввода-вывода для портативных систем.

c

Файл с установленным атрибутом «c» автоматически сжимается на диске ядром. При чтении из этого файла возвращаются несжатые данные. Запись в этот файл сжимает данные перед их сохранением на диске. Примечание: обязательно прочтите об ошибках и ограничениях в конце этого раздела. (Примечание: для btrfs: если установлен флаг «c», то нельзя установить флаг «C». Также конфликтует с параметром монтирования btrfs «nodatasum»)

C

Файл с установленным атрибутом «C» не подлежит обновлению «копирование при записи». Этот флаг поддерживается только в файловых системах, которые выполняют копирование при записи. (Примечание: для btrfs флаг «C» должен быть установлен для новых или пустых файлов. Если он установлен для файла, который уже имеет блоки данных, он не определён, когда блоки, назначенные файлу, будут полностью стабильными. Если для каталога установлен флаг «C», он не повлияет на каталог, но для новых файлов, созданных в этом каталоге, будет установлен атрибут No_COW. Если установлен флаг «C», то флаг «c» не может быть установлен. установленный.)

d

Файл с установленным атрибутом «d» не является кандидатом для резервного копирования при запуске программы dump.

D

При изменении каталога с установленным атрибутом «D» изменения синхронно записываются на диск; это эквивалентно опции монтирования dirsync, применяемой к подмножеству файлов.

e

Атрибут «e» указывает, что файл использует экстенты для отображения блоков на диске. Его нельзя удалить с помощью chattr.

E

Файл, каталог или символическая ссылка с установленным атрибутом «E» зашифрованы файловой системой. Этот атрибут нельзя установить или сбросить с помощью chattr, хотя он может быть отображён с помощью lsattr.

F

Директория с установленным атрибутом «F» указывает, что все поиски путей внутри этого каталога выполняются без учёта регистра. Этот атрибут можно изменить только в пустых каталогах в файловых системах с включённой функцией casefold.

i

Файл с атрибутом «i» не может быть изменён: его нельзя удалить или переименовать, нельзя создать ссылку на этот файл, большую часть метаданных файла нельзя изменить, и файл нельзя открыть в режиме записи. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE, может установить или очистить этот атрибут.

I

Атрибут «I» используется кодом htree, чтобы указать, что каталог индексируется с использованием хешированных деревьев. Его нельзя установить или очистить с помощью chattr, хотя его можно отобразить с помощью lsattr.

j

Файл с атрибутом «j» имеет все данные, записанные в журнал ext3 или ext4 перед записью в сам файл, если файловая система смонтирована с параметрами «data=ordered» или «data=writeback» и файловая система имеет журнал. Если файловая система смонтирована с параметром «data=journal», все данные файла уже занесены в журнал, и этот атрибут не действует. Только суперпользователь или процесс, обладающий возможностью CAP_SYS_RESOURCE, может установить или очистить этот атрибут.

m

Файл с атрибутом «m» исключается из сжатия в файловых системах, которые поддерживают сжатие файлов.

N

Файл с установленным атрибутом «N» указывает, что файл содержит данные, хранящиеся внутри самого inode. Его нельзя установить или очистить с помощью chattr, хотя его можно отобразить с помощью lsattr.

P

Директория с установленным атрибутом «P» будет обеспечивать иерархическую структуру для идентификаторов проектов. Это означает, что файлы и каталоги, созданные в директории, будут наследовать идентификатор проекта каталога, операции переименования ограничены, поэтому, когда файл или каталог перемещается в другой каталог, идентификаторы проекта должны совпадать. Кроме того, жёсткая ссылка на файл может быть создана только в том случае, если идентификатор проекта для файла и целевой каталог совпадают.

s

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

S

При изменении файла с установленным атрибутом «S» изменения синхронно записываются на диск; это эквивалентно опции монтирования «sync», применяемой к подмножеству файлов.

t

Файл с атрибутом «t» не будет иметь фрагмент частичного блока в конце файла, объединённого с другими файлами (для тех файловых систем, которые поддерживают объединение хвостов).

Это необходимо для таких приложений, как LILO, которые читают файловую систему напрямую и не понимают файлы с хвостовым слиянием. Примечание. На момент написания этой статьи файловые системы ext2, ext3 и ext4 не поддерживают слияние хвостов.

T

Директория с атрибутом «T» будет считаться вершиной иерархии каталогов для целей распределителя блоков Орлова. Это подсказка распределителю блоков, используемому ext3 и ext4, что подкаталоги в этом каталоге не связаны и, следовательно, должны быть разделены для целей распределения. Например, очень хорошая идея установить атрибут «T» в каталоге /home, чтобы /home/john и /home/mary были помещены в отдельные группы блоков. Для каталогов, где этот атрибут не установлен, распределитель блоков Орлова будет пытаться сгруппировать подкаталоги ближе друг к другу, где это возможно.

u

Когда файл с установленным атрибутом «u» удаляется, его содержимое сохраняется. Это позволяет пользователю запрашивать его восстановление. Примечание: обязательно прочтите об ошибках и ограничениях в конце этого раздел.

x

Атрибут «x» может быть установлен для каталога или файла. Если атрибут установлен в существующем каталоге, он будет унаследован всеми файлами и подкаталогами, которые впоследствии будут созданы в каталоге. Если существующий каталог содержал некоторые файлы и подкаталоги, изменение атрибута в родительском каталоге не изменяет атрибуты этих файлов и подкаталогов.

V

Для файла с установленным атрибутом «V» включена функция проверки подлинности. Он не может быть записан, и файловая система будет автоматически проверять все данные, считанные из неё, по криптографическому хешу, который покрывает всё содержимое файла, например через дерево Меркла. Это позволяет эффективно аутентифицировать файл. Этот атрибут нельзя установить или сбросить с помощью chattr, хотя он может быть отображён с помощью lsattr.

Можно ещё вспомнить липкий бит (sticky bit), суть которого в том, что файл с данным битом может удалить только тот пользователь, который является владельцем файла. Липкий бит устанавливается с помощью программы chmod:

chmod +t test.txt

Но к рассматриваемым файловым параметрам липкий бит не имеет отношения.

Ошибки и ограничения

Атрибуты «c», «s» и «u» не поддерживаются файловыми системами ext2, ext3 и ext4, как это реализовано в текущих основных ядрах Linux. Установка атрибутов «a» и «i» не повлияет на возможность записи в уже существующие файловые дескрипторы.

Параметр «j» полезен только для файловых систем ext3 и ext4.

Параметр «D» полезен только в ядре Linux 2.5.19 и новее.

chattr — программа для установки и изменения файловых атрибутов

chattr изменяет атрибуты файлов в файловой системе Linux.

Формат символьного режима: +-=[aAcCdDeFijmPsStTux].

Оператор «+» вызывает добавление выбранных атрибутов к существующим атрибутам файлов; «-» заставляет их удалить; и «=» делает их единственными атрибутами файлов.

Буквы «aAcCdDeFijmPsStTux» выбирают новые атрибуты для файлов:

  • только добавление (a),
  • без обновлений времени (A),
  • сжатие (c),
  • без копирования при записи (C),
  • без дампа (d),
  • синхронные обновления каталогов (D),
  • формат экстента (e),
  • поиск в каталогах без учёта регистра (F),
  • неизменяемый (i),
  • ведение журнала данных (j),
  • без сжатия (m),
  • иерархия проекта (P),
  • безопасное удаление (s),
  • синхронные обновления (S),
  • без слияния хвостов (t),
  • вершина иерархии каталогов (T),
  • возможность восстановления после удаления (u)
  • и прямой доступ к файлам (x).

Следующие атрибуты доступны только для чтения и могут быть перечислены lsattr, но не могут быть изменены chattr:

  • зашифрованный (E),
  • индексированный каталог (I),
  • встроенные данные (N)
  • и достоверность (V).

Не все флаги поддерживаются или используются всеми файловыми системами; обратитесь к страницам руководства, относящимся к файловым системам, таким как btrfs, ext4 и xfs для получения дополнительных сведений о файловых системах.

Следующая команда сделает файл test.txt заблокированным для удаления, изменения, перемещения (i):

sudo chattr +i test.txt

Причём даже добавление sudo к командам удаления и перемещения не поможет, этот файл будет невозможно изменить и удалить до тех пор, пока не будет удалён атрибут «i».

Смотрите также: Что такое sudo

Следующая команда удаляет атрибут «i»:

sudo chattr -i test.txt

Если в качестве цели изменения параметров вы выбрали директории, то опция -R сделает так, что атрибуты будут рекурсивно изменены и для содержимого директорий.

chattr является частью пакета e2fsprogs и доступна по адресу http://e2fsprogs.sourceforge.net, хотя в большинстве дистрибутивов Linux этот пакет уже предустановлен по умолчанию.

lsattr — программа для показа атрибутов файлов в файловой системе Linux

lsattr перечисляет атрибуты файлов в файловой системе Linux.

Для просмотра файловых атрибутов укажите имя файлов:

lsattr test.txt

Опции программы:

-R

Рекурсивный список атрибутов директорий и их содержимого.

-a

Перечислить все файлы в каталогах, включая файлы, начинающиеся с «.».

-d

Список каталогов как и других файлов, а не их содержимое.

-l

Печатать параметры, используя длинные имена вместо односимвольных сокращений.

-p

Вывести номер проекта файла.

-v

Вывести номер версии/поколения файла.

lsattr является частью пакета e2fsprogs и доступна по адресу http://e2fsprogs.sourceforge.net, хотя в большинстве дистрибутивов Linux этот пакет уже предустановлен по умолчанию.

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *