Я уверен что почти все из вас встречались с таким комментарием: выполни эту команду
Но мало кто знает, что эта команда называется «Патч Бармина».
Патч Бармина — шутка, описывающая универсальное средство устранения любых неполадок в Unix-системах. Сам «патч» состоит из одной строки, которую следует набрать в консоли root.
Данная команда действительно устраняет любые неполадки вместе с самой Unix-системой. Поэтому будь аккуратен в своих экспериментах, запускать такое можно только на подопытных стендах ради науки. Надеюсь ты успел дочитать до этого абзаца🤒 и не побежал проверять на продакшене.
Давай разберем как работает «Патч Бармина»
По умолчанию утилита rm проверяет аргументы командной строки на соответствие корневой директории. Если в rm передан аргумент /, то выведется предупреждение. Но с помощью опции
В случае команды
Достаточно чтобы процессу были доступны чтение/запись/исполнение (rwx) для директории в которой будут удаляться файлы. Ну и чтение/исполнение (r-x) на компоненты пути до этой директории.
Права на чтение не обязательны если известен полный путь и он задан в качестве аргумента.
К примеру этой командой
Также имеется еще одна опция
На этой прекрасной ноте, жму тебе руку и желаю хорошего дня!
tags: #bash #linux
—
🟢 Подпишись: @bashdays
sudo rm -rf /*
и твоя проблема решится.Но мало кто знает, что эта команда называется «Патч Бармина».
Патч Бармина — шутка, описывающая универсальное средство устранения любых неполадок в Unix-системах. Сам «патч» состоит из одной строки, которую следует набрать в консоли root.
Данная команда действительно устраняет любые неполадки вместе с самой Unix-системой. Поэтому будь аккуратен в своих экспериментах, запускать такое можно только на подопытных стендах ради науки. Надеюсь ты успел дочитать до этого абзаца
Давай разберем как работает «Патч Бармина»
По умолчанию утилита rm проверяет аргументы командной строки на соответствие корневой директории. Если в rm передан аргумент /, то выведется предупреждение. Но с помощью опции
--no-preserve-root
это предупреждение можно отключить.В случае команды
rm -rf /*
аргументами будет содержимое корневой директории. Оболочка bash передаст команде rm список. Чтобы посмотреть, что будет в списке, выполни:printf '%s\n' /*Выведется список папок и файлов. Но корневой директории в этом списке не будет. Ну а дальше команда rm начет удалять всё до чего сможет дотянуться. Даже если её запустить под обычным пользователем, многие файлы будут удалены.
Достаточно чтобы процессу были доступны чтение/запись/исполнение (rwx) для директории в которой будут удаляться файлы. Ну и чтение/исполнение (r-x) на компоненты пути до этой директории.
Права на чтение не обязательны если известен полный путь и он задан в качестве аргумента.
К примеру этой командой
rm -ri /*
давай удалим содержимое домашней директории пользователя. Но перед каждым удалением будет задаваться вопрос (ключ -i).rm: спуститься в защищённый от записи каталог '/boot'?Если мне что-то не нужно удалять, я просто нажимаю Enter, а для положительного ответа набираю «y» и жму Enter.
rm: спуститься в защищённый от записи каталог '/dev'?
rm: спуститься в защищённый от записи каталог '/etc'?
rm: спуститься в защищённый от записи каталог '/home'? y
rm: спуститься в каталог '/home/user'? y
rm: удалить обычный файл '/home/user/.bashrc?
Также имеется еще одна опция
--preserve-root
, без аргументов эта опция как раз и включает проверку которую отключает --no-preserve-root
. При задании этой опции с аргументом all директории чьи родители находятся на другой файловой системе (то что было смонтировано) — пропускуются. Например домашняя папка пользователя находится на отдельном разделе.rm -ri --preserve-root=all /*вывод будет таким:
rm: пропускается '/dev', поскольку он находится на другом устройствеКакие выводы. Даже если не указывать
rm: и действует --preserve-root=all
rm: пропускается '/run', поскольку он находится на другом устройстве
rm: и действует --preserve-root=all
rm: пропускается '/tmp', поскольку он находится на другом устройстве
rm: и действует --preserve-root=all
--no-preserve-root
, команда rm может знатно начудить. Всегда гугли/читай, прежде чем бездумно копировать и запускать. Ну и всегда пробегайся глазами по чужим bash скриптам, особенно если эти скрипты дернуты у какого нибудь Васи Нонейма.На этой прекрасной ноте, жму тебе руку и желаю хорошего дня!
tags: #bash #linux
—