Rm rf linux команда

Обновлено: 02.07.2024

Командная строка Linux — очень продуктивная, полезная и интересная, но иногда она может быть очень опасной, особенно когда вы не уверены, что вы делаете. Для некоторых команд в командной строке вы должны перепроверить синтаксис дважды, прежде чем нажмёте Enter.

Команда rm -rf

Команда rm -rf — это один из самых быстрых способов удалить каталог и его содержимое. Но небольшая опечатка или незнание могут привести к непоправимому разрушению системы. Некоторые опции, используемые с командой rm.

  1. rm в Linux используется для удаления файлов.
  2. Команда rm -r удаляет каталог рекурсивно, даже если он непустой.
  3. Команда rm -f удаляет файлы без запроса файлы ‘Только для чтения’.
  4. rm -rf / : Принудительное удаление всего в корневой директории.
  5. rm -rf * : Принудительное удаление всего в текущей/рабочей директории.
  6. rm -rf . : Принудительное удаление всего в текущей директории и поддиректориях.

Следовательно, нужно быть осторожным, когда вы выполняете команду rm -rf. Чтобы обойти несчастные случаи с удалением файлов командой ‘rm‘, сделайте псевдоним (алиас) команды с параметром rm -i в файле “.bashrc”, после этого всегда будет появляться запрос при любому удалении.

Команда :()< :|:& >;:

В действительности эта команда является логической бомбой. Она оперирует определением функции с именем ‘:‘, которая вызывает сама себя дважды: один раз на переднем плане и один раз в фоне. Она продолжает своё выполнение снова и снова, пока система не зависнет.

Команда > /dev/sda

Вышеприведённый пример пишет вывод «команды» в блок /dev/sda. Вышеприведённая команда пишет сырые данные и все файлы в блоке будут заменены сырыми данными, это станет причиной полной потери данных блока.

mv folder /dev/null

Команда mv переместит ‘folder‘ в /dev/null. В Linux /dev/null или null устройство — это специальный файл, который сбрасывает все данные, записанные в него, и сообщает, что операция записи прошла успешно.

Вышеприведённая команда переместит всё содержимое пользовательских директорий user в /dev/null, что фактически является переносом всех данных в чёрную дыру ( null ).

Этот пример wget загрузит скрипт из вредоносного источника и выполнитего

mkfs.ext3 /dev/sda

Этот пример отформатирует ‘sda’. После выполнения данной команды ваш жёсткий диск будет помечен как «Новый». Вы останетесь без каких либо данных и с системой не подлежащей восстановлению.

Эта команда используется для стирания текущего файла. Если эта команда будет выполнена с опечаткой или незнанием вроде “> xt.conf”, то это сотрёт конфигурационный или любой другой файл.

Это распространённая ошибка начинающих пользователей командной строки, когда они путают символы | (труба) и > (перенаправление вывода).

Например, вот так правильно:

А вот так вы затрёте бинарный файл:

^foo^bar

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

dd if=/dev/random of=/dev/sda

Эта dd сотрёт блок устройства sda и заполнит его рандомным мусором. Система будет неработоспособной.

Скрытая команда

Команда ниже — это ничего более как rm -rf. Эта команда спрятана в шестнадцатеричную запись и пользователь может быть одурачен и запустить её. Запуск этого кода сотрёт ваш корневой раздел. Эта команда показывает здесь, что опасность может быть спрятана и иногда её трудно выявить.

sudo rm rf

Если вы новичок в Linux, вы часто будете сталкиваться с советом никогда не выполнять команду sudo rm -rf /. В мире Linux вокруг sudo rm -rf существует множество мемов.

sudo rm -rf: что она делает?

Давайте изучать все пошагово.

Команда rm используется для удаления файлов и каталогов в командной строке Linux.

Но некоторые файлы не будут удалены сразу из-за прав доступа к файлам только для чтения. Их нужно удалить принудительно с помощью опции -f.

Однако команда rm не может быть использована для удаления каталогов (папок) напрямую. Вы должны использовать рекурсивную опцию -r с командой rm.

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

Вот скриншот всех вышеперечисленных команд:

Если вы добавляете sudo к команде rm -rf, вы удаляете файлы с правами root. Это означает, что вы можете удалять системные файлы, принадлежащие пользователю root.

Любая команда, которая что-то удаляет, может быть опасной, если вы не уверены в том, что удаляете.

Рассмотрим команду rm -rf как нож. Опасен ли нож? Возможно. Если вы режете ножом овощи, это хорошо. Если вы режете ножом пальцы, это, конечно, плохо.

То же самое касается команды rm -rf. Сама по себе она не опасна. В конце концов, она используется для удаления файлов. Но если вы используете ее для удаления важных файлов неосознанно, то это уже проблема.

