Linux защита от удаления

Обновлено: 05.07.2024

У меня есть очень важный файл, который приложение использует на своем рабочем месте, и мне нужно убедиться, что оно вообще не удаляется, как я могу это сделать?

Сделайте резервную копию, чтобы вы могли ее восстановить . Кроме того, это chattr +i может помочь, но сделает файл доступным только для чтения (и может быть перезаписан chattr -i ), также вы можете попытаться защитить его с помощью SELInux и т. Д. Может ли root создать процесс, который даже root не может убить? Администратор HW может прийти и вынуть диск, порезать его, сжечь остатки и скормить их. Или, что лучше, некоторые программисты на C (++) могут вызывать некоторых носовых демонов. Все, что важно для вас, поддержите это. Дважды.

Да, вы можете изменить атрибуты файла только для чтения.

И чтобы отключить это:

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

Обратите внимание, что пользователь с root-доступом может снять этот флаг и затем удалить файл. Это вряд ли произойдет случайно, но это не защищает от преднамеренного удаления. @ Грант, если уровень безопасности установлен достаточно высоко. Процесс загрузки устанавливает уровень защиты 2, прежде чем сеть будет включена, поэтому для сброса флага требуется доступ с локального компьютера (но это означает, что файлы, используемые в процессе загрузки до этого времени, также должны быть неизменяемыми). @ Грант Если кто-то хочет довести это до крайности, вы не можете предотвратить удаление раздела или попадание диска в печь или распад протонов через 10 ^ 30 лет . @Itai Ganot человек Я хотел бы прочитать это 4 дня назад. У меня был вопрос на экзамене, который я взял = /

Запишите это на CD. Вставьте компакт-диск в привод CD-ROM и получите к нему доступ оттуда.

+1 за нестандартное мышление. И, на самом деле, он также использовался ранее в некоторых обстоятельствах (черный диск cdrom с компакт-диском в нем доставлен к месту назначения). В любом случае это может быть нецелесообразно, если кто-то может отключить диск. Я думаю, что это правильный ответ на этот вопрос. Изменение атрибута файла (chattr -i) не может предотвратить вредоносные действия. В наши дни полноразмерная SD-карта во встроенном кард-ридере может быть лучшим решением - более низкое энергопотребление, более быстрый доступ во многих случаях и более долговечный при использовании без записи.
  1. Создайте образ файловой системы.
  2. Смонтировать образ.
  3. Скопируйте файл в смонтированный образ.
  4. Размонтируйте изображение и установите его только для чтения.
  5. Теперь вы не можете удалить его.
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt Принимая это немного дальше, вы можете использовать squashfs или cramfs которые являются сжатыми и только для чтения. Для сборки файловой системы нужен специальный инструмент.

Linux имеет так называемый привязывать монтаж варианта , который является довольно мощным и полезной особенностью , чтобы узнать :

- здесь выполняется привязка файла к себе (да, вы можете сделать это в Linux), затем он монтируется в режиме R / O. Конечно, это можно сделать и с каталогом.

Вы также должны создать несколько жестких ссылок на файл. Они должны находиться в разных местах, к которым обычные пользователи не могут получить доступ.

Таким образом, даже если им удастся переопределить защиту вашего chattr, данные останутся, и вы сможете легко восстановить их там, где их ищет ваше приложение.

Однако они обеспечат дополнительную защиту от DELETION, которая была первоначальным вопросом. @ barbecue Если файл не связан с именем, по которому его ищет приложение, не имеет значения, что содержимое файла существует под другим именем. Для всего, что ищет файл с ожидаемым именем, файл все еще был удален.

Другие ответили на ваш вопрос, как вы его задали. Как отметил @Sven в комментарии, общее решение вопроса: «Как мне убедиться, что я никогда не потеряю файл?» это создать резервную копию файла. Сделайте копию файла и сохраните его в нескольких местах. Кроме того, если файл чрезвычайно важен и у вашей компании есть политика резервного копирования важных данных с помощью службы резервного копирования, вы можете проверить, включен ли этот файл в службу.

Ну, конечно, файл регулярно копируется, я просто хотел еще один уровень защиты от пользователей, которые иногда работают на коробке с правами пользователя root.

На Линуксе неизменен флаг поддерживается только на некоторых типах файловой системы (большинство из них , как родных ext4 , xfs , btrfs . )

В файловых системах, где это не поддерживается, другой вариант - привязать файл к себе в режиме только для чтения. Это должно быть сделано в два этапа:

Это должно быть сделано при каждой загрузке, например, через /etc/fstab .

Я надеюсь, что кто-нибудь umount снова получит файл с правами на запись

В комментарии к ответу Кевина Джерри упоминает:

Ну, конечно, файл регулярно копируется, я просто хотел еще один уровень защиты от пользователей, которые иногда работают на коробке с правами пользователя root. -

