如何在 Linux 上启动权限高度受限的进程?

发布于 2024-09-10 16:41:44 字数 622 浏览 5 评论 0原文

我想(从代码)启动一个具有高度受限权限的进程。

  • 可以保存文件,但只能保存在其自己的文件夹中,并且有配额限制。
  • 可以在配额内使用内存。
  • CPU 时间(包括它启动的任何子进程)受到配额限制。
  • 无法与任何其他进程通信,除了它自己的进程以及通过标准输入/输出与我的控制器程序的接口。
  • 无法与任何设备交互。
  • 网络上看不到任何其他内容。

(我正在构建一个网格式系统。启动的代码可能是敌对的。)

这是我到目前为止所得到的...... - 提前创建一些用户,grid00-grid99。根据配置为每一项分配磁盘/内存/CPU 配额。

要启动进程...

  • 选择一个未使用的 gridxx 用户。
  • 在用户的主文件夹中创建一个文件夹。
  • 该文件夹中的硬链接 /bin、/usr 等。
  • 在该文件夹中创建新的 /home/gridxx 和 /tmp 文件夹。
  • 复制程序文件。
  • 切换到gridxx用户。
  • chroot 到新文件夹。
  • 启动新流程。

我错过了什么吗?

非常感谢。

I'd like to (from code) launch a process with highly restricted privileges.

  • Can save files, but only in its own folder and limited to a quota.
  • Can use memory, within a quota.
  • CPU time (including any subprocesses it launches) is limited to a quota.
  • Can't talk with any other process except it's own and the interface to my controller program via stdin/out.
  • Can't interact with any devices.
  • Can't see anything else on the network.

(I'm building a grid-esque system. The launched code may be hostile.)

Here's what I've got so far...
- In advance, create some users, grid00-grid99. Give each one disk/memory/CPU quota as configured.

To launch a process...

  • Pick an unused gridxx user.
  • Make a folder inside the user's home folder.
  • Hard link /bin, /usr, etc in that folder.
  • Make a new /home/gridxx and /tmp folders in that folder.
  • Copy in the program files.
  • Switch to the gridxx user.
  • chroot to the new folder.
  • Launch the new process.

Have I missed anything?

Many thanks.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

一生独一 2024-09-17 16:41:44

标准资源使用限制(通过 ulimit)可以处理前三个,SELinux 可以处理其他三个。只需为应用程序创建一个新域,分配适当的权限,然后就可以走了(但不是它)。

The standard resource usage limits (via ulimit) can handle the first three, and SELinux can handle the other three. Simply create a new domain for the application, assign the proper permissions, and away you go (but not it).

瞄了个咪的 2024-09-17 16:41:44

听起来您正在寻找类似于 FreeBSD监狱 功能的东西。 (当然,这是针对 FreeBSD 的,但该页面包含指向 Linux 的类似技术的链接。)

It sounds like you're looking for something like the FreeBSD jail feature. (That's for FreeBSD of course, but that page has links to similar technologies for Linux.)

不可一世的女人 2024-09-17 16:41:44

您应该能够使用 ulimit、chroot、磁盘配额和防火墙来实现这一点。限制所有形式的“谈话”(IPC)是很困难的。最后您可能想要使用一组虚拟机。

You should be able to accomplish that with ulimit, chroot, disk quotas, and a firewall. Limiting all forms of "talking" (IPC) is hard. In the end you may want to go with a set of virtual machines.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文