Действительно ли возможно инвертировать команду в оболочке удара?

Да, можно получить вредоносное программное обеспечение.

Предположите комбинировать дефект библиотеки PNG как CVE-2007-5259 с glibc-проблемой как CVE-2011-1089. В выполнение в соответствии с Вашей учетной записью обычного пользователя с priviledge эскалацией, инициированной - позволяет, говорят что просмотр Изображения PNG в konqueror браузер от Вашей ОС.

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

12
03.03.2015, 21:26
7 ответов

Вы должны понимать, что bash - это просто среда выполнения. Он выполняет команды, которые вы вызываете - оболочка даже не знает, что делает команда, вы можете вызывать любой исполняемый файл, какой захотите. В большинстве случаев даже не ясно, что будет делать отмена - например, можно ли «отменить воспроизведение» фильма? Можете ли вы "отменить" электронное письмо? Что, например, может означать «отменить запуск Firefox»? Вы можете закрыть его, но закладки, загрузки и история не будут прежними.

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

Например, mv легко изменить, просто переместив файл туда, откуда он был, если вы что-то не перезаписали. Вот почему существует переключатель -i , который спрашивает вас перед перезаписью. Технически, обратным cp является rm , если что-то не было перезаписано (опять же, -i спрашивает вас об этом). rm является более постоянным, чтобы попытаться вернуть файлы, вы должны фактически взломать несколько более низких уровней (для этого есть инструменты). Если вы рассматриваете файловую систему как черный ящик, это технически было бы вообще невозможно (только детали логической и физической компоновки данных позволяют вам в некоторой степени контролировать ущерб). rm означает rm , если вам нужна функция «мусора», на самом деле это просто mv в некоторый заранее организованный каталог (и, возможно, запланированная служба для обслуживания или очистки это) - ничего особенного. Но вы можете использовать -i , чтобы запросить удаление перед удалением. Вы можете использовать функцию или псевдоним, чтобы всегда включать -i в эти команды.

Обратите внимание, что большинство приложений по-разному защищают вас от потери данных. Большинство (~ все) текстовых редакторов создают файлы резервных копий с ~ в конце на случай, если вы захотите вернуть старую версию. В некоторых дистрибутивах для ls по умолчанию используется псевдоним, поэтому он скрывает их ( -B ), но они есть. Хорошая защита обеспечивается за счет правильного управления разрешениями: не используйте root, если вам не нужно, сделайте файлы доступными только для чтения, если вы не хотите, чтобы они менялись. Иногда полезно иметь среду «песочницы» - вы запускаете что-то на копии, смотрите, все ли в порядке, а затем объединяете изменения (или отказываетесь от изменений). chroot или lxc могут предотвратить выход ваших скриптов из каталога и причинить им ущерб.

Когда вы пытаетесь выполнить несколько операций - например, если у вас есть сложная команда find, цикл while, длинный конвейер или что-то в этом роде, рекомендуется сначала просто echo команды, которые будут выполнены. Затем, если команды выглядят разумными, удалите echo и запустите его по-настоящему. И, конечно, если вы действительно не уверены в том, что делаете, сначала сделайте копию.Иногда я просто создаю архив текущего каталога.

Говоря о архивах: tarbombs и zipbombs, к сожалению, довольно распространены (когда люди создают архив без надлежащего подкаталога, а при распаковке файлы разбрасываются, создавая огромный беспорядок). Я привык просто создавать подкаталог перед распаковкой (я мог перечислить содержимое, но я ленив). Я думаю о создании сценария, который будет создавать подкаталог только в том случае, если содержимое было заархивировано без подкаталога. Но когда это действительно происходит, ls -lrt помогает найти самые свежие файлы и разместить их там, где они должны быть. Я просто привел это в качестве примера - программа может иметь множество побочных эффектов, о которых оболочка не может знать (как это могло быть? Вызывается другая программа!) Единственный надежный способ избежать ошибок - быть осторожным (подумайте дважды, запустить один раз).

