我正在编写一个基于 Python 的 Web 服务器,它应该能够执行“插件”,以便轻松扩展功能。
为此,我考虑了在其中拥有多个文件夹(每个插件一个)和多个 shell/python 脚本的方法,这些脚本以可能发生的不同事件的预定义名称命名。
一个例子是on_pdf_uploaded.py
当一个 PDF 上传到服务器时执行一个文件。为此,我将使用 Python 的子流程工具。
为了方便和安全,这将允许我使用 Unix 环境变量来提供更多信息并设置进程的工作目录 (cwd),以便它可以访问正确的文件而无需找到它们的位置。
由于插件代码来自不受信任的来源,我想让它尽可能安全。我的想法是在子进程中执行代码,但将其放入具有不同用户的 chroot 监狱,这样它就无法访问服务器上的任何其他资源。
不幸的是,我对此一无所知,而且我不想依靠不受信任的脚本将自己关进监狱。
此外,我也不能将主/调用进程放入 chroot 监狱,因为插件代码可能在服务器响应其他请求时同时在多个进程中执行。
那么问题来了:如何在 chroot 监狱中以最低权限执行子进程/脚本,以保护服务器的其余部分不被错误的、不受信任的代码损坏?
谢谢!