在我的服务器上运行其他人代码(沙箱)的安全方法?

2024-04-11

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

最好的方法是什么?

运行VMware/Virtualbox:

  • + 我猜它已经尽可能安全了。即使有人设法“破解”,他们也只能破解访客计算机

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

  • + 易于设置 - 只需创建虚拟机

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

  • - 浪费额外的内存和CPU来管理虚拟机

低权限用户运行:

  • + 不浪费额外资源

  • + 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 时间。

您可以将服务器进程放入组中(以便整个系统及其所有用户都受到限制),或者让服务器将每个新会话放入新组中。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在我的服务器上运行其他人代码(沙箱)的安全方法? 的相关文章

  • .NET 声明式安全性:为什么 SecurityAction.Deny 无法使用?

    我已经搞乱了大约一天半的时间 现在正在筛选 NET Reflector 和 MSDN 文档 但无法弄清楚任何事情 在 NET 框架中 您可以通过标记如下方法来要求当前的委托人属于一个能够执行方法的角色 PrincipalPermission
  • 如何修改s_client的代码?

    我正在玩apps s client c in the openssl源代码 我想进行一些更改并运行它 但是在保存文件并执行操作后 我的更改没有得到反映make all or a make 例如 我改变了sc usage函数为此 BIO pr
  • 访问 Linux 线程(pthreads)的本地堆栈

    我目前正在实现一个使用多线程但对总内存消耗有要求的应用程序 我希望有一个主线程执行 I O 并有几个工作线程执行计算 目前 我在主堆栈上有几个可供工作人员访问的数据结构 我使用 OpenMP 进行工作分配 由于主 工作者模式不能很好地与 O
  • 当存在点和下划线时,使用 sed 搜索并替换

    我该如何更换foo with foo sed 只需运行 sed s foo foo g file php 不起作用 逃离 sed s foo foo g file php Example cat test txt foo bar sed s
  • 如何使用 tmuxinator 在 tmux 中拆分水平窗格内的两个垂直窗格

    目前我的 tmuxinator yml 文件中有这个 windows editor layout main horizontal panes vim server rails s 这给了我两个窗口 一个用于编辑器 另一个用于服务器 在编辑器
  • 在Linux伪终端中执行从一个终端发送到另一个终端的字符串

    假设我有一个终端 其中 tty 的输出是 dev pts 2 我想从另一个终端向第一个终端发送命令并执行它 使用 echo ls gt dev pts 2 仅在第一个终端中打印 ls 有没有办法执行字符串 不 终端不执行命令 它们只是数据的
  • Snap-confine 具有提升的权限,并且不受限制,但应该受到限制。拒绝继续避免权限升级攻击

    我已经使用 snap 一段时间了 但最近升级后 当我尝试打开任何应用程序时 出现此错误 Snap confine has elevated permissions and is not confined but should be Refu
  • bash双括号问题

    我对 bash 脚本非常陌生 在使用双括号时遇到了问题 我似乎无法让它们在 Ubuntu Server 11 10 中工作 我的下面的脚本位于 if test sh 中 bin bash if 14 14 then echo FOO fi
  • 在键盘热插拔上加载模块

    我正在尝试学习如何为 Linux 系统编写模块和驱动程序 类似于this https unix stackexchange com questions 120839 usb kernel module does not load on de
  • 无法为 Python 3.4 创建工作虚拟环境

    I 安装Python 3 4 2 https docs python org 3 using unix html building python和我的 Linux Mint 17 1 中的 Virtualenv 12 0 5 然后我尝试创建
  • 原生 Linux 应用程序可像 ResHacker 一样编辑 Win32 PE

    我想运行自动修改 dll服务 用户提交特定的 dll 我在服务器上修改它 然后用户可以下载 dll的修改版本 是否有任何本机 Linux 应用程序提供常见的 Win32 PE 修改功能 例如图标 字符串 加速器 对话等 至少提供命令行或脚本
  • 在 Ubuntu 上纯粹通过 bash 脚本安装 mysql 5.7

    我想要一个无需任何手动输入即可安装 MySQL 5 7 实例的 bash 脚本 我正在关注数字海洋教程 https www digitalocean com community tutorials how to install mysql
  • 将 stdout 作为命令行 util 的文件名传递?

    我正在使用一个命令行实用程序 该实用程序需要传递文件名以将输出写入 例如 foo o output txt 它唯一写入的东西stdout是一条消息 表明它运行成功 我希望能够通过管道传输写入的所有内容output txt到另一个命令行实用程
  • 是否有可能通过 mmap 匿名内存“打孔”?

    考虑一个使用大量大致页面大小的内存区域 例如 64 kB 左右 的程序 每个内存区域的寿命都相当短暂 在我的特定情况下 这些是绿色线程的替代堆栈 如何最好地分配这些区域 以便一旦该区域不再使用 它 们的页面可以返回到内核 天真的解决方案显然
  • Codeigniter - 检查用户是否已登录并存在(它是真实用户)

    我正在尝试在用户登录我的网站时为他们设置会话数据 因此 如果用户存在于数据库中 我将设置一个会话数据 例如 this gt session gt set userdata user exists 1 现在 每次我想检查用户是否存在并已登录时
  • 编写多个mysql脚本

    是否可以在复合脚本中包含其他 mysql 脚本 理想情况下 我不想为包含的脚本创建存储过程 对于较大的项目 我想分层维护几个较小的脚本 然后根据需要组合它们 但现在 我很乐意学习如何包含其他脚本 source是一个内置命令 您可以在 MyS
  • 远程linux服务器到远程linux服务器大型稀疏文件复制 - 如何?

    我有两台 CentOS 5 4 服务器 每台服务器上都安装了 VMware Server 假设我始终对 vmware 虚拟机使用稀疏文件 将虚拟机文件从一台服务器复制到另一台服务器的最可靠 最快速的方法是什么 虚拟机的文件复制起来很痛苦 因
  • Linux 文本文件操作

    我有一个格式的文件 a href a href a href a href 我需要选择 之后但 之前的文本 并将其打印在行尾 添加后 例如 a href http www wowhead com search Su a a a a a
  • 如何在 Linux x86_64 上模拟 iret

    我正在编写一个基于 Intel VT 的调试器 由于当 NMI Exiting 1 时 iret 指令在 vmx guest 中的性能发生了变化 所以我应该自己处理vmx主机中的NMI 否则 guest会出现nmi可重入错误 我查了英特尔手
  • Windows 与 Linux 文本文件读取

    问题是 我最近从 Windows 切换到 Ubuntu 我的一些用于分析数据文件的 python 脚本给了我错误 我不确定如何正确解决 我当前仪器的数据文件输出如下 Header 有关仪器等的各种信息 Data 状态 代码 温度 字段等 0

