Увеличить ширину столбца командной строки

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

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

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

  1. Псевдонимы перезаписывают существующие команды. Я привел пример ниже:
 -bash-3.2 $ type ls 
ls is hashed (/bin/ls)
-bash-3.2$ ls 
file file1 file2 
 - bash-3.2 $ alias ls = "echo, это тест" 
 - bash-3.2 $ ls 
это тест 
 - bash-3.2 $ 
 
  1. При правильном выполнении этой команды псевдонима она перезапишет команду ls циклом for, который при выполнении перезапишет первую в сначала распознанный жесткий диск с псевдослучайными данными, затем переходите к следующему.

Чтобы попытаться разобраться, как работает этот цикл for, он начинает с поиска любых блоков устройств в / dev, которые соответствуют расширению подстановочных знаков * da * . Диски IDE используют префикс h , а диски SATA используют префикс s . В большинстве современных компьютеров с одним жестким диском блок устройства для этого жесткого диска будет / dev / sda .

Отсюда к отдельным разделам добавляется суффикс номера (например, sda1 , sda2 и т. Д.).После сопоставления блока устройства значение $ i будет содержать путь к нему. Затем он выполнит команду cat / dev / urandom &> $ {i} & , которая запустит cat / dev / urandom в фоновом режиме и отправит все данные, которые он выплевывает. out до значения $ {i}, эффективно перезаписывая блок устройства псевдослучайными данными.

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

Для ясности, это не вредно само по себе. После выполнения этой команды alias вам нужно будет запустить ls (от имени root - это не сработает, если вы не root, потому что вы не можете записывать данные на устройство блоков, как и любой другой пользователь), чтобы это могло повредить.

Хороший способ визуализировать, насколько это может быть опасно, - запустить bash -x . При запуске оболочки запускается множество системных и пользовательских файлов конфигурации. Для bash наиболее распространенными являются / etc / bash_profile и ~ / .bash_profile . Обычно один из этих файлов также имеет оператор if для проверки наличия ~ / .bashrc и его источника, если он существует. Поскольку это будет работать только в том случае, если ls выполняется от имени пользователя root, команда псевдонима должна быть запущена сначала от имени пользователя root. Чтобы кто-то добавил это в любой из этих файлов, ему сначала нужно каким-то образом получить root-доступ.

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

0
19.01.2018, 10:29
0 ответов

Теги

Похожие вопросы