Предположим вы хотите защитить некоторые важные файлы в Linux. При чем они должны быть защищены не только от перезаписи но и от случайного или преднамеренного удаления и перемещения. Предотвратить перезапись или изменение битов доступа к файлов можно с помощью стандартных утилит chmod и chown, но это не идеальное решение, так как у суперпользователя по прежнему остается полный доступ. Но есть еще одно решение - chattr.
Chattr - это команда Linux для установки и отключения атрибутов файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение).
Lsattr - аналогичная команда для просмотра установленных атрибутов.
Изначально атрибуты управляемые chattr и lsattr поддерживались только файловыми системами семейства ext (ext2,ext3,ext4). но теперь эта возможность доступна и в других популярных файловых системах таких как XFS, Btrfs, ReiserFS, и т д.
В этой инструкции я покажу как сделать файлы неизменяемыми в Linux с помощью команды chattr.
Утилиты chattr и lsattr входят в пакет e2fsprogs и предустановлены во всех современных дистрибутивах.
Базовый синтаксис chattr выглядит следующим образом:
chattr [-RVf] [оператор][атрибуты] файлы
Оператор может принимать значения: + - Добавить новые атрибуты - - Удалить выбранные атрибуты = - Перезаписать выбранные атрибуты
Вот некоторые доступные атрибуты: a: - файл может быть открыт только в режиме добавления A: - не обновлять время перезаписи c: - автоматически сжимать при записи на диск C: - отключить копирование при записи i: - сделать неизменяемым s: - безопасное удаление с последующей перезаписью нулями
Содержание статьи: Атрибут Неизменяемый Атрибут только добавлять Выводы Атрибут Неизменяемый
Для того чтобы сделать файл неизменяемым вы установить атрибут неизменяемый. Например защитим от записи файл /etc/passwd:
sudo chattr +i /etc/passwd
Заметьте, нужно иметь права суперпользователя для установки и удаления атрибутов. Теперь проверим установился ли атрибут:
lsattr /etc/passwd
Теперь файл неизменяемый, и ни один пользователь не сможет его изменить. И более того, даже суперпользователь не сможет модифицировать, перезаписать или удалить этот файл. Перед тем как что либо делать с этим файлом нужно отключить атрибут.
Для отключения неизменяемости используйте следующую команду:
sudo chattr -i /etc/passwd
Если вы хотите сделать все файлы в каталоге неизменяемыми используйте опцию -R:
sudo chattr -R +i /etc Атрибут только добавлять
Еще один полезный атрибут - только добавлять, который позволяет только добавлять информацию в файл, без возможности перезаписи. Он может понадобится например если вы не хотите чтобы журнал очищался случайно.
Атрибут только добавлять устанавливается командой:
sudo chattr +a /var/log/syslog
Обратите внимание, если вы скопируете неизменяемый файл, атрибуты на новый файл распространятся не будут. Выводы
В этой инструкции я показал как использовать команды управления дополнительными атрибутами файлов chattr и lsattr для защиты от случайной перезаписи или удаления. Не забывайте что вы не можете использовать chattr как меру безопасности так как атрибуты легко изменить. Один из способов решения этой проблемы - ограничить доступ к самой утилите chattr или отключить функцию ядра CAP_LINUX_IMMUTABLE. Для получения более подробной информации об chattr посетите ее страницу.
0 Комментарии