У мене дуже важливий файл, який використовує програма на моєму робочому місці, мені потрібно переконатися, що він не видалений, як це зробити?
У мене дуже важливий файл, який використовує програма на моєму робочому місці, мені потрібно переконатися, що він не видалений, як це зробити?
Відповіді:
Так, ви можете змінити атрибути файлу лише для читання.
Команда така:
chattr +i filename
І відключити його:
chattr -i filename
Від man chattr
:
Файл з
i
атрибутом неможливо змінити: його неможливо видалити чи перейменувати, не може бути створено посилання на цей файл, і дані не можуть бути записані у файл. Лише суперпользователь або процес, що володієCAP_LINUX_IMMUTABLE
можливістю, може встановити або очистити цей атрибут.
chflags schg
Запишіть його на компакт-диск. Покладіть компакт-диск у привід 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-накопичувачі набагато, набагато повільніше, ніж жорсткі диски або SSD). Існує ймовірність того, що компакт-диск буде видалений добронамереною особою і замінений на інший диск, до якого вони потребують доступу. Існує ймовірність, щоб зловмисник просто вийняв диск і кинув його в мікрохвильову піч (або сміття), тим самим "видаливши" свій файл. Існує незручність мати спеціальний пристрій для компакт-дисків апаратного забезпечення саме для цього файлу та інших факторів.
Але ОП дала зрозуміти, що основний намір полягає в захисті від випадкового видалення, а не від зловмисних дій, і що файл (и), про які йде мова, резервне копіювання та відновлення у випадку аварії, але вкрай бажано, щоб файл ніколи не був бути випадково видаленим
Здається, що запуск файлу із змонтованого ISO-зображення задовольнив би цю вимогу.
shred
це. Але якщо ви не забороняєте фізичний доступ до машини, все одно здається, що простіше просто витягнути фізичний компакт-диск з накопичувача і закинути його у смітник, ніж демонтувати та перезаписати файл ISO, хоча це і просто. І ОП заявила, що важливий файл регулярно створюється резервне копіювання, тож це лише додатковий захід проти випадкових пошкоджень, а не проти зловмисних зловживань.
chattr +i
може допомогти, але зробить файл також лише для читання (і його можна замінитиchattr -i
), також ви можете спробувати захистити його за допомогою SELInux тощо.