Я собираюсь предположить, что вы не можете изменить эту практику, так как это действительно очень плохая идея.

Все предложения по использованию устройства, доступного только для чтения, имеют одну и ту же проблему - это делает вас PITA для внесения законных изменений, когда это необходимо. В случае блокируемого диска, такого как SD-карта, вы сталкиваетесь с проблемой внезапной уязвимости, когда вы разблокируете ее, чтобы внести изменения.

Вместо этого я бы порекомендовал настроить другую машину в качестве сервера NFS и предоставить общий доступ к каталогу с важными файлами для машин, на которых пользователи имеют права root. Предоставьте общий доступ к монтированию только для чтения, чтобы машины с пользователями, которым вы не доверяете, не могли вносить никаких изменений. Когда вам нужно законно внести изменения, вы можете подключиться к серверу NFS и внести наши изменения там.

Мы используем это для наших веб-серверов, так что успешный эксплойт против веб-сервера не сможет вставлять или изменять какие-либо файлы, которые сервер затем будет возвращать обратно, или изменять конфигурацию.

Обратите внимание, что это может быть обойдено так же, как и все связанные с точкой монтирования:

  • Сделайте копию защищенного каталога
  • Размонтировать каталог
  • Переместите копию на место монтирования или вставьте в нее символическую ссылку, если на этом монтировании недостаточно места.
Почему «действительно очень плохая идея» - регулярно создавать резервные копии важных файлов, а также прилагать усилия для защиты оригинала от случайного удаления? Из исходного вопроса ОП и из комментария ОП к ответу, на который вы ссылались, ясно, что проблема заключается не в злонамеренной деятельности, а в случайной / некомпетентной деятельности. @Craig: плохая идея иметь много пользователей с root, особенно если им не доверяют не связываться с критическими файлами. Ах . ну, конечно. :-) Но это не суть вопроса ОП. OP утверждал , что есть пользователи с правами суперпользователя , которые должны быть защищены от случайного удаления файла. @Craig: это может быть не суть вопроса, но это суть проблемы (проблема XY?) . но я понятия не имею , что они делают , как корень, так что, если они могли бы использовать УИП и / или ограниченные привилегии sudo. И вам следует перечитать вопрос, так как я не вижу упоминания Джерри, что он только пытается защитить от непреднамеренного удаления («мне нужно убедиться, что это не удаление вообще»), и он дал только одно продолжение, которое я увидеть (что вызвало мой ответ).

Почему бы не создать образ ISO 9660, который предназначен только для чтения?

Смонтируйте ISO-образ, и он будет выглядеть как CD-ROM, но с производительностью жесткого диска, а файлы на смонтированном образе будут столь же безопасны для удаления, как и файлы на физическом CD-ROM.

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

Есть потенциальные негативные проблемы с запуском его с физического CD, в том числе с производительностью (приводы CD-ROM намного, намного медленнее, чем жесткие диски или твердотельные накопители). Существует вероятность того, что CD-ROM будет удален благонамеренным человеком и заменен другим диском, к которому им необходим доступ. Существует вероятность того, что злоумышленник просто вытащит диск и выбросит его в микроволновую печь (или корзину), тем самым «удалив» ваш файл. Есть неудобство необходимости иметь выделенный аппаратный привод CD-ROM только для этого одного файла, и другие факторы.

Но ОП ясно дал понять, что основной целью является защита от случайного удаления, а не от злонамеренных действий, и что рассматриваемый файл (ы) резервируется и может быть восстановлен в случае аварии, но крайне желательно, чтобы файл никогда не был быть случайно удаленным.

Кажется, что запуск файла из смонтированного ISO-образа удовлетворяет требованию.

chattr (Change Attribute) - это утилита командной строки в linux, которая используется для установки/снятия специальных атрибутов файлов для предотвращения случайной модификации и удаления файлов или директорий, даже если вы авторизованы как root.

Нативные файловые системы в Linux, такие как ext2, ext3, ext4, btrfs, поддерживают все флаги для файлов. Никто не сможет удалить или модифицировать файл/директорию, защищенный атрибутами, установленными с помощью команды chattr, даже имея полный доступ ко всем операциям с файлом. Очень полезно защитить атрибутами такие файлы , как passwd и shadow, содержащие информацию о пользователе.

Атрибуты и флаги

Ниже приведен список часто используемых атрибутов и соответствующих флагов, которые согут быть установлены с помощью команды chattr.
1. Если обращаются к файлу с установленным атрибутом "А", его запись atime не обновляется.
2. Если модифицируется файл с установленным атрибутом "S", изменения синхронизируются с диском.
3. Если установлен атрибут "a", файл может быть открыт для записи только в режиме добавления текста.
4. Если установлен атрибут "i", файл нельзя модифицировать (immutable). Это значит нельзя переименовывать, создавать символьные ссылки, исполнять и записывать, снять этот втрибут может только суперпользователь.
5. Если установлен атрибут "j", то при модификации файла сначала будет обновлена информация о файле в журнале ext3, а затем уже сам файл.
6. Если установлен атрибут "t", файл нельзя объединять с другими файлами.
7. Файл с атрибутом "d" не будет являться кандидатом для резервного копирования при запуске процесса dump.
8. При удалении файла с атрибутом "u" его данные сохраняются, и пользователь сможет восстановить его.

Операторы

+ : добавляет атрибут к существующим у файла атрибутам.
- : удаляет атрибут файла.
= : оставляет существующие у файла атрибуты.

Теперь мы продемонстрируем вам несколько примеров применения команды chattr.

1. Как защитить файл от удаления

Для демонстрационных целей мы будем использовать директорию demo и файл important_file.conf. Сначала посмотрим, какие атрибуты у них установлены, с помощью команды ls -l. Как можно видеть ниже пока никаких атрибутов нет.

Для установки атрибута мы используем оператор +, для снятия - оператор -. Давайте защитим файл от удаления кем бы то ни было, даже суперпользователем.

Замечание: Бит +i может быть установлен только суперпользователем, либо пользователем с привилегиями sudo.
Давайте проверим установленные атрибуты с помощью команды 'lsattr'.

2. Как снять атрибут с файла

В приведенном выше примере мы увидели, как установить атрибут для предотвращения непреднамеренного удаления файл, здесь же мы научимся удалять атрибут, чтобы снова поучить возможность удалять или редактировать файл.

Теперь снова проверим наличие атрибутов с помощью команды 'lsattr'.

Флаг '-i' удален, поэтому мы спокойно можем удалить файлы и директории.

3. Как защитить файлы /etc/passwd и /etc/shadow

Предотвратив модификацию файлов /etc/passwd или /etc/shadow, мы защитим их от случайного удаления или подмены, а также отключим создание пользовательских аккаунтов.

Таким образом вы можете защитить важные файлы от удаления.

4. Добавление данных в файл без изменения уже существующих

Если вы хотите разрешить только добавление данных файл, без редактирования уже существующих данных, это можно сделать с помощью установки атрибута 'a':

Попытаемся добавить в файл новый контент и проверить результат:

5. Как защищать директории

Для защиты всей директории вместе с содержащимися в ней файлами используется флаг '-R' (рекурсия) вместе с '+i'.

После рекурсивной установки атрибута попробуем удалить директорию вместе со всеми файлами:

Предположим вы хотите защитить некоторые важные файлы в Linux. При чем они должны быть защищены не только от перезаписи но и от случайного или преднамеренного удаления и перемещения. Предотвратить перезапись или изменение битов доступа к файлов можно с помощью стандартных утилит chmod и chown, но это не идеальное решение, так как у суперпользователя по прежнему остается полный доступ. Но есть еще одно решение. Это команда chattr.

Эта утилита позволяет устанавливать и отключать атрибуты файлов, на уровне файловой системы не зависимо от стандартных (чтение, запись, выполнение). Для просмотра текущих аттрибутов можно использовать lsattr. Изначально атрибуты управляемые chattr и lsattr поддерживались только файловыми системами семейства ext (ext2,ext3,ext4). но теперь эта возможность доступна и в других популярных файловых системах таких как XFS, Btrfs, ReiserFS, и т д.

Синтаксис и опции chattr

Утилиты chattr и lsattr входят в пакет e2fsprogs и предустановлены во всех современных дистрибутивах. Базовый синтаксис chattr выглядит следующим образом:

$ chattr опции [оператор] [атрибуты] файлы

Вот основные опции утилиты, которые вы можете использовать:

Оператор может принимать значения:

  • + - включить выбранные атрибуты;
  • - - отключить выбранные атрибуты;
  • = - оставить значение атрибута таким, каким оно было у файла.

Вот некоторые доступные атрибуты:

  • a - файл может быть открыт только в режиме добавления;
  • A - не обновлять время перезаписи;
  • c - автоматически сжимать при записи на диск;
  • C - отключить копирование при записи;
  • D - работает только для папки, когда установлен, все изменения синхронно записываются на диск сразу же;
  • e - использовать extent'ы блоков для хранения файла;
  • i - сделать неизменяемым;
  • j - все данные перед записью в файл будут записаны в журнал;
  • s - безопасное удаление с последующей перезаписью нулями;
  • S - синхронное обновление, изменения файлов с этим атрибутом будут сразу же записаны на диск;
  • t - файлы с этим атрибутом не будут хранится в отдельных блоках;
  • u - содержимое файлов с этим атрибутом не будет удалено при удалении самого файла и потом может быть восстановлено.