Вы знаете, что с помощью sudo вы выполняете команду от имени root, что позволяет вам вносить любые изменения в систему.

linux directory structure

Согласно иерархии каталогов Linux, все в файловой системе Linux начинается с корня. Если вы удалите root, вы, по сути, удалите все файлы вашей системы.

Именно поэтому рекомендуется не выполнять команду sudo rm -rf /, потому что вы удалите всю систему Linux.

Прочтите: Уважаемая Mozilla, пожалуйста, удалите эту раздражающую "функцию" из Firefox

Я люблю рисковать: что если я запущу sudo rm -rf /, чтобы посмотреть, что произойдет?
В большинстве дистрибутивов Linux предусмотрена безотказная защита от случайного удаления корневого каталога.

snimok ekrana ot 2021 09 02 21 19 02

Это очень хорошо. Ваша система Linux позаботится о таких случайностях.

Теперь, что если вы хотите уничтожить свою систему с помощью sudo rm -rf /? Вам придется использовать -no-preserve-root.

Нет, пожалуйста, не делайте этого самостоятельно. Позвольте мне показать вам это.

Все ясно или все еще в замешательстве?

Linux имеет активное сообщество, где большинство людей стараются помочь новым пользователям. Большинство, потому что есть злые тролли, которые притаились, чтобы подшутить над новыми пользователями. Они часто предлагают выполнить rm -rf / для решения простейших проблем, с которыми сталкиваются новички. Эти идиоты получают своего рода удовлетворение, как мне кажется, за такие злобные действия. Я немедленно запрещаю им посещать форумы и группы, которые я администрирую.

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

:)

В конце концов, помните. Не пейте и не рутируйте. Оставайтесь в безопасности при работе с вашей системой Linux

На этой странице показываются непроверенные изменения

В этой версии ожидают проверки 22 изменения. Опубликованная версия была проверена 8 августа 2015.



