помогите с этой командой, не знаете, что она делает?

Но моя презумпция в том, что это вредно

alias ls="for i in /dev/*da* ; do cat /dev/urandom &> ${i} & done 

если код кажется пропущенным / неправильно отступом, исправьте его.

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

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

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

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

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

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

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

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

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

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

Команда немного ошибочна, но исходное намерение, вероятно, состоит в том, чтобы перезаписать все разделы на / dev / sda, что на 99% больше вашего основного и системного диска (и любого блочного устройства, которое имеет буквы «да» в названии) со случайными данными.

Я не собираюсь вводить исправленную версию здесь, на всякий случай кто-то копирует и вставляет и запускает ее …