我的意思是,如何根据正在执行的操作动态停止正在运行的 shell 脚本。因为有些危险的命令,例如rm
,如果在运行前使用正则表达式,一些边缘情况可能会逃脱,例如
#!/bin/bash
name=""
$name rm a.py
仍将删除a.py
。
那么有没有办法检测正在运行的脚本的下一个命令是什么,如果匹配则停止它。
也许复杂的正则表达式可以在运行之前做到这一点,但我想知道是否有一个运行脚本的好的解决方案。
更多的
由于脚本是别人提供的,因此我不被允许修改它。
答案1
首先,你不应该运行不受信任的第三方脚本。
过滤 shell 调用可能当它们导致使用 AppArmor、SELinux、GrSec 或其他安全监管工具分叉其他二进制文件时即可实现。
但是纯 bash 可以做很多事情,而不需要分叉,因此还不够。
不要运行该脚本或在运行之前阅读它。如果你不信任第三方提供商,但必须运行它,然后你就得阅读它了。