Я часто задавался вопросом, как далеко продвинется система, если ты побежишь rm -rf /
. Я сомневаюсь, что ОС сможет стереть себя (?)
Бонусный вопрос : после того, как команда была выполнена, rm
удалится сама?
Обновление: я протестировал это в нескольких основных дистрибутивах Unix с использованием VirtualBox, и ответы точно описывают, что происходит. Если заданы правильные параметры, rm удалит каждый физический бит данных на диске. Однако я столкнулся с некоторыми проблемами при использовании версии rm, отличной от GNU. Например, я считаю, что BusyBox имеет свою собственную версию, и она не позволяет вам удалить столько, сколько вы могли бы.
Этот вопрос был Супер Вопросом Пользователя Недели .
Прочитайте запись в блоге 7 июля 2011 года для получения более подробной информации или отправьте свой собственный Вопрос недели.
источник
sudo rm -rf /
на tinycore / microcore linux, и кажется, что ОС защищает несколько каталогов (/ sys и другие) от удаления.rm -f /bin/rm
один раз. К сожалению, это сработало, и я потратил следующий час, чтобы получить правильную версиюrm
обратно из GNU coreutils.Ответы:
Если вы используете
rm
GNU coreutils (скорее всего, это обычный дистрибутив Linux),rm -rf /
встроенная защита будет отклонена (согласно manpage и Wikipedia, не пробовали этого).Вы можете переопределить эту защиту с помощью
--no-preserve-root
.rm
затем удалит все, что возможно, без остановки после попытки удалить каждый отдельный файл. Конечно, он не удалит виртуальные файловые системы, такие как/proc
и/sys
, но это не имеет значения - он удалит все на вашем диске.После завершения команды ваш диск будет очищен, включая операционную систему. Ядро и текущие процессы будут продолжать работать из памяти, но многие процессы умрут, потому что им не удастся получить доступ к какому-либо файлу. ОС не загрузится в следующий раз.
источник
--no-preserve-root
потому, что это обычно не упоминается.Для тех, кто любит делать такие вещи визуально, слушая техно музыку.
Запуск rm-rf в Linux (видео)
Бонусные баллы, если вы можете назвать процессы, как они начинают умирать.
источник
Настроить ВМ и попробовать в свое удовольствие?
Это зайдет довольно далеко ... если вы используете графический интерфейс, вы можете весело провести время, заметив, что вещи ухудшаются более заметно. (значки в меню перестают загружаться и т. д.)
Если вы отпустите его, ОС практически не восстановится, хотя вы сможете легко вернуть некоторые данные.
В любом случае, вам захочется переустановить ОС.
источник
Что ж, попробуйте это на http://bellard.org/jslinux/ :
источник
Я вспоминаю, как это пережевывали
alt.sysadmin.recovery
в прошлые времена, когда не было такого понятия/proc
,/dev
как обычный каталог, содержащий записи для множества необычных inode-ов ...... но в некоторых вариантах Unix (я помню HP-UX, но это может быть совершенно неправильно), вы не могли удалить последнюю запись каталога для программы, которая работала. (Общие библиотеки? Что это?)
В таких системах, если вы запустили один в режиме обслуживания (так что ничего не
init
работало, но ваша оболочка, даже нет , и никакие вторичные файловые системы не были смонтированы) и работалиexec /bin/rm -rf /
, у вас осталась бы абсолютно пустая корневая файловая система, за исключением этого/bin
и/bin/rm
будет выжить.Жители монастыря страшных дьяволов считали это подходящим и уместным.
источник
rm -rf /
нельзя допускать в недавних реализациях, так как предполагалось, что это нарушает стандарт POSIX:"
rm -rf /
" защита в блоге Oracleисточник
/foo/..
даже если вы не в/foo
. Он не указывает, что вы не можете удалить текущий каталог (напримерrm -r `pwd`
) или родительский каталог текущего каталога.Одна вещь, которую я не видел, сделанная кем-то другим: файлы, которые в данный момент открыты (например, сам rm), даже если они будут удалены, на самом деле не исчезнут с диска, пока не будут закрыты.
источник
rm
будет удалить себя из фс - программа полностью загружена в память, а не файлЗа то, что попробовал один раз (на сервере, который меня бесит), вошел в систему как root, в терминале вы потеряете почти все. Единственное, что не будет стерто, будет только тот процесс, который был необходим для ОС.
источник
/boot
,/sbin
,/etc
,/bin
,/vmlinuz
? Бэм, ушел. Удачи в загрузке без них - на самом деле, удачи в том, чтобы делать что-либо вообще после завершения удаления.chmod -fR 777 /
вредно, потому что отключает биты setuid и setgid.Как далеко вы можете добраться, это в основном зависит от конкретных дистрибутивов Unix / Linux.
Но чтобы ответить на ваш базовый вопрос, да -
rm
команда будет удалена вместе с ней, как и любая другая стандартная команда в/bin
и других папках.Вот простой тест, который я выполнил в Linux Ubuntu 15.04 с использованием виртуальной машины.
Инициализируйте виртуальную машину через
vagrant
:Затем, когда вы пытаетесь удалить все файлы стандартным способом, он не позволяет вам:
Итак, давайте попробуем
--no-preserve-root
. Всегда дважды проверяйте, вошли ли вы в виртуальную машину (то естьvagrant@vagrant-ubuntu-vivid-64:~$
), а затем запускайте (не пытайтесь сделать это дома):После этого он возвращается к приглашению оболочки, как будто ничего не произошло, но вы не можете больше выполнять какие-либо команды, кроме нескольких встроенных и
kill
, так что вы можете закончить свою работу и завершить сеанс :)Например:
Так что довольно удалены все, в том числе
rm
,ls
и все другие команды, но все же вы вошли в. Существуют некоторые специальные папки, которые не были удалены, такие как некоторые устройства/dev
,/proc
или/sys
которые не являются обычными каталогами / файлами, но это псевдофайловая система, предоставляющая интерфейсы для обработки и данных ядра.Если у вас нет Vagrant или Linux, вы можете поиграть с некоторыми эмуляторами Linux x86 .
Если вас интересуют возможности восстановления после такой катастрофы, проверьте:
источник