5

Так...Я сделал что-то плохое. В Cygwin я написал скрипт bash, который взял две директории и скопировал содержимое одной в другую. Во-первых, он вызвал «rm -rf», чтобы удалить содержимое второго каталога. Я случайно запустил скрипт без второго аргумента, и похоже, что Cygwin воспринял это как страшный «rm -rf /».

Я не уверен, что ущерб, и я пытаюсь оценить это. Когда он работал до того, как я его остановил, я увидел много сообщений об отказе в разрешении.

Наиболее заметным повреждением было то, что моя папка C:\cygwin64 была засорена. Все, что осталось в нем - это несколько пустых каталогов. Я полагаю, что, возможно, были некоторые каталоги, которые были в алфавитном порядке выше cygwin64, которые были удалены, потому что я не помню, чтобы это был самый высокий каталог в списке, каким он сейчас является.

Мой компьютер работает на 100% нормально, и я не испытал ничего странного. Я просто хочу знать, есть ли у кого-нибудь опыт работы с «rm -rf /» на Cygwin и может ли это засорить весь ваш диск, как это было бы в Linux.

Часть загадки в том, что корень Cygwin находится под c-drive, но он содержит ссылку на c-drive в "cygdrive". Мне интересно, будет ли "rm -rf /" на самом деле пройти весь путь с удалением всего содержимого "/cygdrive" или это как-то защищено.

РЕДАКТИРОВАТЬ: С другой стороны, кто-нибудь знает, почему "rm -rf" будет таким же, как "rm -rf /". Я отчетливо помню, как не указывал путь и оставлял этот параметр пустым, поэтому не знаю, почему он вызвал rm в корневом каталоге.

1 ответ1

9

РЕДАКТИРОВАТЬ: Команда выполнена, а затем я перезагрузил ВМ, поэтому я добавил больше фотографий. Также изменил мой ответ, чтобы включить тот факт, что машина не была полностью забита.

РЕДАКТИРОВАТЬ 2: У меня все еще есть VM. Дайте мне знать в комментариях, если у вас есть что-то, что вы хотите, чтобы я попробовал на нем из любопытства.

РЕДАКТИРОВАТЬ 3: Я решил поэкспериментировать немного больше. Я восстановил снимок, который сделал прямо перед запуском команды, я поместил одну папку выше C:\cygwin и одну папку ниже. Затем я запустил команду и очень быстро ctrl-c . Папка cygwin все еще существовала (внутри она была в основном пуста), но папка над ней была стерта. Сгенерированная пользователем папка под ней также не пострадала. Затем я восстановил состояние и снова выполнил команду, на этот раз немного дольше, чем ctrl-c . Теперь он удалил как папку выше cygwin, сам cygwin, так и папку ниже.

Когда я запускал это на своем компьютере в реальной жизни, папка C:\cygwin64 была целой, что означало , что все, что находится под ней в алфавитном порядке, было безопасно. Это дает мне некоторое спокойствие, теперь я точно знаю, что единственными папками, которые были выброшены, были папки выше C:\cygwin64 , которые в любом случае обычно являются просто временными папками или некоторыми другими несущественными папками.

TLDR: не запускайте rm -rf /* или rm -rf / EVER.

TLDR2: я создал виртуальную машину Windows 10, установил Cygwin и запустил rm -rf /* .ВМ испортилась. Чтобы ответить на мой собственный вопрос: Да, он удалил бы все, что он имеет разрешение на доступ к вашему жесткому диску. Если бы я не отменил команду так быстро, как когда это происходило на моей реальной машине, она удалила бы все мои личные файлы. Общая ОС все равно не пострадает.

Итак, я решил создать виртуальную машину Windows 10 и попробовать это с нуля. Вот что случилось. Cygwin не позволяет вам выполнить rm -rf / по соображениям безопасности (есть опция переопределения)... но rm -rf /* , очевидно, отлично работает без предупреждения.

Я понял, что в моем исходном скрипте я удалял все файлы в указанном каталоге, поэтому я использовал rm -rf $1/* , поэтому, если $1 пусто ... выполняется команда уничтожить ваш жесткий диск, и Cygwin даже не предупреждает вас!

О, чтобы поразить вход ...

cygwin64 первым забил

Ссылка Windows Explorer пропала

Меню Пуск все еще здесь

Там идет изображение рабочего стола!

Центр уведомлений все еще в порядке

Кортана тоже!

Корзина для мусора повреждена, но теперь я могу получить доступ к Windows Explorer!

C: Drive Contents, здесь мало что изменилось

Общий интерфейс все еще работает нормально

Меню Пуск больше не отвечает

Музыка живет! Это единственная библиотека, которая осталась стоять

Команда выполнена!

Не так много нового здесь, в C:

Приложения по-прежнему работают, если они запускаются из исполняемого файла, данные приложений остаются нетронутыми

Я перезагрузил машину. Нет проблем при загрузке и входе. Программы по-прежнему работают, если вы нажмете на их исполняемый файл. Все еще есть доступ в интернет. Трудно оценить постоянный ущерб. Старт все еще не открывается.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .