Як далеко ви можете піти з rm -rf / як root


23

Якщо ви root, і ви видаєте

rm -rf / 

Тоді як далеко може пройти команда? Чи можете ви відновити дані з подібних дій? Навіть після відсутності бінарних файлів, чи будуть запущені процеси все-таки активними? Що знадобиться, щоб знову зробити той самий фізичний автомат? Які файли потрібно відновити, щоб це сталося?

Я міг би спробувати це на VM і побачити, але я хочу знати обґрунтування того, що чекати, якщо я це зроблю.



1
@Ste Щоправда, але поки це не копіювання / вклеєння, ми зазвичай відпускаємо це, оскільки у нас є деякі дублювання з іншими сайтами
Michael Mrozek

Відповіді:


21

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

# rm -rf /
rm of / is not allowed

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

Наскільки далеко не піде ця команда, не визначено. Це залежить від безлічі більш-менш непередбачуваних подій. Як правило, процеси можуть запускатися навіть після видалення файлів файлів.


5
Спочатку вам не вірили, але є . Важко повірити, що до 2005 (Sun / BSD) та 2006 (GNU) було потрібно, щоб зупинити цю жахливу помилку.
амфетамахін

3
Ви все ще можете скористатись, rm -rf /*щоб видалити БЕЗЩЕ
Фелікс Ян

1
Дійсно, але в цьому випадку нічого не можна (легко) зробити, оскільки розширення файлу вже робиться оболонкою до виклику rm.
jlliagre

4

Навіть маючи відмінну відповідь jlliagre, пам’ятайте, що це все ще досить небезпечно. Завжди перевірте, де ви знаходитесь, перш ніж робити подібні речі rm -rf. Це було б катастрофічно, якби ви, наприклад, працювали rm -rf *в каталозі / usr.

Щодо решти запитань, те, що ви можете відновити, значно залежить від ваших процедур резервного копіювання. У більшості систем * nix не існує простого способу відновлення файлів і каталогів після їх видалення. На відміну від старих днів DOS, коли файли часто все ще знаходилися на диску після того, як було видалено, більшість систем в наші дні роблять речі, які роблять відновлення дуже важким. Це одна з причин того, що послуги відновлення даних такі дорогі.

Якщо ви використовуєте відеомережу, рекомендую час від часу робити знімки як мінімум. Але ніщо не може перемогти за гарним планом резервного копіювання.


2

Як казали деякі люди, ви все одно можете скористатися, sudo rm -rf /*щоб видалити що-небудь. Без зірочки працює і на OS X. Хтось зробив такі кадри про знищення OS X Yosemite, як це, і я впевнений, що ОС на базі Linux переживе майже те саме.

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

Спроба перезавантажити спричиняє однокористувацький режим, наприклад, завантажувальний екран з помилками.


1
Якщо це може дати певну розраду, sudo rm -rf /*не видалять приховані файли та каталоги в /. Також не вдасться видалити файли, замасковані іншою точкою монтажу, файли з файлових систем, доступних лише для читання, або псевдофайлові системи, незмінні файли або точки монтажу.
Стефан Шазелас

@ StéphaneChazelas Це також відображалось на кадрі. Були помилки з файловою системою для читання. Незважаючи на те, що не видалили все, досить було заморозити та знищити завантаження (системи, а не EFI)
TheBro21

2

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


Приємно! :) Це я сподівався почути від когось.
Sudipta Chatterjee

1

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


Чи можете ви десь завантажити фотографії? Завантаження тарінгу, розв’язування та перегляд усіх файлів - це не те, що збираються робити більшість людей. О, і скорочувачі URL-адрес заборонені в SE, завжди використовуйте реальне посилання
TheLQ

3
Ви писали: "Запущена система не дозволить видаляти запущені процеси з диска". Що стосується * nix, це неправильно. Це обмеження існує в Windows, але ви можете видалити (від’єднати) файли в Unix / Linux навіть під час їх виконання.
jlliagre

2
"... запущена система не дозволить видаляти запущені процеси з диска ..." Це, боюся, не вірно - файли, які неможливо видалити у вашому прикладі, насправді не "фактичні" файли. - вони забезпечують доступ до блокових пристроїв, модулів ядра та інших внутрішніх систем. Виконувати операцію з видалення на них немає сенсу і не може бути виконана навіть як root.
Натан Осман

Ось фотографії Абхісека, якими поділився в онлайн- галереї : min.us/mSQcqHGQA min.us/moyPvnYOw (на запит TheLQ)
Артем Пеленицин
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.