Linux:是否有可能沙箱共享库代码

我有一个需要通过加载共享库来扩展的进程。 有没有一种方法可以在沙箱环境(不是外部进程)中运行共享库代码,这样,如果发生段错误,它不会使进程崩溃,并且限制了可以分配多less内存,可以使用的CPU周期等等

我不认为有一个干净的方法来做到这一点。 你可以尝试:

  • 捕捉段错误并从中恢复(棘手的,架构特定的,但可行)
  • 替换库的malloc / calloc调用版本,将计算分配的空间( 如何用代码替换默认的malloc )
  • 或者使用malloc钩子( http://www.gnu.org/software/libc/manual/html_node/Hooks-for-Malloc.html
  • CPU周期是整个过程的考虑因素,所以我不认为你有任何方法可以得到只是图书馆的信息。 只有可行的选项 – manuallty衡量您的代码所做的每个库调用的tick。

本质上 – 这将是有趣的尝试,但我建议你去单独的过程方法,并使用RPC,配额,ulimits等

不。如果共享库段错误,你的进程会segfault(进程正在执行库代码)。 如果将其作为外部进程运行并使用RPC机制,那么就会崩溃,但是当程序不可用(需要重新启动)时,程序需要检测。 像chroot这样的工具可以处理沙箱,但不是可执行文件链接到的各个库。