Как далеко вы можете пойти с rm -rf / от имени root

23

Если вы root, и вы выдаете

rm -rf / 

Тогда как далеко может зайти команда? Можете ли вы восстановить данные такого рода действий? Будут ли активны запущенные процессы даже после того, как двоичные файлы исчезнут? Что потребуется, чтобы снова загрузить ту же физическую машину? Какие файлы вам нужно восстановить, чтобы это произошло?

Я мог бы попробовать это на ВМ и посмотреть, но я хочу знать обоснование того, что ожидать, если я сделаю это.

Судипта Чаттерджи
источник
3
Дубликат: superuser.com/questions/312769/…
Стефан Гименес
1
@Ste Правда, но пока он не копируется / вставляется, мы обычно позволяем ему уйти, поскольку у нас есть некоторые совпадения с другими сайтами
Майкл Мрозек

Ответы:

21

Эта команда ничего не делает, по крайней мере в ОС, которую я использую (Solaris), с которой эта функция безопасности была впервые реализована:

# rm -rf /
rm of / is not allowed

В других * nix, особенно в семействе Linux, если имеется достаточно недавний Gnu rm, вам нужно добавить --no-preserve-rootопцию, чтобы позволить команде завершиться (или, по крайней мере, запустить).

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

jlliagre
источник
5
Сначала не верила тебе, но это так . Трудно поверить, что до 2005 года (Sun / BSD) и 2006 (GNU) потребовалось остановить эту ужасную ошибку.
амфетахин
3
Вы все еще можете использовать rm -rf /*для удаления НИЧЕГО
Феликс Ян
1
Действительно, но в этом случае rm ничего не может (легко) сделать, поскольку расширение файла уже выполнено оболочкой до вызова rm.
Jlliagre
4

Даже с превосходным ответом jlliagre, помните, что это все еще довольно опасная вещь, чтобы сделать. Всегда проверяйте, где вы находитесь, прежде чем делать такие вещи, как rm -rf. rm -rf *Например, было бы катастрофически, если бы вы делали это, находясь в каталоге / usr.

Что касается остальных ваших вопросов, то, что вы можете восстановить, в значительной степени зависит от ваших процедур резервного копирования. В большинстве систем * nix нет простого способа восстановить файлы и каталоги после их удаления. В отличие от старых дней DOS, когда файлы часто оставались на диске после удаления, большинство систем в наши дни делают вещи, которые очень затрудняют восстановление. Это одна из причин того, что услуги по восстановлению данных стоят так дорого.

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

Старожил
источник
2

Как говорили некоторые люди, вы все равно можете использовать, sudo rm -rf /*чтобы удалить что-нибудь. Без звездочки тоже работает на OS X. Кто-то снял материал об уничтожении OS X Yosemite таким образом, и я уверен, что ОС на базе Linux будут испытывать то же самое.

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

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

TheBro21
источник
1
Если это может дать некоторое утешение, sudo rm -rf /*не удалите скрытые файлы и каталоги в /. Также не удастся удалить файлы, замаскированные другой точкой монтирования, файлы в файловых системах только для чтения или псевдофайловых системах, неизменяемые файлы или точки монтирования.
Стефан Шазелас
@ StéphaneChazelas Это было показано в кадрах тоже. Были ошибки с доступной только для чтения файловой системой. Несмотря на не удаление всего, этого было достаточно, чтобы заморозить и уничтожить загрузчик (системы, а не EFI)
TheBro21
2

Я только что попробовал с Ubuntu 16 и рабочей станцией vmware, и с опцией no-preserve-root он стер весь диск моей работающей системы Linux. после этого все приложение рабочей станции vmware стало нестабильно нестабильным, и даже отключить или сбросить виртуальную машину из приложения было невозможно. В убийстве vmx было отказано, только после этого работала перезагрузка хоста!

угроза
источник
Ницца! :) Это то, что я надеялся услышать от кого-то.
Судипта Чаттерджи
1

Нельзя просто уничтожить его / ее систему, выдавая права rm -rf /root. Первоначально команда будет выполнена в режиме повышенной безопасности, что ограничит использование rmon, /но даже --no-preserve-rootв качестве аргумента работающая система не разрешит удаление запущенных процессов с диска; тем не менее, остальные программы и файлы будут удалены, в результате чего система останется непригодной для использования (почти) без запуска программ! Пожалуйста, проверьте скриншоты, см. Здесь, команда была выпущена в Arch Linux в Virtual Box: http://bit.ly/q9CsA4

Абхисек Де
источник
Можете ли вы загрузить фотографии куда-нибудь? Загрузка tar, распаковка и просмотр всех файлов - это не то, что большинство людей собираются делать. Ох, и сокращения URL не разрешены на SE, всегда используйте реальную ссылку
TheLQ
3
Вы писали: «запущенная система не позволит удалить запущенные процессы с диска». Что касается * nix, это неверно. Это ограничение существует в Windows, но вы можете удалять (отсоединять) файлы в Unix / Linux, даже когда они выполняются.
Jlliagre
2
«... работающая система не позволит удалить запущенные процессы с диска ...» Боюсь, это не так - файлы, которые нельзя удалить в вашем примере, на самом деле не являются «файлами» вообще - они предоставляют доступ к блочным устройствам, модулям ядра и другим системным компонентам. Выполнение операции удаления для них не имеет смысла и не может быть сделано даже так root.
Натан Осман
Вот фотографии Абхисека, опубликованные в онлайн- галерее : min.us/mSQcqHGQA min.us/moyPvnYOw (по заказу TheLQ)
Артем Пеленицын