Неизменяемые файлы в Linux

Предположим вы хотите защитить некоторые важные файлы в 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 Комментарии