А теперь давайте перейдем к примерам работы с утилитой chattr и сделаем файл неизменяемым.

Примеры использования chattr

Давайте сначала посмотрим текущие атрибуты файла /etc/passwd:


Для того чтобы сделать файл неизменяемым вам надо установить атрибут i. Например, защитим от записи тот же файл /etc/passwd:

sudo chattr +i /etc/passwd

Заметьте, нужно иметь права суперпользователя для установки и удаления атрибутов. Теперь проверим установился ли атрибут:


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

Для отключения любого из атрибутов chattr используйте оператор минус (-):

sudo chattr -i /etc/passwd


Если вы хотите сделать все файлы в каталоге неизменяемыми используйте опцию -R:

sudo chattr -R +i /etc/

Еще один полезный атрибут только добавлять (a), который позволяет только добавлять информацию в файл, без возможности перезаписи. Он может понадобится, например, если вы не хотите чтобы кто-либо мог очистить журнал. Он устанавливается аналогично атрибуту i:

sudo chattr +a /var/log/syslog

Обратите внимание, если вы скопируете файл для которого настроены определенные атрибуты, на новый файл они распространятся не будут.

Выводы

В этой инструкции я показал как использовать команды управления дополнительными атрибутами файлов chattr и lsattr для защиты от случайной перезаписи или удаления. Не забывайте что вы не можете использовать chattr как меру безопасности так как атрибуты легко изменить. Один из способов решения этой проблемы - ограничить доступ к самой утилите chattr. Для получения более подробной информацию смотрите man страницу команды.

Папки и файлы Linux

Хотя Gnu / Linux - очень безопасная операционная система, правда в том, что иногда случается так, что мы удаляем файлы по ошибке а потом уже трудно вернуться. Это может произойти и многое другое, если наш компьютер находится в общем доступе.

Далее мы расскажем вам, как этого избежать, благодаря программе под названием rm-protection, программе на Python, которая поможет нам избежать этих проблем и избежать проблем с внешними программами восстановления. Работа rm-защиты очень проста, так как она позволяет избежать случайного удаления любого файла в Gnu / Linux.

Сначала мы должны установить программу RM-Protection а в некоторых случаях нам нужно установить специальные плагины python, для этого мы открываем терминал и пишем следующее:

Arch Linux и производные

RedHat / OpenSUSE

Debian / Ubuntu / производные

Установка программы rm-защиты:

После установки программы нам нужно выбрать файлы или каталоги, которые мы хотим зашифровать, для этого нам нужно только написать следующее:

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

Система, использующая rm-защиту, проста, и программа имеет базовые операции, что мы можем проверить благодаря репозиторий программы на github, но он полностью функциональный, потому что вопрос заставит нас определить, что мы делаем и какой файл удаляем.

Содержание статьи соответствует нашим принципам редакционная этика. Чтобы сообщить об ошибке, нажмите здесь.

Полный путь к статье: Любители Linux » GNU / Linux » Системное администрирование » Как защитить от случайного удаления файлов в Linux

Здравствуй, дорогой читатель! Наверняка у тебя есть такие файлы с данными, потеря которых абсолютно нежелательна и ты хотел бы защитить такие файлы от случайного удаления. Особенно это актуально для тех кто только осваивает систему Ubuntu и много экспериментирует с терминалом и различными утилитами и командами. Конечно можно воспользоваться командой chmod, чтобы установить права на изменение файла только определенным пользователям, но это не спасет от случайного удаления файла от имени суперпользователя.

Для файловых систем семейства ext* (ext2, 3, 4) существует программный пакет e2fsprogs в состав которого входит утилита chattr, которая позволяет управлять атрибутами файлов. И использование данной утилиты поможет сделать файл действительно защищенным от удаления либо перезаписи данных, ведь удалить или изменить его не сможет даже суперпользователь.

Откроем терминал и попробуем создать файл и установить на него атрибут неизменяемого:

Создадим пустой файл:

Теперь попробуем удалить файл:

Ответ в терминале:

rm: невозможно удалить './file.ext': Операция не позволена

Попробуем удалить файл от имени суперпользователя:

Ответ все тот-же:

rm: невозможно удалить './file.ext': Операция не позволена
Также, если попробовать открыть файл в любом редакторе, при попытке его сохранить мы получим отказ:


Для того, чтобы снова разрешить изменение файла нужно снять поставленный атрибут:

Таким образом можно защитить не только файл, но и целый каталог вместе со всеми вложенными в него файлами:
$ mkdir ./test
$ touch ./test/file.ext
$ sudo chattr +i ./test/
$ sudo rm ./test/file.ext
rm: невозможно удалить './test/file.ext': Операция не позволена

Если необходимо проверить, установлен ли на файле либо каталоге атрибут, то можно воспользоваться командой:

Читайте также: