Команда chattr
в Linux — команда файловой системы, используемая для изменения атрибутов файла в каталоге.
Содержание
Цель использования утилиты
Linux является многопользовательской операционной системой и существует вероятность того, что какой-либо пользователь может удалить файл. Во избежание подобных ситуаций утилита позволяет сделать некоторые файлы неизменяемыми, неудаляемыми, доступными только для добавления.
Синтаксис
$ chattr [-RVf] [-+=aAcCdDeijPsStTuFx] [-p проект] [-v версия] файлы...
Параметры
В начале строки режима должен стоять один из следующих операторов:
+
Добавляет выбранных атрибутов к существующим атрибутам файлов
–
Вызывает удаление выбранных атрибутов
=
Выбранные атрибуты становятся единственными атрибутами, имеющимися в файлах
Список общих атрибутов и связанных с ними флагов, которые можно установить/снять с помощью утилиты:
A set
Запись atime не обновляется
S set
Изменения синхронно обновляются на диске
a set
Файл можно открыть только в режиме добавления для записи
i set
Файл не может быть изменён (неизменяем), только суперпользователь может удалить атрибут
j set
Вся информация о файлах обновляется в журнале перед обновлением самого файла
t set
Слияние хвостов не допускается
d set
При запуске процесса дампа больше нет кандидатов на резервное копирование
u set
Когда такой файл удаляется, его данные сохраняются, что позволяет пользователю запросить его восстановление
Все приведённые выше команды не применимы к файлам и могут использоваться для каталогов, а также для защиты каталога от удаления или любых других аналогичных аварий. Однако при защите каталога предлагается использовать флаг -R
для рекурсивной защиты всего содержимого в указанном каталоге.
Различные варианты использования утилиты:
-R
Рекурсивно отображать атрибуты списка каталогов и их содержимого
-V
Отображать версии программы
-a
Выводить список всех файлов каталога, включающий файлы, имена которых начинаются с точки
.
-d
Отображать каталоги как обычные файлы
-v
Отображать номера версии файла
Использование в Linux команды chattr
Утилиту можно использовать для сохранения некоторых системных файлов, которые очень важны и должны оставаться на главном компьютере, несмотря ни на что. Это также необходимо, чтобы сделать каталог не подлежащим удалению или изменению для пользователей, кроме суперпользователя.
Ниже приведены примеры обычного использования утилиты.
Создание файла неизменяемым
Делаем файл test.txt
неизменяемым. Никакие операции с этим файлом будут невозможны до тех пор, пока атрибуты файла не будут изменены снова:
oleg@mobile:~/Chattr:$ ls -l
итого 4
-rw-r--r-- 1 oleg users 161 мар 18 14:33 test.txt
oleg@mobile:~/Chattr:$
oleg@mobile:~/Chattr:$ lsattr
--------------e------- ./test.txt
oleg@mobile:~/Chattr:$
oleg@mobile:~/Chattr:$ sudo chattr +i test.txt
oleg@mobile:~/Chattr:$
oleg@mobile:~/Chattr:$ lsattr
----i---------e------- ./test.txt
oleg@mobile:~/Chattr:$
Возвращаем атрибуты файла в исходное состояние:
oleg@mobile:~/Chattr:$ sudo chattr -i test.txt
oleg@mobile:~/Chattr:$
oleg@mobile:~/Chattr:$ lsattr
--------------e------- ./test.txt
oleg@mobile:~/Chattr:$
Открытие файла только в режиме добавления
С использованием флага a
мы можем открывать файл только в режиме добавления. Предыдущие данные, естественно, нельзя будет изменить:
oleg@mobile:~/Chattr:$ sudo chattr +a test.txt
oleg@mobile:~/Chattr:$
oleg@mobile:~/Chattr:$ lsattr
-----a--------e------- ./test.txt
oleg@mobile:~/Chattr:$
oleg@mobile:~/Chattr:$ cat test.txt
С неба звёздочка упала в колосистые поля,
oleg@mobile:~/Chattr:$
oleg@mobile:~/Chattr:$ echo "С нами Ленина не стало, стойкий Сталин у руля." > test.txt bash: test.txt: Операция не позволена oleg@mobile:~/Chattr:$
oleg@mobile:~/Chattr:$ echo "С нами Ленина не стало, стойкий Сталин у руля." >> test.txt
oleg@mobile:~/Chattr:$
Смотрим результат:
oleg@mobile:~/Chattr:$ cat test.txt
С неба звёздочка упала в колосистые поля,
С нами Ленина не стало, стойкий Сталин у руля.
oleg@mobile:~/Chattr:$
Обеспечение безопасности каталогов
С помощью флага +i
можно сделать каталог неизменяемым. Добавление флага -R
позволяет сделать вызов рекурсивным, а все подкаталоги и файлы в них также станут неизменяемыми:
oleg@mobile:~:$ sudo chattr -R +i Chattr/
oleg@mobile:~:$
oleg@mobile:~:$ rm -rf Chattr/
rm: невозможно удалить 'Chattr/test.txt': Операция не позволена
oleg@mobile:~:$
oleg@mobile:~:$ lsattr Chattr/
----i---------e------- Chattr/test.txt
oleg@mobile:~:$
oleg@mobile:~:$ sudo chattr -R -i Chattr/
oleg@mobile:~:$
oleg@mobile:~:$ lsattr Chattr/
--------------e------- Chattr/test.txt
oleg@mobile:~:$
Команда lsattr
использовалась для просмотра атрибутов файлов в каталоге. Следует также отметить, что флаг e
в файле установлен заранее.
Заключение
В операционной системе Linux команда chattr
, используемая системными администраторами, очень важна. Научиться пользоваться ей достаточно несложно.