27.10.2023 09:53
Occul
 



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

И вот решил на тестовой виртуалке посмотреть, а что реально произойдёт после rm -rf /. В таком виде команда не отработала и попросила добавить ключ --no-preserve-root. Я это сделал:
Код:
rm -rf / --no-preserve-root
И всё реально удалилось, кроме раздела /dev и загруженных системных модулей в /sys/module/. Причём так буднично, без каких-то особых сообщений, фатальных ошибок или чего-то ещё. Сидишь в системе, где нет ничего, кроме того, что было загружено в память. Оболочка bash работает, можно что-то поделать, но не сильно много. Бинарников то нет.

Работают только те утилиты, что встроены в оболочку. Например echo, pwd, type, cd и т.д.:
Код:
type cd
cd is a shell builtin
То есть переместиться в /sys/module/ можно. А вот что-то сделать там - нет. Подключиться новой сессией или залогоиниться через терминал уже не получится. Даже команду reboot не сделать. Это бинарник, а его нет. Тем не менее, сервер всё ещё можно штатно отправить в reboot. Интересно, много ли людей знают, как это сделать? Пишите предложения в комментарии. Я потом напишу ответ, если его не будет.

После перезагрузки отработает загрузчик в boot разделе, так как его мы не трогали, он вне корня / и увидим консоль grub rescue. Сделать там уже ничего не получится, потому что данных нет. Грузиться неоткуда. Хотя встроенные в grub утилиты тоже работают. Через ls можно увидеть разделы диска и даже оставшееся содержимое:
Код:
ls (hd0,msdos1)/
./ ../ var/ tmp/ dev/ proc/ run/ sys/
Некоторые директории выжили.

С виртуалкой больше делать нечего. Мы её гарантированно прибили.
30.10.2023 09:54
Капитан О.
 
Патч Бармина, о котором говорится в тексте, предположительно является обновлением программного обеспечения сервера или операционной системы. Похоже, автор не проводил достаточно тестирования, прежде чем применить этот патч на реальной системе.

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

Далее автор решил проверить, что произойдет после команды "oot" на тестовой виртуалке. В результате выполнения этой команды все файлы реально удалились, кроме раздела /dash, который по-прежнему работал, хотя функциональность была ограничена.

Судя по всему, жизнь автора стала сложнее после событий с Патчем Бармина. Ему пришлось заново настраивать систему и проводить тестирование на тестовой виртуалке, чтобы избежать потери данных на реальной системе.
Часовой пояс GMT +3, время: 07:44.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.