У меня есть очень важный файл, который приложение использует на своем рабочем месте, и мне нужно убедиться, что оно вообще не удаляется, как я могу это сделать?
У меня есть очень важный файл, который приложение использует на своем рабочем месте, и мне нужно убедиться, что оно вообще не удаляется, как я могу это сделать?
Ответы:
Да, вы можете изменить атрибуты файла только для чтения.
Команда:
chattr +i filename
И чтобы отключить это:
chattr -i filename
От man chattr
:
Файл с
i
атрибутом не может быть изменен: его нельзя удалить или переименовать, нельзя создать ссылку на этот файл и данные не могут быть записаны в файл. Только суперпользователь или процесс, обладающийCAP_LINUX_IMMUTABLE
возможностью, может установить или очистить этот атрибут.
chflags schg
Запишите это на CD. Вставьте компакт-диск в привод CD-ROM и получите к нему доступ оттуда.
Пример:
# 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
mount -o remount,rw readonlyfolder/ && rm readonlyfolder/permanent.txt
squashfs
или cramfs
которые являются сжатыми и только для чтения. Для сборки файловой системы нужен специальный инструмент.
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. Конечно, это можно сделать и с каталогом.
Вы также должны создать несколько жестких ссылок на файл. Они должны находиться в разных местах, к которым обычные пользователи не могут получить доступ.
Таким образом, даже если им удастся переопределить защиту вашего chattr, данные останутся, и вы сможете легко восстановить их там, где их ищет ваше приложение.
Другие ответили на ваш вопрос, как вы его задали. Как отметил @Sven в комментарии, общее решение вопроса: «Как мне убедиться, что я никогда не потеряю файл?» это создать резервную копию файла. Сделайте копию файла и сохраните его в нескольких местах. Кроме того, если файл чрезвычайно важен и у вашей компании есть политика резервного копирования важных данных с помощью службы резервного копирования, вы можете проверить, включен ли этот файл в службу.
На Линуксе неизменен флаг поддерживается только на некоторых типах файловой системы (большинство из них , как родных ext4
, xfs
, btrfs
...)
В файловых системах, где это не поддерживается, другой вариант - привязать файл к себе в режиме только для чтения. Это должно быть сделано в два этапа:
mount --bind file file
mount -o remount,bind,ro file
Это должно быть сделано при каждой загрузке, например, через /etc/fstab
.
umount
снова получит файл с правами на запись
В комментарии к ответу Кевина Джерри упоминает:
Ну, конечно, файл регулярно копируется, я просто хотел еще один уровень защиты от пользователей, которые иногда работают на коробке с правами пользователя root. -
Я собираюсь предположить, что вы не можете изменить эту практику, так как это действительно очень плохая идея.
Все предложения по использованию устройства, доступного только для чтения, имеют одну и ту же проблему - это делает вас PITA для внесения законных изменений, когда это необходимо. В случае блокируемого диска, такого как SD-карта, вы сталкиваетесь с проблемой внезапной уязвимости, когда вы разблокируете ее, чтобы внести изменения.
Вместо этого я бы порекомендовал настроить другую машину в качестве сервера NFS и предоставить общий доступ к каталогу с важными файлами для машин, на которых пользователи имеют права root. Предоставьте общий доступ к монтированию только для чтения, чтобы машины с пользователями, которым вы не доверяете, не могли вносить никаких изменений. Когда вам нужно законно внести изменения, вы можете подключиться к серверу NFS и внести наши изменения там.
Мы используем это для наших веб-серверов, так что успешный эксплойт против веб-сервера не сможет вставлять или изменять какие-либо файлы, которые сервер затем будет возвращать обратно, или изменять конфигурацию.
Обратите внимание, что это может быть обойдено так же, как и все связанные с точкой монтирования:
Почему бы не создать образ ISO 9660, который предназначен только для чтения?
Смонтируйте ISO-образ, и он будет выглядеть как CD-ROM, но с производительностью жесткого диска, а файлы на смонтированном образе будут столь же безопасны для удаления, как и файлы на физическом CD-ROM.
Идея записи конфиденциального файла на компакт-диск и запуска его с компакт-диска интересна, если предположить, что установка неизменяемого бита в файле не считается достаточной.
Есть потенциальные негативные проблемы с запуском его с физического CD, в том числе с производительностью (приводы CD-ROM намного, намного медленнее, чем жесткие диски или твердотельные накопители). Существует вероятность того, что CD-ROM будет удален благонамеренным человеком и заменен другим диском, к которому им необходим доступ. Существует вероятность того, что злоумышленник просто вытащит диск и выбросит его в микроволновую печь (или корзину), тем самым «удалив» ваш файл. Есть неудобство необходимости иметь выделенный аппаратный привод CD-ROM только для этого одного файла, и другие факторы.
Но ОП ясно дал понять, что основной целью является защита от случайного удаления, а не от злонамеренных действий, и что рассматриваемый файл (ы) резервируется и может быть восстановлен в случае аварии, но крайне желательно, чтобы файл никогда не был быть случайно удаленным.
Кажется, что запуск файла из смонтированного ISO-образа удовлетворяет требованию.
shred
в этом пункте. Но если вы не отказываете в физическом доступе к машине, все равно кажется, что проще просто извлечь физический компакт-диск из привода и выбросить его в мусорную корзину, чем размонтировать и перезаписать файл ISO, хотя любой из них прост. И ОП заявляет, что резервное копирование важного файла осуществляется на регулярной основе, так что это всего лишь дополнительная мера против случайного повреждения, а не против злонамеренного вреда.
chattr +i
может помочь, но сделает файл доступным только для чтения (и может быть перезаписанchattr -i
), также вы можете попытаться защитить его с помощью SELInux и т. Д.