随机推荐

  • 如何将我的 React-App 部署到 github 用户页面

    我一整天都在努力将我的 React 应用程序部署到 Github 用户页面 例如https mygitname github io http 而不是 Github 页面 例如https mygitname github com mysite
  • 从动态复选框列表中获取值

    See my html
  • 错误 TypeError:无法读取 Angular 7 拖放中未定义的属性“长度”

    我只是想在 Angular 7 的帮助下创建拖放组件DragDropModule from angular cdk drag drop 但我总是收到如下错误 HomeComponent html 14 ERROR TypeError Can
  • 如何创建带有括号和参数的自定义 jquery 函数

    我知道我的问题需要更多澄清 所以让我解释一下 当我访问 fn extend 的 jquery api 文档时 我个人对创建如下所示的自定义 jquery 函数是多么容易感到震惊 input type checkbox check 链接在这里
  • 如何使用react.js上传Excel工作表文件并将数据显示到表格

    我是 React JS 的新手 我正在尝试使用react js上传Excel工作表文件并将数据显示到表格中 我有 链接中的部分参考 但并不完整 请帮忙解决一下 从 Excel 导入数据并在 React 组件中显示 https stackov
  • MVC 3 应用程序中的自定义 Http 处理程序

    我正在使用 Http 处理程序来本地化应用程序中使用的 javascript 文件 看 在 ASP NET 中本地化 JavaScript 文件中的文本 http madskristensen net post Localize text
  • Gulp - 处理多个主题和文件夹

    我正在努力创造一个终极gulpfile我们可以在我们的大型网站之一上使用它 一个具有多个主题 具体取决于您所在网站的部分 我试图让它只运行它需要运行的进程 而不是重新编译所有内容 让我准确地布局我想要实现的目标 文件夹结构 src mast
  • C# 反射:获取解决方案中的“所有”活动程序集?

    这是我的问题 我有 2 个项目 一个 常见 项目 其行为类似于具有各种支持代码的库 以及在许多调用中使用所述项目的实际程序 我们将这些项目称为 Common 和 Program 它们都在同一个解决方案中 在 Common 中 我有一个用于常
  • 使用我自己的 Laravel API 时如何遵循“不重复”原则?

    我正在开发一个 Laravel 4 应用程序 它将通过 JSON REST API 和 Web UI 对我的数据集提供相同的 CRUD 操作 看来 为了防止违反 DRY 原则 我的 UI 应该通过将所有请求从 UI 路由回 API 来使用我
  • 将 Rails/Unicorn/Nginx 容器连接到 MySQL 容器

    相关this https stackoverflow com questions 31735529 docker image from existing rails unicorn mysql app线程 我正在尝试创建 2 个容器 1 个
  • Service Fabric:找不到 EntryPoint Blah.exe

    我进行了一些项目重命名并更改了文件夹结构 现在我无法将服务结构应用程序部署到本地服务结构集群 Register ServiceFabricApplicationType 找不到 EntryPoint IdentityService exe
  • Selenium 代码不会终止

    以下代码不会终止 原因可能是什么 from selenium import webdriver from selenium webdriver common keys import Keys driver webdriver Firefox
  • Mod_Rewrite 规则冲突让我发疯

    我有一个 htaccess 如下 有些规则是冲突的 我需要以某种方式制定一个条件 这样他们就不会 RewriteEngine On RewriteRule search results template php L RewriteRule
  • 使用 Composer 安装 PEAR 扩展 HTTP_Request2

    我有一个composer json file name vendor Project description description text repositories type pear url http pear php net req
  • 在 gstreamer 中动态添加和删除 tee 队列

    我编写了gstreamer代码 用于同时进行摄像头直播和录制 我的管道看起来像这样 queue1 videosink v4l2src tee queue2 filesink 目前直播和文件录制正在协同工作 现在我需要启动只有一个队列的管道
  • 设置 NSWindow 焦点

    我有一个带有一个窗口和一个面板的应用程序 附加到该窗口 steps 停用我的应用程序 应用程序已打开 但没有焦点 单击面板上的按钮 面板现在处于焦点状态 但主窗口不是 如何从面板将焦点设置到主窗口 父窗口 Swift 5 版本的 BUDAx
  • 在自定义插件类中使用 Carbon Fields

    我有一个到目前为止还没有任何功能的插件 这是当前的结构
  • 木槌的基本用法。第一步

    我正在尝试使用Mallet实际上没有主题建模等方面的经验 我的目的是获得N的主题M我现在拥有的文档 用一个或多个主题对每个文档进行分类 文档 1 主题 1 文档 2 主题 2 可能还有主题 3 并用此结果对将来的新文档进行分类 我尝试使用b
  • 使用 Angular ui-router 有条件地导航到状态

    目前 我们有一个测试版的 投资组合 工具 用户登录主应用程序后 如果他们已获得测试版的访问权限 他们可以直接导航到投资组合工具 无需任何额外的登录 如果没有 他们应该被重定向到投资组合登录页面 状态称为portfolio login 他们可
  • 在我的服务器上运行其他人代码(沙箱)的安全方法?

    我想制作一个在本地运行其他人的代码的网络服务 当然 我想限制他们的代码对某个 沙箱 目录的访问 这样他们就无法连接到我服务器的其他部分 数据库 主网络服务器等 最好的方法是什么 运行VMware Virtualbox 我猜它已经尽可能安全了