LINUX.ORG.RU
ФорумAdmin

защита от rm -rf * и других подобных


1

1

Вы не поверите, только что набрал в консоли ls /some/some/some и думая, что я в /some/some/some сделал rm -rf *, а на самом-то деле я был в ~. т.е

┌─[user@mybox]─[~]
└──╼ rm -rf *

Ситуация конечно приятная до ужаса. Быстро перемонтировал в ro, прошелся extundelete и хз что оно там восстановила. Бекап конечно есть всего и вся, но месячной давности. Короче все проекты вытяну с битбакета, а конфиги которые побились - буду вытягивать и подсовывать в случае того, что конкретно будет отваливаться.

Итак, есть трабла - rm -rf *. Как от неё обезопаситься в дальнейшем и от каких еще подобных нужно обезопаситься ?

★★★★

Последнее исправление: bryak (всего исправлений: 1)

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

wakuwaku ★★★★
()

Итак, есть трабла - rm -rf *.

Это не трабла.

Как от неё обезопаситься в дальнейшем

Смотреть, в каком ты каталоге находишься.

Valkeru ★★★★
()
Ответ на: комментарий от wakuwaku

забудем о том, что куда лучше и безопасней вводить хотя бы часть пути перед * (и я всегда делаю так, это на уровне привычки) * только при удалении по маске

wakuwaku ★★★★
()
Последнее исправление: wakuwaku (всего исправлений: 1)

alias rm='rm -I' даст чуть больше времени на раздумья, но полной гарантии, естественно, не обеспечит, так что надо просто быть внимательнее.

INFOMAN ★★★★★
()

а как бы так сделать, чтобы скажем rm -rf * нельзя было набирать в /home/user /home/user/media

а в остальных можно. Вообще это реально ?

bryak ★★★★
() автор топика

У меня zsh и oh-my-zsh:

$ rm -rf *
zsh: sure you want to delete all the files in /tmp/t [yn]?

Black_Roland ★★★★
()

Как от неё обезопаситься в дальнейшем и от каких еще подобных нужно обезопаситься ?

Быть более осторожным и внимательным.

Если лень, то регулярнее делать бэкапы.

sT331h0rs3 ★★★★★
()
Ответ на: комментарий от bryak

Короче, цель какая ? Нужно сделать скрипт, который при запуске проверить в какой он папке, обойдет все пути типа /home/user/ /home/user/media ... ...

и если rm -rf * запускается не в этих папках, то позволить это выполнить, иначе не выполнять.

Кто возьмётся написать скрипт ? А потом его в алиас всунуть чтоли

bryak ★★★★
() автор топика

Как от неё обезопаситься

Думаю, «chmod a-r /спасаемый/каталог» решает проблему с нецелевым использованием *.

DonkeyHot ★★★★★
()
Ответ на: комментарий от Valkeru

Вообще странно, что никто этого еще не написал. 1) делаем в .bashrc --> alias rm='/path/to/newrm.sh' 2)в newrm.sh делаем логику: a) определяем пути, в которых не может запускаться rm -rf * b) при запуске rm -rf * чекаем пути и если мы стоим в одном из запрещенных путей - ничего не делать. Иначе команда работает.

По крайней мере эта фигня нас защитит от запуска в ~, ~/torrents, ~/media ~/.config ну и чего мы еще там хотим.

Кто напишет скриптег ?

bryak ★★★★
() автор топика
Ответ на: комментарий от bryak

Вообще странно, что никто этого еще не написал

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

Кто напишет скриптег ?

Ты

Valkeru ★★★★
()
Последнее исправление: Valkeru (всего исправлений: 1)
Ответ на: комментарий от bryak

$30, пиши в личку. Так дёшево только потому что там работы меньше, чем на минуту. Могу добавить вывод предупреждения каким-нибудь интересным цветом за дополнительные $20.

wakuwaku ★★★★
()

Итак, есть трабла - rm -rf *. Как от неё обезопаситься в дальнейшем и от каких еще подобных нужно обезопаситься ?

Не использовать rm -rf никогда и ни при каких условиях.

Minoru ★★★
()
Ответ на: комментарий от bryak

reinar➜~/tmp/r2» rm -Rf *
zsh: sure you want to delete all the files in /home/reinar/tmp/r2 [yn]?


тебе уже написали - zsh это всё умеет.

Reinar
()

А в чём смысл команды ″rm -rf *″? Почему нужно удалять не все файлы из каталога, а только те, имя которых начинается не с точки? Только не напишите ненароком ″.*″, а то ещё этот скрипт придётся модифицировать :-)

Лучше уж использовать ″find -delete″.

mky ★★★★★
()
Ответ на: комментарий от bryak

Обращайся в Job, тут никто такой ерундой заниматься не будет

Deleted
()
Ответ на: комментарий от sT331h0rs3

