【问题标题】:Need weird advice in how to allow a Linux process ONLY create and use a single pipe需要关于如何允许 Linux 进程仅创建和使用单个管道的奇怪建议
【发布时间】:2012-04-10 07:34:34
【问题描述】:

喂。

我正在进行一项实验,允许用户使用我 1% 的 CPU。这就像你自己的网络服务器;但是一个大的动态远程执行框架(不要问这个),我不希望用户使用 API 函数,如创建文件、没有套接字、没有线程、没有控制台输出,什么都没有。

更新1:人们会向我发送二进制文件,所以interrupt 0x80 是可能的。因此...内核?

我需要限制一个进程,使它只能使用一个单管道。通过该管道,该过程将使用我自己封装和控制的 API。

这可能吗?我想像一个 Linux 内核模块。

限制 RAM 和 CPU 的问题在这里不是主要问题,因为在 google 上有一些东西。

提前致谢!

【问题讨论】:

  • 你会编译程序,还是用户会向你发送二进制文件?
  • 听起来你在找ptrace
  • 您可以使用 chroot 来限制对文件系统其余部分的访问。但是要限制诸如套接字创建之类的东西,您可能必须推出自己的 libc 或至少包装 libc/glibc 以施加限制。
  • @GregHewgill 你能写一个答案吗?看起来是我想要的。维基百科声明它可以监控它做了什么。也可以限制吗?
  • 嗯,也许打开管道然后启用 seccomp?

标签: linux permissions linux-kernel pipe restriction


【解决方案1】:

ptrace 工具将允许您的程序观察和控制另一个进程的操作。使用PTRACE_SYSCALL 标志,您可以在每个 系统调用之前停止子进程,并决定是否要允许该系统调用继续进行。

【讨论】:

  • 我必须检查每条该死的指令,还是会自动触发?
  • 我不知道你所说的“该死的指令”是什么意思。 ptrace() 有很多可能的选项,我建议阅读文档。有单步选项以及运行到下一个系统调用的选项。
【解决方案2】:

您可能想看看 Google 使用他们的 Native Client 技术和 seccomp 沙箱做了什么。 Native Client (NaCl) 旨在让网站提供的 x86 二进制文件在用户的本地浏览器中运行。恶意二进制文件的问题与您面临的问题相似,因此大多数技术/研究可能直接适用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多