У меня есть очень важный файл, который использует приложение на моем рабочем месте, мне нужно убедиться, что он не удаляется, как я могу это сделать?
Да, вы можете изменить атрибуты файла только для чтения.
Команда такая:
chattr +i filename
И чтобы отключить его:
chattr -i filename
Из man chattr
:
Файл с
i
Атрибут не может быть изменен: его нельзя удалить или переименовать, нельзя создать ссылку на этот файл и в файл нельзя записать данные. Только суперпользователь или процесс, обладающийCAP_LINUX_IMMUTABLE
Возможность может установить или сбросить этот атрибут.
Запишите его на компакт-диск. Вставьте компакт-диск в дисковод для компакт-дисков и откройте его оттуда.
Пример:
# 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-образа удовлетворяет требованиям.