gpt4 book ai didi

linux - 在我的服务器上运行其他人代码(沙盒)的安全方式?

转载 作者:IT王子 更新时间:2023-10-29 00:18:10 25 4
gpt4 key购买 nike

我想制作一个网络服务,在本地运行其他人的代码。自然地,我想限制他们的代码对某个“沙箱”目录的访问,这样他们就无法连接到我服务器的其他部分(数据库、主网络服务器等)

执行此操作的最佳方法是什么?

运行 VMware/Virtualbox:

  • + 我想它已经很安全了。即使有人设法“破解”,他们也只会破解 guest 机器

  • + 可以限制进程使用的 CPU 和内存

  • + 易于设置 - 只需创建 VM

  • - 更难将沙箱目录从主机“连接”到 guest

  • - 浪费额外的内存和 CPU 来管理 VM

运行低权限用户:

  • + 不浪费额外资源

  • + Sandbox 目录只是一个普通目录

  • >

    ?不能限制CPU和内存?

  • >

    ?不知道够不够安全

还有其他方法吗?

运行 Fedora Core 8 的服务器,用 Java 和 C++ 编写的“其他”代码

最佳答案

要限制 CPU 和内存,您需要为进程组设置限制(POSIX 资源限制仅适用于单个进程)。您可以使用 cgroup 执行此操作。

例如,通过挂载内存cgroups文件系统来限制内存启动:

# mount cgroup -t cgroup -o memory/cgroups/memory

然后,为每个组创建一个新的子目录,例如

# mkdir /cgroups/memory/my-users

将你想要约束的进程(这里PID为“1234”的进程)放到这个组中:

# cd /cgroups/memory/my-users
# echo 1234 >> tasks

设置组的总内存限制:

# echo 1000000 > memory.limit_in_bytes

如果组中的进程派生子进程,它们也将在组中。

上述组设置常驻内存限制(即受限进程将开始交换而不是使用更多内存)。其他 cgroup 让您可以限制其他事情,例如 CPU 时间。

您可以将您的服务器进程放入该组(以便整个系统及其所有用户都在限制范围内)或让服务器将每个新 session 放入一个新组。

关于linux - 在我的服务器上运行其他人代码(沙盒)的安全方式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/792764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com