Команда chattr: управляем атрибутами файлов

chattr

Chattr (Change Attribute) – команда в Linux, которая изменяет атрибуты файлов. Изначально применялась только в ext2, ext3, ext4, но сегодня может использоваться и в других файловых системах, например, XFS, ReiserFS, Btrfs и других.

Синтаксис команды

chattr [ -RV ] [ -v версия ] [ атрибуты ] файл/директория

Опции

-R – рекурсивное изменение атрибутов каталогов и их содержимого, игнорирование символических ссылок во время рекурсии;

-v version – вывод версии и номера сборки файловой системы;

-V – вывод версии программы;

-d – показ данных по всем атрибутам для всех каталогах;

-а – вывод атрибутов для всех файлов.

Атрибуты

а – разрешается добавлять информацию в файл или каталог, но изменять или удалять ее нельзя;

с – автоматическое сжатие файла при записи на диск;

D – синхронное обновление каталогов;

d – если запущена утилита dump, не выполняется бэкап для файла;

i – файлу присваивается статус неизменяемого;

j – все данные файла перед записью сохраняются в системный журнал;

s – обнуление блоков файла;

S – синхронное обновление;

u – содержимое файла сохраняется даже при его удалении.

Рассмотрим примеры

Присвоение файлу/каталогу статус неизменяемого

Например, мы хотим присвоить файлу /etc/passwd статус неизменяемого

# chattr +i /etc/passwd

Теперь внести правки, перезаписать или удалить этот файл не может даже суперпользователь. Любые манипуляции с правами файла можно делать только после отключения атрибута.

Чтобы посмотреть, установился ли наш атрибут, используем команду lsattr

# lsattr /etc/passwd

Чтобы удалить этот атрибут, пишем команду

# chattr –i /etc/passwd

Проверяем, действительно ли мы отменили атрибут, снова прописывая команду

# lsattr /etc/passwd

Должно получиться примерно вот так

chattr1

Добавление данных в файл без изменения содержимого

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

# chattr +a file2.txt

Проверяем командой

# lsattr file2.txt

chattr

Теперь попробуем внести изменения в содержимое файла file2.txt

Добавим содержимое файла file1.txt в файл file2.txt

# echo "replace contain on file1.txt" > file2.txt

Получаем сообщение о том, что это действие запрещено.

-bash: file2.txt: Operation not permitted

Обеспечение безопасности каталогов

Чтобы присвоить каталогу статус неизменяемого, мы используем опцию –R с атрибутом +i и указываем имя каталога.

Пишем команду

# chattr –R +i mydir1

Теперь попробуем удалить каталог вместе с содержимым

# rm –rf mydir1

Получаем сообщение

rm: cannot remove ‘mydir1’: Operation not permitted

Отменяем запрет при помощи атрибута -i

# chattr -R -i mydir1

Мы рассмотрели основные примеры использования этой команды. На самом деле, ее возможности далеко превосходят описанные нами в статье. Хотите знать и уметь больше? Записывайтесь на наши авторские курсы Linux!

Залишити відповідь

Дякуємо, що поділились