Изменение свойств файла linux
Команда управляет атрибутами файлов, формат которых задается в следующем символьном виде +-=[ASacDdIijsTtu].
Оператор `+’ добавляет выбранные атрибуты к уже существующим атрибутам файлов; оператор `-‘ удаляет их; оператор `=’ устанавливает только атрибуты, которые файлы имеют.
Новые атрибуты для файла выбираются из последовательности `acdijsuADST’: (a) — «только добавление записей», (c) — «сжатый», (d) — «недампируемый», (i) — «недосягаемый», (j) — «с журналированием данных» , (s) — «с гарантированным удалением», (t) — «без склеивания хвостов файлов», (u) — «не удаляемый», (A) — «не обновляемый по времени доступа», (D) — «с синхронизацией изменений директории», (S) — «синхронно обновляемый», (T) — «на вершине иерархии директорий».
Следует учитывать, что действие атрибутов команды chattr перекрывает полномочия пользователя, направленные на модификацию или удаление файлов. Это свойство часто используют в качестве дополнительной меры по усилению безопасности системы. Например, установка атрибута i («недосягаемый») для файла /etc/lilo.conf при помощи:
chattr +i /etc/lilo.conf предотвращает любые изменения (случайные и не только) в файле lilo.conf. Установленные командой chattr атрибуты невозможно увидеть с помощью команды ls. Для этого следует применять команду lsattr.
ОПЦИИ
-R Рекурсивно меняет атрибуты каталогов и их содержимого. Встречающиеся символические ссылки во время рекурсии игнорируются. -V Подробно информирует о происходящем и выводит версию программы. -v version Устанавливает версию или номер «сборки» файловой системы.
АТРИБУТЫ
Если для файла установлен атрибут ‘A’, тогда не происходит обновление (модификация) записи atime (время доступа к файлу). Это позволяет избежать дополнительных дисковых операций ввода/вывода для систем на портативных компьютерах.
Для файла с установленным атрибутом `a’ разрешено лишь добавлять записи. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE, может установить или очистить этот атрибут.
Информация файла с установленным атрибутом `c’ автоматически упаковывается (сжимается) на диске ядром операционной системы. Операция чтения информации из этого файла возвращает несжатые данные. Запись информации в такой файл сопровождается предварительной её упаковкой и, наконец, последующим сохранением на диск.
Когда модифицируется директория с установленным атрибутом `D’, внесенные изменения синхронно записываются на диск; это эквивалентно применению опции монтирования `dirsync’ к подмножеству файлов.
Для файла с установленным атрибутом `d’ не выполняется резервное копирование, когда запущена программа dump (8).
Атрибут ‘E’ используется экспериментальными заплатками сжатия для определения того, что сжатый файл имеет ошибку сжатия. Это состояние может быть установлено или сброшено с помощью chattr (1), а отображено lsattr (1).
Атрибут ‘I’ используется кодом для хеш-деревьев (htree), чтобы указать, что директория находится позади индексированных хешированных деревьев. Это состояние может быть установлено или сброшено с помощью chattr (1), а отображено lsattr (1).
Файл с установленным атрибутом `i’ становится полностью не модифицируемым (недосягаемым): он не может быть удален или переименован, никакие ссылки не могут быть созданы на этот файл и никакие данные не могут быть записаны в него. Только суперпользователь или процесс, обладающий возможностью CAP_LINUX_IMMUTABLE может установить или очистить такой атрибут
Для файла с установленным атрибутом `j’ все его данные прежде, чем быть записанными непосредственно в файл, сохраняются в журнал ext3. Правда, это происходит в том случае, если файловая система смонтирована с опциями «data=ordered» или «data=writeback». Когда файловая система смонтирована с опцией «data=journal» все данные файла уже журналируются и этот атрибут не имеет никакого эффекта. Только суперпользователь или процесс, обладающий возможностью CAP_SYS_RESOURCE, может установить или очистить этот атрибут.
При удалении файла с установленным атрибутом `s’ выполняется обнуление его блоков и запись их обратно на диск.
Модифицируя файл с атрибутом `S’, внесенные изменения синхронно записываются на диск; использование этого атрибута эквивалентно применению опции монтирования `sync’ к подмножеству расположенных файлов.
Директория с установленным атрибутом ‘T’ будет считаться, как расположенная на вершине иерархии директорий с целью использования метода распределения блоков по Orlov (который применяется в системах с Linux 2.5.46 или выше).
Файл с установленным атрибутом ‘t’ не будет иметь в конце (в блоке на диске) дописанных (склеенных с ним) частичных фрагментов (хвостов) других файлов (для тех файловых систем, которые поддерживают «склеивание хвостов» файлов). Это необходимо для программ типа LILO, которые непосредственно обращаются к файловой системе и не понимают «склеивание хвостов» файлов. Правда, здесь следует отметить, что файловые системы ext2 или ext3 не поддерживают для файлов «склеивание хвостов» (всё же, кроме некоторых весьма экспериментальных заплаток).
При удалении файла с атрибутом `u’, его содержимое сохраняется (остается не тронутым) на диске. Это позволяет пользователю в последующем восстановить такой файл.
Атрибут ‘X’ используется экспериментальными заплатками сжатия для определения того, что к необработанному содержанию сжатого файла можно получить непосредственный доступ. Это состояние может быть установлено или сброшено с помощью chattr (1), а отображено lsattr (1).
Атрибут ‘Z’ используется экспериментальными заплатками сжатия для определения того, что сжатый файл является необработанным. Это состояние может быть установлено или сброшено с помощью chattr (1), а отображено lsattr (1).
АВТОР
chattr написана Remy Card . В настоящее время она поддерживается Theodore Ts’o .
ОШИБКИ И ОГРАНИЧЕНИЯ
Атрибуты `c’, ‘s’ и `u’ пока не работают в файловых системах ext2 и ext3, хотя уже в текущей линейке ядер Linux они поддерживаются и их можно было бы использовать. Эти атрибуты могут быть реализованы в будущих версиях ext2 и ext3.
Опция `j’ полезна только для смонтированной файловой системы ext3.
Опция `D’ полезна только для ядра Linux 2.5.19 или выше.