В заметке "rm -rf remains (http://lambdaops.com/rm-rf-remains)" рассказано об эксперименте по изучению системы после выполнения "rm -rf /" под пользователем root (с флагом "--no-preserve-root" для снятия защиты от нечаянно добавленного пробела после корневой директории, реальность возникновения подобных ошибок подтверждена случаем (https://github.com/MrMEEE/bumblebee-Old-and-abbandoned/issue...) с появлением пробела в строке "rm -rf /usr /lib/nvidia-current/xorg/xorg" в скрипте установки bumblebee). После выполнения команды через ssh остаётся рабочий сеанс bash, который и используется для изучения остаточного состояния системы. Например, через использование встроенных команд bash и /dev/tcp/ удалось загрузить и запустить busybox.
Организуем отправку файлов внешнем хосте 192.168.1.1:<font color="#461b7e">
$ mkdir $(xxd -p -l 16 /dev/urandom)
$ cd $_
$ apt-get download busybox-static
$ dpkg -x *.deb .
$ alias encode='{ tr -d \\n | sed "s#\\(..\\)#\\\\x\\1#g"; echo; }'
$ alias upload='{ xxd -p | encode | nc -q0 -lp 5050; }'
$ upload < bin/busybox
</font>
На хосте с удалёнными данными:<font color="#461b7e">
# cd /
# alias decode='while read -ru9 line; do printf "$line"; done'
# alias download='( exec 9<>/dev/tcp/192.168.1.1/5050; decode )'
# download > busybox
</font>Для установки прав на запуск busybox собрана и загружена простейшая утилита setx c вызовом chmod(), которая активирована через bash-команду enable.
URL: http://lambdaops.com/rm-rf-remains
Новость: http://www.opennet.me/opennews/art.shtml?num=40006
>удалось загрузить и запуститьНу и что? Чем это поможет? В морг значит в морг.
>>удалось загрузить и запустить
> Ну и что? Чем это поможет? В морг значит в морг.Тем, что в ядре ещё не умерли остатки данных. Правда, на практике такое выручило скорее в случае промаха с dd, когда вдруг очень захотелось восстановить таблицу разделов...
Подобный фокус возможно провернуть без предварительной подготовки для проворачивания такого фокуса?
Впрочем вряд ли в ядро помнит всё содержимое файловой системы:)
> Впрочем вряд ли в ядро помнит всё содержимое файловой системы:)undelete
> undeleteВ рабочем виде есть только для доисторического ext2. Впрочем, пользователи btrfs могут сделать просто откат снапшота. А хотя-бы на последний автоснапшот.
extundelete, photorec
> extundelete,Повторяю: утилиты undelete работают только с допотопным EXT2, которым в XXI веке мало кто хочет пользоваться в силу тормознутости и отсутствия журнала.
> photorec
А это уже инструмент отчаяния. Когда мы отчаялись починить систему сколь-нибудь цивилизовано и выдираем жыпеги путем прямого сканирования диска. Проблема в том что часть жыпегов будет битой (из-за фрагментации) а размер будет с точностью до или блока ФС. Если мы не можем пользоваться услугами ФС для информации о фрагментах - придется сгрызть вот такой кактус. Только кактусы кушают лишь если вокруг пустыня и ничего более питательного как назло не оказалось.
> ПовторяюПовторяй сколько хочешь, не могу тебе запретить. К счастью мне это не мешает восстанавливать данные пользователей.
> А это уже инструмент отчаяния
После rm -rf всё инструменты отчаяния. Тем не менее рабочий инструмент. Даже на винтах и DVD с частично убитой метаинформацией, photorec выдергивает около 90% целых файлов.
> К счастью мне это не мешает восстанавливать данные пользователей.Да спору нет - лучше чем ничего.
> После rm -rf всё инструменты отчаяния.
Почему же? При наличии снапшота - просто взять и отмотать на снапшот. К вопросу о пользе таковых. А еще есть такая фигня - бэкапы называется. Говорят, полезная штука.
> Тем не менее рабочий инструмент. Даже на винтах и DVD
Никогда не видел DVD с EXT[2,3,4] в диком виде. Наверное теоретически и такое можно сделать, но я такого не встречал вообще совсем ни разу.
> с частично убитой метаинформацией,
Прямо так уж extundelete? С DVD?
> photorec выдергивает около 90% целых файлов.
На самом деле - как повезет. Но да, спору нет - когда прижало, это лучше чем ничего.
>> undelete
> В рабочем виде есть только для доисторического ext2.scalpel'ем выковыривал из ext4. (разумеется, есть в alt linux rescue)
ну как бы не пропиарить alt ;-) без этого же никак?
По крайней мере достаточно изящный и тематический пиар. И указание на полезную утилиту. Если б все так пиарились - реклама бы не вызывала претензий.
>ну как бы не пропиарить alt ;-) без этого же никак?Глубже копайте. Вся новость - повод для того, чтобы можно было попиарить Alt. Заговор везде. И даже в вашем возмущении пиаром Alt. Признавайтесь, сколько вам заплатил Alt?
для начала узнай что вообще означает PR, потом глупости пиши, оналитег
> для начала узнай что вообще означает PR, потом глупости пиши, оналитегВообще-то одна из вещей которых альту лютейше не хватает - это как раз нормального пиара. Потому что у нас как: сделать что-то могут. И даже вроде не такое плохое. Но вот донести до сведения тех кому это может быть интересно - БОЛТ. Так и ржавеет космический корабль в ангаре. Хоть вроде и технологичен, и сделан на совесть, и ряд технологий удачные. А вот инфраструктуры - нет. И летать на нем просто некуда. За отсутствием космодромов на которые можно посадку совершить.
> Вообще-то одна из вещей которых альту лютейше не хватает - это как
> раз нормального пиара.Ну вот посмотрите при случае en.altlinux.org/rescue -- мне за эту штуку не стыдно и разбирают её весьма активно по всему миру. Ваше мнение интересно. Тому, что там нет libX11, удивляться не стоит -- это часть моей постановки задачи; графический вариант как-то более вдумчиво надо делать, чем просто плюхнуть icewm с xterm и браузером.
> Ну вот посмотрите при случае.Посмотрел. Достаточно своеобразное зрелище. В том плане что я таким для себя пользоваться не буду. Задумка неплохая, а вот реализация...
1) Видеорежим 80х25 на моем оборудовании выглядит ну просто из рук вон плохо. Мой монитор - это таки массив пикселей, 2560х1440 штук. Адресация этого монитора в упомянутом виде - ретардизм в терминальной стадии. Буквы - как у окулиста в первой строчке! С кулак размером.
2) Зато этих самых букв на экране умещается ну очень мало. Что отнюдь не делает взаимодейтсвие с системой удобным и результативным. Весьма субоптимальный и неэффективный вариант консоли.
3) Это вообще первая виденная мной операционка которая зачем-то смеет бибикать PC-хрюкером при нажатии tab для автодополнения. При том сначала бибикает, а автодополнение почему-то только со 2-й попытки. Очень, блин, удобно - постоянное бибикание PC-хрюкером слушать при работе в консоли. Благодаря альту я узнал как вообще звучит PC-хрюкер в этом системнике. Честно говоря - лучше бы не знал.
4) Знаете, вышвырнуть юзеря в рутовый промпт - не совсем дружественно, особенно для рекавери. Нет, если я профессионально занимаюсь рекавери 20 лет - я конечно наизусть все команды выучу, включая всякие photorec и прочих scalpel. А если нет? Тезис о том что пользователя прикалывает разучивать сотню-другую наименований утилит которые нужны раз в сто лет - весьма сомнителен. А как вообще посмотреть "что эта система имеет нам предложить из программ?" в простом для пользователя виде?
> чем просто плюхнуть icewm с xterm и браузером.
Я бы делал так: XFCE и его терминалка (на моем экране так влезает раз в пять больше текста, не говоря про вкладки и прочие мелочи) и ярлыки на наиболее часто нужные программы. И какой-нибудь ридми/меню/каквамтамудобнее на видном месте с описанием чего вообще за софт есть и чего этот софт умеет (для менее часто используемого софта, etc). Может быть не расово верно, зато можно без поллитры разобраться. И не за два часа копания в уродском 80х25 (да, я зажрался - к хорошему быстро привыкаешь).
> ну как бы не пропиарить alt ;-) без этого же никак?Точно так же могу попиарить любую палочку-спасалочку, где оно есть.
Вы только когда столкнётесь -- конфижики посравнивайте, потом вернёмся к теме.А вот из того, что мало где найдёте, в моё поделие включены тулзы имени Joachim Metz и uefi memtest86 (к сожалению, ставший проприетарным).
> Вы только когда столкнётесь -- конфижики посравнивайте,Конфижки чего? Ядра? Каких-то программ? Или просто сферические в вакууме?
Есть во всех популярных дистрибутивах.
Помнит всё, на что остались открытые дескрипторы.
Ну как нам это поможет если в системе есть лишь busybox и отчаяние?
/proc/ с запущенными процессами сама по себе не отключится. Оттуда же и доступ к дескрипторам. /proc выживет и после rm -rf /, поскольку является виртуальной.
> Ну как нам это поможет если в системе есть лишь busybox и
> отчаяние?Если интересно, можно поэкспериментировать на домашнем маршрутизаторе. Прошивка обычно в режиме readonly, потому снести что-либо выполнением rm -rf / можно только до момента перезагрузки. Как раз и будет busybox + ядро.
> только до момента перезагрузки. Как раз и будет busybox + ядро.Юзерам openwrt следует проявлять разборчивость. Ибо в случае JFFS он таки R/W. И даже JFFS + Squashfs потребует ребут в рекавери, ибо JFFS таки запомнит что "все снесли".
на wl500g.googlecode.com можно делать что угодно. Без явной команды ничего на флешку не запишется.
> на wl500g.googlecode.com можно делать что угодно. Без явной команды ничего на флешку
> не запишется.Правда радости с этого мало, ибо поддерживает полторы броадкомовских железки. Да и вообще, я предпочитаю админить системы по человечески, без костылей. А то что некоторые индивиды могут спилить себе бензопилой голову - не повод прекратить использовать все инструменты опаснее зубочистки.
> А то что некоторые индивиды могут спилить себе бензопилой голову - не повод
> прекратить использовать все инструменты опаснее зубочистки.Концепция полной изоляции не так уж плоха для подобных устройств. При отсутствии открытых на запись разделов исключена ситуация случайного повреждения. Всё лечится временным отключением питания.
> открытых на запись разделов исключена ситуация случайного повреждения.С другой стороны, конфигурирование и обновление системы и доустановка софта превращается в весьма отдельный гемор.
> Всё лечится временным отключением питания.
Да, сделай dd в MTD с бутлоадером. И попробуй это вылечить отключением питания. Как раз получишь превосходный кирпич, если авторы системы прощелкали клювом и mtd c бутлоадером не r/o. Русская рулетка для настоящих джедаев :).
> Если интересно, можно поэкспериментировать на домашнем маршрутизаторе.Вообще-то для таких экспериментов есть виртуалки и стенды.
У меня информация о MBR, LVM и RAID постоянно бэкапится: http://pastebin.com/YE4Y1seE
> DIR='/tmp/hdd-info';Не делайте так в скриптах, запускаемых на хостах, где не хочется сюрпризов -- предсказуемое имя файла/каталога в доступном кому попало на запись месте является одним из типичных слабых мест.
mktemp(1) умеет -d, а у Вас получается предсказуемое имя либо race condition между созданием файла и созданием одноименного каталога после его удаления. В тепличных условиях это неважно, но привычка крайне неудачная.
Ну и вместо /tmp лучше "${TMPDIR:-/tmp}" какое.
> Ну и что? Чем это поможет? В морг значит в морг.Это тебе никогда не приходилось иметь дело с "пустой системой". Только представь себе: память системы девственно чиста, там нет софта. Есть только глупый ROM процессора и простой протокол загрузки кода в память, по UART или USB. В этот момент система еще не инициализирована и малейшая оплошность повесит все нафиг. DRAM еще нет - контроллер оного еще надо инициализировать. И вот мелкий и глупый началный код аккуратно конфигурит проц и память и получает довесок в DRAM. Это уже может быть относительно большой и умный код, способный читать/писать память системы и/или например запустить полновесный Linux. Например, u-boot. А он уже может записать систему в память или же стартануть систему получив ее в RAM и далее запись в память будет сделана самой системой.
Звучит как нечто странно? ХРЕН. Это один из обычных способов зашивки софта в пустые embedded системы. Ведь чипы флеша с фабрики выходят девственно чистыми и там ничего нет, а когда система может сама себе софт вкатить - это снимает уйму проблем типа отдельной фазы программирования чипов на программаторе.
Hardcore edition: иногда бывает так что особо-креативные очумелые ручки или особо лютый баг/сбой железа в системе выпилили начальный загрузчик из флеша. А boot ROM в проце как назло не оказалось, или неизвестно как активировать, или неизвестно по какому протоколу/интерфейсу работает. В этом случае мы замечаем что под лыжами оказался асфальт.Но есть небольшой секретный трюк. "Тумблеры на шине!" В современной инкарнации это называется JTAG или (у ARM) - SWD. Небольшой аппаратный интерфейс, позволяющий пошагово проинструктировать проц что ему следует сделать. Только под управлением софта из внешней системы, чтобы самому тумблерами на шинах не клацать. И вот мы уже посыпаем асфальт снегом, заталкивая в проц первые инструкции, которые минимально проинициализируют систему и как минимум дадут доступиться до флеша в виде достаточном для впихивания загрузчика.
Wtf? Это называется debricking. Если кто хочет попрактиковаться :)) - может записать своему роутеру какой-нибудь хлам в MTD-партицую с названием boot loader. Если это получится (такие партиции по очевидным причинам часто метят силами ядра как R/O) - вы узнаете много нового и интересного :)).
Красиво расписал)) Практиковались) Обожаю свой программатор MiniPRO :)
А мне FTDIки нравятся. Могут изобразить практически что угодно и работают в линухе. Этакий современный вариант GPIO для писюков.Из интересных открытий: однажды я никак не мог понять почему на китайской девайсине никак не хочет работать JTAG. Вроде сигналы правдоподобные, но читается бред, совершенно не похожий на какой либо известный науке CPU. Трассировка дорожек на печатке раскрыла секрет китайского мастерства. Оказывается китайцы просты и брутальны: эти сигналы шли прямо на SPI NOR. А поскольку JTAG как таковой можно считать подвидом SPI с специфичными параметрами, все даже как бы работает. Просто очень странно, ибо SPI NOR ничего не знает про JTAG. Оказывается, китаезы шьют пустую систему так: с системы снимается питание и подается на этот хидер. При этом работает только SPI NOR, остальная система не взлетает. И, как ни странно, достаточно дохла для того чтобы не мешать напрямую запрограммить SPI флеш даже не отсоединяя его от проца. Китайская непосредственность временами просто поражает.
> Звучит как нечто странно? ХРЕН. Это один из обычных способов зашивки софта
> в пустые embedded системы. Ведь чипы флеша с фабрики выходят девственно
> чистыми и там ничего нет, а когда система может сама себе
> софт вкатить - это снимает уйму проблем типа отдельной фазы программирования
> чипов на программаторе.Таким образом нет никаких сложностей с отдельной фазой программирования чипов. :-)
программатором... >:-)
> Звучит как нечто странно?Да нет. Всегда так винду устанавливаю :)
>rm -rf /usr /lib/nvidia-current/xorg/xorgох уж этот bumblebee
а какие там хорошие комменты на гитхабе были...))))
почему "были"? Они и сейчас там есть :Dhttps://github.com/MrMEEE/bumblebee-Old-and-abbandoned/commi...
Есть ли жизнь после rm -rf /?
Да просто f надо перестать использовать и сразу легче станет. r тоже не нужен тащем-то.
Ну тогда и rm тебе ни к чему...
Зачем комментарий-то удалили?
-rf - это дурная привычка, которую вбивают в голову неграмотные руководства.
Очевидно что ты никогда не пользовался linux. Для начала попробуй удалить не пустой .git каталог.
>с флагом "--no-preserve-root"- Доктор, когда я делаю вот так, мне больно.
- Ну так не делайте.
Мож я туплю, но rm -rf / уже лет 10-15 не работает. rm -rf /* - работает, даже без preserve-root
Еще можно dd if=/dev/zero of=/dev/sda (или что там у вас жестким диском). "Быстро, надежно и без хлопот вас похоронит Аэрофлот".
Проверил? Точно не работает?
Старые пердуны не делятся, приходиться изобретать велосипеды.
Поколение пепси открывает книгу баянов!Так же читайте в выпуске:
- chmod without /bin/chmod
- 1001 вариант команды ls
- for i in в каталогах с пробелами.
- какой пароль в бубунте
....
Знаешь, на фоне рекавери бутлоадера через JTAG - все эти эксперименты вообще полная халява. Там по крайней мере есть уже рабочее ядро, умеющее кучу всего. И даже свой код запускать можно. А когда у тебя только дохлая железка, где процу неоткуда взять первую инструкцию - вот это уже да, trouble on the way.
> Знаешь, на фоне рекавери бутлоадера через JTAG - все эти эксперименты вообще
> полная халява. Там по крайней мере есть уже рабочее ядро, умеющее
> кучу всего. И даже свой код запускать можно. А когда у
> тебя только дохлая железка, где процу неоткуда взять первую инструкцию -
> вот это уже да, trouble on the way.rm -rf вроде ещё не умеет стирать ROM/PROM и бутлоадеры
> rm -rf вроде ещё не умеет стирать ROM/PROM и бутлоадерыdd в mtd с бутлоадером спасет отца русской демократии :)
>> rm -rf вроде ещё не умеет стирать ROM/PROM и бутлоадеры
> dd в mtd с бутлоадером спасет отца русской демократии :)Есть правильная утилита: fast_erase http://img-fotki.yandex.ru/get/6213/27652091.193/0_6c553_e8a...
У нее короткий радиус действия применительно к ремотным системам :).
Однако, трюк с enable -f впечатляет :o
Раньше никогда не слышал о таком..
>ls /dev/tcp
>ls: невозможно получить доступ к /dev/tcp: Нет такого файла или каталогаа где dev/tcp?
>>ls /dev/tcp
>>ls: невозможно получить доступ к /dev/tcp: Нет такого файла или каталога
> а где dev/tcp?Это в bash встроенная фича.
When executing a command on a /dev/tcp/$host/$port pseudo-device file,
Bash opens a TCP connection to the associated socket.A socket is a communications node associated with a specific I/O port.
(This is analogous to a hardware socket, or receptacle, for a connecting cable.)
It permits data transfer between hardware devices on the same machine,
between machines on the same network, between machines across different networks,
and, of course, between machines at different locations on the Internet.
...http://tldp.org/LDP/abs/html/devref1.html
exec 3<>/dev/tcp/www.opennet.ru/80
echo -e "GET /openforum/vsluhforumID3/96312.html#50 HTTP/1.0\n\n" >&3
cat <&3 | html2text
Да, высший пилотаж!
Но говорят, что крокодилы не летают, а если и летают то "низенько-низенько".
BackUp все исправит, конечно если...
Лет 10 назад читал байку, которая намного старше; как админ сделал на rm -rf / на одном из первых серверов(?) с одним из первых юниксов. Ему даже удалось всё восстановить без перезагрузки. Было интересно...
говорят, древние админы были намного могущественнее нынешних
> говорят, древние админы были намного могущественнее нынешнихИстинная правда. Нынешние - лишь перхоть на плечах отцов-основателей.
А у меня система, загруженная HDD USB 3.0, интересно себя ведёт. Всё продолжает работать, но если тыкнуть по панели KDE, она пропадает, если тыкнуть по Konqueror он пропадает. А Firefox работает и показывает все открытые вкладки, но не открывает новые: "превышено время ожидания".
> тыкнуть по Konqueror он пропадает. А Firefox работает и показывает все
> открытые вкладки, но не открывает новые: "превышено время ожидания".Посмотри в dmesg. Вероятно, тебя ждет некоторое количество открытий. Насчет бажных ядер или порушеных файловых систем.
Я там забыл важную фразу. "Интересно себя ведёт, если вытащить кабель". Я думал что сразу будет чёрный экран, но нет, программы продолжают выполняться.
> Я там забыл важную фразу. "Интересно себя ведёт, если вытащить кабель".Если тебе отпилить руки - ты тоже себя интересно вести будешь. Ну там например ногами научишься печатать, за отсутствием других вариантов.
…а теперь оторвём таракану лапы и хлопнем в ладоши. таракан, как видим, остался на месте. вывод: без лап таракан утрачивает слух.
В линуксах гораздо безопаснее набирать format c:\