Возможно, самые опасные команды - это те, которые имеют дело с файловой системой: mkfs, fdisk / gdisk и так далее. Они могут полностью разрушить файловую систему (хотя при наличии надлежащего программного обеспечения для судебной экспертизы возможно, по крайней мере, частичное обратное проектирование). Перед запуском команды всегда дважды проверяйте форматируемое устройство и правильность разбиения на разделы.

33
27.01.2020, 19:54

Нет, нет такой вещи, как «отменить» в Bash, извините. Вот почему вы должны дважды проверить свои команды или сначала проверить их на неважных файлах (если это возможно). И тройной проверка, если вы делаете вещи как root;)

14
27.01.2020, 19:54

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

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

Например, если вы запустите rm important_file.txt, то это скажет драйверу файловой системы "развязать" файл на файловой системе. Оболочка не выполняет это действие, а только вызывает rm, который делает это.

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

9
27.01.2020, 19:54

Я не буду повторять то, что сказали другие, но я вижу, откуда вы идете. Мой стандартный подход к выполнению «опасных» команд всегда был, чтобы повторить, все ли правильно расширены все переменные или нет. Если вы можете процитировать некоторые конкретные экземпляры, мы могли бы помочь дальше.

Например, в ситуации вроде:

for i in $(cat /my/file); 
do 
   echo "Now removing file $i using rm -f $i"
done
1
27.01.2020, 19:54

Нет, нет общих отмене, но некоторые последствия более обратимы, чем другие. Возьмем, например RM : Он по существу используется в течение двух целей - избегая беспорядка и свободного пространства для новых файлов. С небольшим количеством удачи вы можете получить содержимое файла, используя такие инструменты, как ExtundeLete , потому что только указатель к началу файла перезаписан при запуске RM ; Содержание перезаписано, когда операционная система повторно использует этот пробел (что может произойти миллисекунды или годы спустя). Из-за этой функциональности в середине падает в середине масштаба систем более или менее разрушительной. С одной стороны, есть мусорные системы , которые обеспечивают способ избежать беспорядка без риска сразу же потери данных (потому что отменить тривиально). Еще более консервативными являются . Как раз, прочитайте многие («червянные») системы, где данные не могут быть удалены или перезаписываются по желанию, написав его. На другом конце шкалы измельчают системы , которые перезаписывают файл содержимого (обычно несколько раз) в дополнение к указателю. В этот момент технологии восстановления ваших данных, вероятно, даже даже не существует (и, возможно, никогда не существует).

Итак, вы можете увидеть, как наиболее применяется конкретный инструмент ( RM ), не единственная альтернатива, но оно дает компромисс, большинство людей, кажется, удобны с:

  • Удаление файла Указатель очень быстрый, и очень мало вносят вклад в ухудшение диска
  • , вы менее склонны к нему пространства на системах, которые очень автоматизированы
  • , обеспечивают очень скромную, но ненулевую, защиту конфиденциальности и наоборот, Гарантия восстановления
  • Низкая сложность и, следовательно, низкий шанс на ошибки или неожиданное поведение

Если компромиссы ваши инструменты делают неприемлемы для вас, осмотрите вокруг. Скорее всего, есть инструменты, которые принимают решения, которые имеют право . Вы .

11
27.01.2020, 19:54

Нет, нет, но если, скажем, вы запутались с привилегированным каталогом корня и как-то что-то испортили, то лучше всего сохранить все файлы, которые можно записать на USB-накопитель или SD-карту и сбросить операционную систему с ISO-файла (если он у вас все еще есть, если нет, то вы можете получить еще один в автономном режиме...). Если вы удалили что-то, что можно, как сказано в wraeth, загрузить приложение для переподключения данных файла к имени файла и сохранения содержимого файлов (см. этот вопрос here). Для получения более подробного ответа, можете ли Вы рассказать нам, что Вы сделали неправильно?

.
1
27.01.2020, 19:54

Как и другие хорошие ответы, в оболочке нет "отмена". Но в вашем конкретном случае использования, чтобы отменить выключение , вы можете убить процесс выключения: см. https://stackoverflow.com/a/526330

1
27.01.2020, 19:54

Теги

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