Неверный код . В конце цикла for отсутствует закрывающая кавычка, и это может быть опасно. Позвольте мне объяснить, как это сделать.
Команда псевдоним
представляет собой бюллетень оболочки. Как следует из названия, он будет связывать одно слово с другой командой. Само по себе это не является вредоносным или вредным. В большинстве случаев это очень полезно, особенно когда вам нужно регулярно запускать действительно длинную команду с несколькими флагами и аргументами.
Что делает эту команду потенциально опасной, так это сочетание двух разных вещей.
-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 $
псевдонима
она перезапишет команду 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-доступ к системе.