CHATTR(1)

ИМЯ
chattr - изменить атрибуты файла файловой системы Linux

СИНТАКСИС
chattr [ -RVf ] [ -v version ] [ -p project ] [ mode ] files...

ОПИСАНИЕ
chattr меняет атрибуты файлов на файловых системах Linux.

Формат символов mode +-=[aAcCdDeijsStTu].

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

Новые атрибуты для файла выбираются из последовательности 'aAcCdDeijsStTu': (a) - "только добавление записей", (A) - "не обновляемый по времени доступа", (c) - "сжимаемый", (C) - "не копируется при записи, (d) - "игнорируется программой dump", (D) - "синхронная запись изменений в каталоге", (e) - "extent формат", (i) - "защита от изменений", (j) - "с журналированием данных", (P) - "с иерархической структурой проекта", (s) - "с гарантированным (защищенным) удалением", (S) - "синхронно обновляемый" (t) - "запрет на слияние в конце файла (no tail-merging)", (T) - "корневой каталог в иерархии каталогов", (u) - "не удаляемый".

Следует учитывать, что действие атрибутов команды chattr перекрывает полномочия пользователя, направленные на модификацию или удаление файлов. Это свойство часто используют в качестве дополнительной меры по усилению безопасности системы. Например, установка атрибута i ("нзащищен от изменений") для файла /etc/lilo.conf при помощи:
    chattr +i /etc/lilo.conf
предотвращает любые изменения (случайные и не только) в файле lilo.conf. Установленные командой chattr атрибуты невозможно увидеть с помощью команды ls. Для этого следует применять команду lsattr.

Следующие атрибуты доступны только для чтения, могут выводиться командой: lsattr(1) и не могут изменяться командой chattr: (E) - "ошибка сжатия", (h) - гигантский (huge) файл", (I) - "проиндексированный (с помощью хеш-дерева) каталог", (N) - "содержатся данные, хранящиеся внутри самого индекса INODE", (X) - "сжатый raw-файл ", (Z) - "сжатый dirty-файл". Не все флаги поддерживаются или используются всеми файловыми системами; см. специальные справочные страницы для файловой системы, такие как btrfs(5), ext4(5), и xfs(5), содержат дополнительные сведения для конкретных файловых систем.

ОПЦИИ

-R  Рекурсивно меняет атрибуты каталогов и их содержимого. Встречающиеся символические ссылки во время рекурсии игнорируются.

-V  Подробно информирует о происходящем и выводит версию программы.

-f  Скрывает сообщения об ошибках.

-v version
    Устанавливает версию или номер "сборки" файловой системы.

АТРИБУТЫ
Для файла с установленным атрибутом 'a' разрешено лишь добавлять записи. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE, может установить или очистить этот атрибут.

Если для файла установлен атрибут 'A', тогда не происходит обновление (модификация) записи временной метки времени atime (время последнего доступа к файлу). Это позволяет избежать дополнительных дисковых операций ввода/вывода для систем на портативных компьютерах.

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

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

Для файла с установленным атрибутом 'd' не выполняется резервное копирование, когда запущена программа dump(8).

Когда модифицируется каталог с установленным атрибутом 'D', внесенные изменения синхронно записываются на диск; это эквивалентно применению опции монтирования 'dirsync' к подмножеству файлов. dump(8). Атрибут 'e' указывает, что включается использование поддержки extent при выделении файлу места на устройстве. Атрибут не может быть удален с помощь chattr(1).

Атрибут 'E' используется экспериментальными заплатками сжатия для определения того, имеет ли сжатый файл ошибку сжатия. Это состояние может быть установлено или сброшено с помощью chattr(1), а отображено lsattr(1).

Атрибут ' h ' указывает на то, что размеры блоков, в которых сохраняется файл, сопоставимы с размерами блоков файловой системы, а не с размерами секторов, а это значит (или означало в свое время), что файл больше, чем 2 ТБ. Это состояние не может быть установлено или сброшено с помощью chattr(1), хотя оно может быть отображено lsattr(1).

Файл с установленным атрибутом 'i' защищен от изменений: его нельзя удалить или переименовать, создать на него ссылку или записать в него какие-либо данные. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE может установить или очистить данный атрибут.

Атрибут 'I' используется при htree-кодировании и указывает на то, что данный каталог индексируется с использованием хэшированных деревьев. Это состояние может быть установлено или сброшено с помощью chattr(1), а отображено lsattr(1).

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

Файл с установленным атрибутом ' N ' указывает на то, что в нем содержатся данные, хранящиеся в строчном виде внутри самого индекса INODE. Это состояние может быть установлено или сброшено с помощью chattr(1), а отображено lsattr(1).

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

При удалении файла с установленным атрибутом 's' его блоки обнуляются и записывается обратно на диск. Примечание: пожалуйста, не забудьте прочитать раздел ОШИБКИ И ОГРАНИЧЕНИЯ в конце этого документа.

Модифицируя файл с атрибутом `S', внесенные изменения синхронно записываются на диск; использование этого атрибута эквивалентно применению опции монтирования `sync' к подмножеству файлов.

Файл с установленным атрибутом 't' не будет иметь в конце (в блоке на диске) дописанных (склеенных с ним) частичных фрагментов (хвостов) других файлов (для тех файловых систем, которые поддерживают "склеивание хвостов" файлов). Это необходимо для программ типа LILO, которые непосредственно обращаются к файловой системе и не понимают "склеивание хвостов" файлов. Правда, здесь следует отметить, что файловые системы ext2 или ext3 не поддерживают для файлов "склеивание хвостов" (всё же, кроме некоторых весьма экспериментальных заплаток).

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

При удалении файла с атрибутом 'u', его содержимое сохраняется (остается не тронутым) на диске. Это позволяет пользователю в последующем восстановить такой файл. Примечание: пожалуйста, не забудьте прочитать раздел ОШИБКИ И ОГРАНИЧЕНИЯ в конце этого документа.

Атрибут 'X' используется экспериментальными заплатками сжатия для определения того, что к необработанному содержанию сжатого файла можно получить непосредственный доступ. Это состояние может быть установлено или сброшено с помощью chattr(1), а отображено lsattr(1).

Атрибут 'Z' используется экспериментальными заплатками сжатия для определения того, что сжатый файл является необработанным. Это состояние может быть установлено или сброшено с помощью chattr(1), а отображено lsattr(1).

АВТОР
chattr написана Remy Card <Remy.Card@linux.org>. В настоящее время она поддерживается Theodore Ts'o <tytso@alum.mit.edu>.

ОШИБКИ И ОГРАНИЧЕНИЯ
Атрибуты `c', 's' и `u' пока не работают в файловых системах ext2, ext3 и ext4, хотя уже в текущей линейке ядер Linux они поддерживаются и их можно было бы использовать.

Опция `j' полезна только для смонтированной файловой системы ext3 или ext4.

Опция `D' полезна только для ядра Linux 2.5.19 или выше.

МЕСТОНАХОЖДЕНИЕ
chattr входит в состав пакета e2fsprogs и доступна через http://e2fsprogs.sourceforge.net.

СМ. ТАКЖЕ
lsattr(1) btrfs(5), ext4(5), xfs(5).

ПЕРЕВОД
Перевел с английского Aleksander N.Gorohovski <angel@feht.dgtu.donetsk.ua> 21.04.2005

РЕЦЕНЗИЯ ПЕРЕВОДА
Andrew Borodin <borodin@zarya-k.ru>

АстраЛинукс апрель 2020 - перевод CHATTR 1 "January 2017" "E2fsprogs version 1.43.4"