如果正在运行的 shell 脚本执行一些危险的操作,如何停止它?

如果正在运行的 shell 脚本执行一些危险的操作,如何停止它?

我的意思是,如何根据正在执行的操作动态停止正在运行的 shell 脚本。因为有些危险的命令,例如rm,如果在运行前使用正则表达式,一些边缘情况可能会逃脱,例如

#!/bin/bash
name=""
$name rm a.py

仍将删除a.py

那么有没有办法检测正在运行的脚本的下一个命令是什么,如果匹配则停止它。

也许复杂的正则表达式可以在运行之前做到这一点,但我想知道是否有一个运行脚本的好的解决方案。

更多的

由于脚本是别人提供的,因此我不被允许修改它。

答案1

首先,你不应该运行不受信任的第三方脚本。

过滤 shell 调用可能当它们导致使用 AppArmor、SELinux、GrSec 或其他安全监管工具分叉其他二进制文件时即可实现。

但是纯 bash 可以做很多事情,而不需要分叉,因此还不够。

不要运行该脚本或在运行之前阅读它。如果你不信任第三方提供商,但必须运行它,然后你就得阅读它了。

相关内容