我想使用以下命令安装一个名为 42FileChecker 的特定 bash 脚本:
git clone https://github.com/jgigault/42FileChecker ~/42FileChecker &&
cd ~/42FileChecker &&
bash ./42FileChecker.sh
但我不知道 42FileChecker.sh 是否会在我的 PC 上做任何奇怪的事情,因为我是初学者并且不知道该脚本中发生了什么。有没有办法在虚拟终端或虚拟根文件夹或类似的东西中运行它,看看会发生什么,这样我就可以避免像格式化我的驱动器这样的疯狂事情。即使 42FileChecker.sh 是安全的,我也想知道有什么方法可以为将来的 shell 脚本测试 shell。
如果您不确定脚本的作用,最好在确定它的作用之前不要运行它。减少坏脚本的损坏半径的方法包括使用新用户运行它、在容器中运行它或在虚拟机中运行它。但是第一个陈述仍然成立:如果您不确定某事是做什么的,请考虑在您执行之前不要运行它。
正如@ctt 所说,首先在某种沙箱中运行它可能是个好主意。使用 VM 可能是最简单的解决方案。多通道非常简单。
安装多通道(假设你还没有):
启动一个新的虚拟机:
登录到您的新虚拟机:
然后运行您的脚本(在您的虚拟机内):
由于您所就读的学校已经发布了这些脚本,因此表达您的担忧的最佳场所是您的导师。
也就是说,我们可以帮助您逐行破译代码。这里的任何人都分析所有代码可能是不切实际的。
您实际上有 40 个 bash 脚本,总共 5,360 行。我将它们组合在一起并寻找可能被滥用的 bash/shell 命令。它们似乎都可以正常使用:
rm -rf /
命令可以擦除整个硬盘分区。sudo
用于运行脚本的要求。C
在检查的文件中只使用授权函数。github
作者姓名被识别,主要作者甚至在他的页面上都有他的照片。42FileChecker
似乎可以安全使用。您需要担心的不是人类可读的 bash 脚本。它是您无法读取的编译二进制对象,这是令人担忧的。例如,一个名为“shiny-bouncy-sphere”的程序可能会在您的屏幕上绘制类似的内容,但在后台它可能会擦除您的所有文件。
原始答案
最好询问脚本的作者它的作用。事实上,您几乎可以逐字发布您的问题,如上所示。
还问作者:
以及您能想到的任何其他好问题。
编辑 1 - 担心恶意作者。
您应该只使用具有大量良好公众评论的软件。您在 Ask Ubuntu 中信任的其他作者,如 Serge、Jacob、Colin King 等。其他受人尊敬的网站(如 Ask Ubuntu)及其受人尊敬的成员也应被视为“非恶意”。
Ask Ubuntu 中“受人尊敬的作者”的优势在于他们将自我价值押在“声誉点”上。如果他们故意编写“窃取”或“损坏”数据的代码,他们将很快失去声誉。事实上,作者可能会遭受“mods 的愤怒”并被暂停和/或被带走 10,000 的声望点。
编辑 2 - 不要遵循所有说明
我深入研究了您的 bash 脚本说明:
“安全”的方法是只运行第一行:
这会下载脚本但不运行它们。接下来使用
nautilus
(文件管理器)检查安装的目录和文件。很快您就会发现有一组由法国学生编写的 bash 脚本。脚本的目的是编译和测试 C 程序的不当功能和内存泄漏。
您可以使用 Docker。Docker 容器与主机操作系统隔离,因此任何恶意活动都将留在容器内,只要您不通过转发端口或挂载文件系统专门将其释放出来。
要安装 docker:
要下载新的 Ubuntu Bionic 容器:
之后,登录到容器中
并在其中执行狡猾的操作:
我不是这方面的专家,但我建议使用
strace
anddocker
。因此,首先按照此答案中的说明创建一个 Docker 容器。但是除了 strace 之外,它还会告诉您进行了哪些系统调用。或引用:
您可以将这些命令组合到
考虑通过运行脚本来使用调试模式:
更多有用的 Bash信息
调试模式不会阻止脚本做坏事,但它会让你逐行检查脚本并检查效果。您还可以检查脚本是否有一些常见的潜在错误和/或漏洞,例如搜索脚本以查找任何出现的情况
rm
并非常仔细地查看这些命令。许多这些工具都内置了一些帮助来尝试它们,例如 rm 默认情况下不会删除目录,它需要-r
、-R
或--recursive
选项来执行此操作。甚至可能有一些类似防病毒的工具会在 bash 脚本中搜索这些模式,但我不知道任何名称。您的示例脚本有点额外的不确定,因为它们下载了其他工具,因此还应该检查每个工具。检查他们联系的服务器也可能是值得的。
不幸的是,只能在您的评论中找到提供答案的相关信息:
所以情况是,在实践中,您可以选择跳过课程,或者您可以运行脚本来对您的资源进行规范检查。与您的讲师交谈几乎不是一种选择,因为缺少前者(否则无论如何都不是一种选择,没有学校会改变他们的程序,因为一个学生对此不满意)。
因此,甚至没有出现如何限制该脚本可能造成的损害的问题。这不是一个大乳房角质女孩通过电子邮件发送给您的随机脚本,您需要运行才能看到她的照片。
你正在上编程课。这个是这个脚本发挥作用的地方。问题是您是否要遵守成功完成课程的框架条件。
但是,如果您真的担心,仍然可以在容器或虚拟机中运行脚本,并将您的源代码放在共享文件夹中,或者放在容器/虚拟机公开的网络共享中。这几乎是完全偏执的道路,但是现在虚拟化并没有那么复杂,所以它的成本并不高。
除非该脚本中包含非常严重的漏洞利用的可能性很小,否则以任何非 root 用户身份登录(在 Ubuntu 上您几乎无法选择这样做)并避免
sudo
无缘无故地输入几乎可以防止 99%无论如何都可能发生的所有坏事。比如格式化硬盘,这是你担心的。普通用户无法做到这一点。最糟糕的事情是脚本会擦除用户的主目录。那又怎样,没问题,真的。