Неизменяемые файлы в 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 посетите ее страницу.

Creative Commons License
Статья Неизменяемые файлы в Linux распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна.
Ваше имя тоже может быть здесь. Начните писать статьи для Losst. Это просто! Смотрите подробнее как начать писать статьи - Пишите для нас

Оцените статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (Пока оценок нет)
Загрузка...

4 комментария

  1. Павел Октябрь 5, 2015 Ответить
    • admin Октябрь 5, 2015 Ответить
      • Павел Октябрь 5, 2015 Ответить
        • admin Октябрь 5, 2015 Ответить

Ответить

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

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