Назад | Перейти на главную страницу

Linux - есть ли способ предотвратить / защитить файл от удаления даже root?

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

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

Команда такая:

chattr +i filename

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

chattr -i filename

Из man chattr:

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

Запишите его на компакт-диск. Вставьте компакт-диск в дисковод для компакт-дисков и откройте его оттуда.

  1. Создайте образ файловой системы.
  2. Смонтируйте образ.
  3. Скопируйте файл в смонтированный образ.
  4. Отключите образ и снова подключите его как доступный только для чтения.
  5. Теперь его нельзя удалить.

Пример:

# dd if=/dev/zero of=readonly.img bs=1024 count=1024
# mkfs.ext2 readonly.img
# mkdir readonlyfolder
# mount readonly.img readonlyfolder/
# echo "can't delete this" > readonlyfolder/permanent.txt
# umount readonlyfolder
# mount -o ro readonly.img readonlyfolder
# cat readonlyfolder/permanent.txt 
can't delete this
# rm readonlyfolder/permanent.txt 
rm: cannot remove `readonlyfolder/permanent.txt': Read-only file system

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

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

В Linux есть так называемые крепление опция, которая является довольно мощной и полезной функцией знать:

%  cd $TMP && mkdir usebindmountluke && cd usebindmountluke
%  echo usebindmountluke > preciousfile
%  sudo mount -B preciousfile preciousfile
%  sudo mount -oremount,ro preciousfile
%  echo sowhat > preciousfile
zsh: read-only file system: preciousfile
%  rm preciousfile
rm: cannot remove ‘preciousfile’: Read-only file system

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

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

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

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

mount --bind file file
mount -o remount,bind,ro file

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

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

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

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

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

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

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

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

  • Сделайте копию защищенного каталога
  • Размонтировать каталог
  • Переместите копию на место монтирования или создайте символическую ссылку, если на этом монтировании недостаточно места.

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

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

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

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

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

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