да это дело времени. Рано или поздно это прочувствует каждый:)

bryak ★★★★
() автор топика

* в опасных командах лучше раскрывать шеллом (C-x * в баше), -r в конце - даст пару десятых секунды глазам заметить, что пальцы автоматом набрали.

anonymous
()

элементарно
создай функцию rm (или скрипт rm ), который проверяет, если аргумент='*'; then показать имя_каталога и спросить разрешения

teod0r ★★★★★
()

alias rm='rm -i'

anonymous
()

Итак, есть трабла - rm -rf *. Как от неё обезопаситься в дальнейшем и от каких еще подобных нужно обезопаситься ?

Используй Btrfs, конечно же.

awesomenickname ★★★★★
()
Ответ на: комментарий от anonymous

а на самом-то деле я был в ~

А на самом деле во первых про ~ не было ни слова а во вторых никто не мешает прямо в initramfs либо в ro squashed держать еще и ~.

init_6 ★★★★★
()

Итак, есть трабла - rm -rf *. Как от неё обезопаситься в дальнейшем и от каких еще подобных нужно обезопаситься ?

Не работай под рутом!

morse ★★★★★
()

бекапы делать не вариант?

MyTrooName ★★★★★
()
Ответ на: комментарий от init_6

во первых про ~ не было ни слова

Нужно читать все абзацы первого сообщения.

У ТС трабла не с командой ″rm -rf *″, а с тем, в каком каталоге он её запускает. И все скрипты, задающие вопросы мало помогут, через несколько лет постоянных ответов «ДА», можешь машинально ответить «ДА» не посмотрев, в каком каталоге будет выполняться команда.

Держать хомяк в ro это сильно.

mky ★★★★★
()
Ответ на: комментарий от morse

Ещё один, читающий только последний абзац? Для обычного пользователя персонального компьютера гораздо важнее его файлы/проекты, его настройки рабочего окружения, чем вся остальная система, которая ставится/настраивается достаточно быстро.

mky ★★★★★
()

Не вариант ли написать свою тулзу взамен иил поверх rm

dartvedroid
()
Ответ на: комментарий от mky

А, да, ты прав. Я просто сначала не заметил

а на самом-то деле я был в ~

Мне показалось что он «на самом-то деле» был в /

Тогда да, надо придумать обертку над rm которая будет проверять некоторые, определенно ошибочные варианты.

morse ★★★★★
()
Ответ на: комментарий от comp00

ты должен думать о каждом своем действии

Не хочу думать, хочу удалять!

anonymous
()
Ответ на: комментарий от init_6

так посмотреть, кое-кто и моск держит в ro squashed

anonymous
()

Не пользуйтесь MC дальше. В нём такую ошибку в принципе не сделаешь, ибо всё визуально.

Упорные любители шелла.

thespiritofbirdie
()

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

aedeph_ ★★
()
Последнее исправление: aedeph_ (всего исправлений: 1)

Итак, есть трабла - rm -rf *. Как от неё обезопаситься в дальнейшем и от каких еще подобных нужно обезопаситься ?

newbie users must not to work in terminal mode. Use microsoft professional mouse mode, Luke.

darkenshvein ★★★★★
()

Держи home directory на nilfs, там автоматом создаются чекпоинты (снапшоты)

sdio ★★★★★
()
Последнее исправление: sdio (всего исправлений: 1)
Ответ на: комментарий от anonymous

А чем плох mc?конечно автор тупит. но всё же, очень много ошибок из-за голого шелла у молодых админов, потому что нет предупреждения перед действием.

erzent ☆☆
()
Ответ на: комментарий от mky

У ТС трабла не с командой ″rm -rf *″, а с тем, в каком каталоге он её запускает. И все скрипты, задающие вопросы мало помогут, через несколько лет постоянных ответов «ДА», можешь машинально ответить «ДА» не посмотрев, в каком каталоге будет выполняться команда.

Почему с этим идут не к врачу, а на лор? У тебя просто проблемы с вниманием и концентрацией.

vurdalak ★★★★★
()
Ответ на: комментарий от anonymous

От тебя ни одного полезного сообщения в тех. разделах.

в моих постах в техразделах тоже 98% ответов бесполезные.

помогите, у меня проблемы с постгресс

зачем тебе постгресс, ставь мускуль!

помогите, у меня проблемы с audacious

это говно, говядина рулит

у меня проблемы с арчем

надо было ставить генту!


Ну и подобное в таком же стиле. Почему бы тебе не последить за этими людьми, моралофаг?

darkenshvein ★★★★★
()
Ответ на: комментарий от erzent

интерактив моуд можно настроить принудительно, если опасаешься, что-либо снести

darkenshvein ★★★★★
()
Ответ на: комментарий от vurdalak

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

erzent ☆☆
()
Последнее исправление: erzent (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.