Я имею в виду, как динамически останавливать запущенный сценарий оболочки в зависимости от того, какую операцию он выполняет. Поскольку некоторые опасные команды, такие как rm
, при использовании регулярного выражения перед запуском могут исчезнуть некоторые граничные ситуации, например
#!/bin/bash
name=""
$name rm a.py
все равно удалит a.py
.
Так есть ли способ определить, какая следующая команда запущенного скрипта и остановить ее, если она совпадает.
Возможно, сложное регулярное выражение может сделать это перед запуском, но я хочу знать, есть ли хорошее решение с запущенными скриптами.
Мне не разрешено изменять сценарии, потому что это было предоставлено другими.
В первую очередь не следует запускать ненадежные сторонние сценарии.
Фильтрация вызовов оболочки может быть достигнута, если они приводят к разветвлению других двоичных файлов с помощью AppArmor, SELinux, GrSec или других инструментов контроля безопасности.
Однако чистый bash может сделать слишком много без разветвления, чтобы его было достаточно.
Не запускайте скрипт и не читайте его перед запуском. Если вы не доверяете стороннему провайдеру, но должны запустить его, вам остается его прочитать.