Защита папки от случайного удаления с помощью `rm`

У меня есть некоторая папка ~/foo, которую я хотел бы защитить от случайного удаления, то есть я хотел бы защитить ее от удаления с помощью rm -r ~/foo или rmdir ~/foo.

Я понял, что это можно сделать с помощью chmod a-w ~/foo или chattr -i ~/foo, но это имеет тот недостаток, что вы не можете ничего изменить внутри этой папки. Однако я бы хотел иметь возможность создавать/перемещать/удалять файлы и папки внутри ~/foo.

Возможно ли это как-то сделать?

3
задан 28 May 2021 в 13:02

2 ответа

Создайте скрытый файл внутри папки и выполните ( .foo в качестве примера) как «root»:

touch ~/foo/.foo
chattr +i ~/foo/.foo

Теперь вы можете удалить все файлы, кроме .foo в этом каталог, и каталог не может быть удален другим пользователем. Тем не менее, вы все равно можете переместить каталог, и вы можете остановить это с помощью липкого бита ...

sudo chmod +t ~/foo

И это должно решить вашу проблему. НО я согласен: создание резервной копии всегда лучший вариант. Несколько более сложный вариант: поместить наблюдателя за каталогами в ~ / foo и создать резервную копию с меткой времени для каждого файла, к которому он обращается, и до того, как он будет изменен в каталоге, недоступном для пользователей, было бы более безопасным методом.

8
ответ дан 28 July 2021 в 11:34

Я бы посоветовал добавить следующие "safetynets" в ваш .bashrc (или файл конфигурации для другой оболочки), чтобы предотвратить наиболее очевидные ошибки.

Запрашивать подтверждение перед рекурсивным удалением 3 или более файлов или любого каталога. Также предотвращает рекурсивное удаление / : (параметр -I менее навязчив, чем -i , который запрашивает каждый файл, но все же предотвращает большинство ошибок одним запросом подтверждения)

alias rm='rm -I --preserve-root'

Запретить рекурсивное изменение разрешений и прав собственности на / : (не ваш вопрос, но все же хорошая функция безопасности для включения)

alias chmod='chmod --preserve-root'
alias chown='chown --preserve-root'
alias chgrp='chgrp --preserve-root'
5
ответ дан 28 July 2021 в 11:34

Другие вопросы по тегам:

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