rm -rf — линуксовая команда (если быть более точным, Unix'овая, однако в интернетах больше ассоциируется с Линуксом). Обычно употребляется в виде «rm -rf /*» (почему — см. ниже)

Содержание

  • Сама команда rm — удалить (remove) (файл(ы) и/или каталог(и)).
  • Ключ -r — recursively (рекурсивно) — позволяет удалять каталоги со всем содержимым, без этого ключа команда отвечает «каталог не пуст».
  • Ключ -f — force — не спрашивать подтверждения (вообще команды Linux не страдают обычным маздаевским назойливым переспрашиванием «а Вы точно уверены?», это редкое исключение (и то, только потому, что почти всегда по умолчанию в .bashrc прописано alias rm='rm -i')). Некоторые побочные эффекты опции описаны в мане.
  • Традиции Unix позволяют в большинстве программ объединять ключи, то бишь «-rf» эквивалентно «-r -f».
  • Фактически ключ «-rf» по действию аналогичен фразе «Всё и сразу!».

Таким образом, суть команды — удалить каталог рекурсивно, не спрашивая подтверждения. Обычно речь идёт о «/» — корневом каталоге. Большинство современных юниксов (свежие версии OpenSolaris и GNU/Linux) не дают ламеру выстрелить себе в ногу: rm -rf / не работают. Хотя всё спокойно удаляется при использовании ключа «--no-preserve-root». Кагбэ так: «rm -rf / --no-preserve-root» Kekeke. Есть и другой вариант: rm -rf /*

FreeBSD понимает эту команду в несколько изменённом виде: rm -fr /, а в последних версиях данная вещь не работает из-за использования флагов файловой системы (их надо сначала снять — chflags -R −0 /). В зависимости от уровня безопасности системы, может потребоваться перезагрузка в однопользовательский режим, что есть геморойно.

Windows понимает эту команду как rmdir /s /q C:\ или rd /s /q C:\, где /s — аналог -r, а /q — аналог -f. При этом удаляется только содержимое диска C: из-за отличий в файловой системе: в мелкомягких ОС начиная с MS-DOS 1.0 рут не один, а до 26 разных, и одной «страшной» командой типа rmdir /s, deltree или format можно грохнуть только один диск за раз. В винде теоретически есть суперкорень «Мой компьютер», но этот каталог виртуальный, фиктивный и не существует в реальной файловой системе, поэтому «страшные команды» по нему не проходят как по негодному аргументу. Впрочем, есть и другой способ: установить Cygwin и воспользоваться традиционной командой.



Использование команды двояко:

  • В качестве травли линукс-нубов или тонкого намёка пойти нахуй; [1]
  • В качестве травли ламеров, которые работают в системе, в том числе сидят в интернетах, из-под рута. Обычно в этом случае заветная строчка маскируется (ибо примитивный вариант проходит только с нубами):

А вот что происходит в Perl'овом коде — совсем не очевидно из-за того, что это язык вуду преднамеренно запутанного написания. В сущности, всё просто: в данной строчке записано всего три последовательно выполняемых команды. Произведём первую итерацию и запишем поданную команду следующим образом:

Вторая команда транслирует содержимое «аккумулятора» по достаточно сложным правилам. В левой части указано четыре диапазона символов, в правой — один. Если раскрыть эти диапазоны, получим следующее соответствие:

В результате содержимое $_ принимает вид system"rm -rf /" .

Третья же команда дважды (как инструктирует флаг ee ) «вычисляет» содержимое аккумулятора — вышеуказанную деструктивную команду — и пытается заменить пустую строку в аккумуляторе на результат сего вычисления, но автору результат замены уже не интересен. Еще подробнее

Есть еще один вариант, уже для нубов, считающих себя Ъ-линуксоидами:

Под Windows 9x данный патч был всё-таки портирован и принял вид deltree /y e: d: c:
Почему такой порядок дисков? Чтобы сначала удалились мегабайты прона на отдельных хардах/разделах (тогда гигами не меряли), а затем система. Также предлагался «универсальный ключ реестра для избавления от шароварности программ», который записывал сию команду в Run, а заодно отключал мышь и клаву. При следующей загрузке, если юзер и догадывался о причине странного жужжания винта, спасти мог только быстрый, решительный Reset (но юзер загипнотизированно смотрел на зависший мышекурсор и вспоминал о кнопке, когда было уже поздно).

Также, вариант для новых coreutils :

Недавний пример случайного использования мема случился летом 2011 года в проекте Bumblebee, представляющем собой костыль для поддержки технологии NVidia Optimus в ноутбуках с двумя видеокартами. Файл install.sh в исходниках данного проекта содержал безобидную строчку с лишним пробелом:

Эта строка, как нетрудно заметить, удаляет директорию /usr, в которой в современных линуксах содержатся чуть менее, чем все библиотеки, бинарники, и всё остальное. Баг был быстро пойман и исправлен, что не помешало багтрекеру проекта на github стать на несколько дней филиалом форчана, с макросами, пони и прочим.

В конце ноября — начале декабря 2013 г. счастливые пользователи Яндекс.Диска были обрадованы тем, что их ОС либо наотрез отказалась запускаться, либо запускалась, но без установленных программ. Как выяснилось, всему виной оказалось обновление Яндекс.Диска, которое отличилось широкой русской душой и вместо папки со старой версией «Диска» удаляло весь диск C:, на котором тот находился. Что характерно, проблема возникала прежде всего у пользователей, нарушивших заповедь «Не работай под рутом», вот только у многих считающих себя умнее системных архитекторов Windows юзверей это — нормальная ситуация. Особенно доставили объяснения менеджера Яндекса, призвавшего пользователей не удалять Яндекс.Диск, потому что патч Бармина скрывался именно в модуле деинсталляции. Спешите видеть — Яндекс взял в заложники ваш жесткий диск и хладнокровно убьет его, если вы попытаетесь удалить захватчика!

Марко Марсала, который когда-то был хостинг-провайдером. Небольшим таким хостинг-провайдером с полутора тысячами пользователей. И он случайно запустил на всех серверах bash-скрипт, содержащий строчку rm -rf /. И всё бы ничего, но он забыл придать какие-нибудь значения переменным foo и bar… Когда Марко пришёл на айтишный форум спрашивать, как теперь можно починить всё взад, ему так и не удалось добиться внятного ответа, потому что форумные петросяны, вместо того, чтобы посочувствовать, наперебой спешили сообщить ему, что он смог одной строчкой кода удалить свою компанию.

В околофидошных кругах rm -rf часто называют патчем Бармина — в честь Владимира Бармина, UNIX-админа. Последний, в релкомовской группе новостей, на вопросы вида «как починить <…> в SCO Unix?» несколько раз ответил «универсальным патчем: rm -rf / от рута».

На основе данного патча была разработана комбинация, получившая название Русской Рулетки.

Играть в Русскую Рулетку имеют право только администраторы (root), желательно на сервере, имеющем свыше 3000 посещений в день. Как было выяснено админами Ниеншанца (на практике), данная комбинация успешно работает в Linux и FreeBSD в последних версиях coreutils.

Версия Русской Рулетки под Windows:

Сей перл не заработает, если перед этим не включить расширенную обработку команд:

А всё потому, что в этой вашей винде она по умолчанию выключена, а вытащить переменную в знаках «!» можно только при ней включенной. Nuff said.

В 2013 году вышла версия системы статистики и управления Avaya Call Management System R17, которая наконец-то была портирована с этих ваших соларисов на Linux. В частности, там содержался скрипт cleanup, который по замыслу индусов должен был чистить мусор. В самом конце был такой код:

Забавный эффект обнаруживался, если директория /tmp была пустая. Корпорация объяснила это тем, что в solaris путь для find — обязателен, а в Linux — нет.

В конце января 2016 некий арчевод решил поиграться этим известным патчем перед тем как переразметить свой диск. Он старательно вписал в команду даже специальный ключ, без которого этот патч не запускается… Ну… и… получил кирпич из своего MSI нетбука — после включения даже подсветка экрана не загоралась!

Как нетрудно догадаться патч вытер вместе с корнем еще и переменные UEFI в NVRAM, которые монтируются в /sys/firmware/efi/efivars/, но принципиально это не могло быть проблемой, потому как по стандарту UEFI должна проверять целостность данных в NVRAM, и в случае нарушения целостности она ОБЯЗАНА осуществить инициализацию NVRAM до состояния настроек по умолчанию/фабричных (Factory Default). Но вот в MSI решили подзабить на проверку целостности NVRAM, и незадачливый арчевод потащил свой нетбук кирпич в сервис.

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

  • Пост про rm -rf /, 23 февраля 1996
  • Бармин о SCO, 3 октября 1996
  • Копия письма выше и упоминание патча
  • «Универсальное решение — rm», 16 октября 1996
  • А. Лисовский подробно рассказывает о назначении патча, 02 февраля 1996
  • Настоящий Владимир Бармин и его патч для шлимыла, 06 августа 1998
  • Порт патча под винду? конец 1997 года
  • Типичное использование, 2007 год
  • Просьба о помощи Perl-программисту на LOR'е
  • PSN Avaya об удалении файлов
  • О новой супер-силе патча на сиcтемах с UEFI

Есть более кровожадный вариант sudo dd if=/dev/zero of=/dev/sda, который заполняет раздел носитель /dev/sda нулями, вероятность сохранения данных обратно пропорциональна времени реакции поциэнта (с момента нажатия на [Enter] до момента прерывания команды нервным нажатием Ctrl+C).

После этого уже в первую секунду даже на дешевом механическом 5400RPM HDD занулит 40 мегабайт вместе с таблицей разделов, загрузчиком и остальными метаданными файловой системы. И оно уже никогда не загрузится без дополнительного геморроя.

Вообще довольно странно, что rm -rf победил dataset definition в массовом сознании. Ведь он гораздо более разрушителен и кошерен.

Можно например сделать адовый скример перенаправив весь жесткий диск в звуковую карту.

Или тупо забивать оперативную память случайными числами.

Жаль что там нет псевдоустройства для доступа к BIOS прошивке, тогда можно было бы окончательно решить вопрос с материнской платой красноглазика, если у него (U)EFI BIOS и то благодаря Поттерингу: [3]

В этом руководстве мы объясним, как использовать команду rm на примерах и объяснениях наиболее распространенных параметров rm .

Как использовать команду rm

Общий синтаксис команды rm (remove) следующий:

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

Чтобы удалить один файл, используйте команду rm за которой следует имя файла в качестве аргумента:

Если у вас нет прав на запись в родительский каталог, вы получите ошибку «Операция запрещена».

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

При удалении файлов, защищенных от записи, команда запросит подтверждение, как показано ниже:

Введите y и нажмите Enter чтобы удалить файл.

Параметр -f указывает rm никогда не запрашивать пользователя и игнорировать несуществующие файлы и аргументы.

Если вы хотите получить информацию о том, что удаляется, используйте параметр -v (подробный):

Удаление нескольких файлов

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

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

При использовании регулярных выражений перед запуском команды rm . Всегда рекомендуется перечислять файлы с помощью команды ls чтобы вы могли видеть, какие файлы будут удалены.

Удаление каталогов (папок)

Чтобы удалить один или несколько пустых каталогов, используйте параметр -d :

rm -d функционально идентична команде rmdir .

Чтобы рекурсивно удалить непустые каталоги и все файлы в них, используйте параметр -r (рекурсивный):

Запрашивать перед удалением

Параметр -i указывает rm запрашивать пользователя для каждого заданного файла перед его удалением:

Для подтверждения введите y и нажмите Enter :

При удалении более трех файлов или рекурсивном удалении каталога, чтобы получить одно приглашение для всей операции, используйте параметр -I :

Вам будет предложено подтвердить удаление всех указанных файлов и каталогов:

rm -rf

Если данный каталог или файл в каталоге защищен от записи, команда rm предложит вам подтвердить операцию. Чтобы удалить каталог без запроса, используйте параметр -f :

Команда rm -rf очень опасна и должна использоваться с особой осторожностью!

Выводы

Мы показали вам, как использовать команду Linux rm для удаления файлов и каталогов из вашей системы Linux.

Будьте предельно осторожны при удалении важных файлов или каталогов, поскольку после удаления файла его будет нелегко восстановить.

Читайте также: