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

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

86 голосов | спросил user256033 2 TueEurope/Moscow2014-12-02T19:02:00+03:00Europe/Moscow12bEurope/MoscowTue, 02 Dec 2014 19:02:00 +0300 2014, 19:02:00

9 ответов


127

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

Команда:

chattr +i filename

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

chattr -i filename

Из man chattr :

  

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

ответил Itai Ganot 2 TueEurope/Moscow2014-12-02T19:04:02+03:00Europe/Moscow12bEurope/MoscowTue, 02 Dec 2014 19:04:02 +0300 2014, 19:04:02
80

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

ответил Thorbjørn Ravn Andersen 3 WedEurope/Moscow2014-12-03T18:18:35+03:00Europe/Moscow12bEurope/MoscowWed, 03 Dec 2014 18:18:35 +0300 2014, 18:18:35
28
  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
ответил Ken A 3 WedEurope/Moscow2014-12-03T23:33:40+03:00Europe/Moscow12bEurope/MoscowWed, 03 Dec 2014 23:33:40 +0300 2014, 23:33:40
6

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

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

ответил andrew 3 WedEurope/Moscow2014-12-03T08:15:38+03:00Europe/Moscow12bEurope/MoscowWed, 03 Dec 2014 08:15:38 +0300 2014, 08:15:38
6

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

%  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. Конечно, это можно сделать и с каталогом.

ответил poige 7 SunEurope/Moscow2014-12-07T02:40:00+03:00Europe/Moscow12bEurope/MoscowSun, 07 Dec 2014 02:40:00 +0300 2014, 02:40:00
5

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

ответил Kevin 3 WedEurope/Moscow2014-12-03T10:02:07+03:00Europe/Moscow12bEurope/MoscowWed, 03 Dec 2014 10:02:07 +0300 2014, 10:02:07
3

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

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

btrfs

Это нужно делать при каждой загрузке, например, через mount --bind file file mount -o remount,bind,ro file .

ответил sch 8 MonEurope/Moscow2014-12-08T19:32:42+03:00Europe/Moscow12bEurope/MoscowMon, 08 Dec 2014 19:32:42 +0300 2014, 19:32:42
2

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

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

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

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

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

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

ответил Craig 7 SunEurope/Moscow2014-12-07T02:03:19+03:00Europe/Moscow12bEurope/MoscowSun, 07 Dec 2014 02:03:19 +0300 2014, 02:03:19
2

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

  

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

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

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

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

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

Обратите внимание, что это может быть исключено, так что все связанные с монтированием точки могут быть:

  • Сделайте копию защищенного каталога
  • Отключить каталог
  • Переместите копию вместо монтирования или коснитесь ее, если у этого монтирования недостаточно места.
ответил Joe H. 7 SunEurope/Moscow2014-12-07T16:04:24+03:00Europe/Moscow12bEurope/MoscowSun, 07 Dec 2014 16:04:24 +0300 2014, 16:04:24

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132