Неизменяемые файлы в 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

16152651317_076a65cf50_b

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

Для отключения неизменяемости используйте следующую команду:

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 посетите ее страницу.

5 комментариев

  1. Павел Октябрь 5, 2015 Ответить
    • admin Октябрь 5, 2015 Ответить
      • Павел Октябрь 5, 2015 Ответить
        • admin Октябрь 5, 2015 Ответить
  2. мария Июнь 16, 2018 Ответить

Ответить

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: