限制在编译时访问C ++库的系统功能

时间:2018-09-13 20:44:28

标签: c++ linux gcc linkage

我正在为C ++应用程序实现某种插件系统。我称它为易失性。该插件是一个共享库*.so

要求

不允许任何系统呼叫。

问题

自从应用程序加载SO插件以来,它将继承所有权限和访问。我们不信任插件。

想法

从给定的C ++插件源代码中编译带有特殊GCC / CLang标志的SO,例如--do-not-link-filesystem--do-not-link-pthread。因此,如果该代码尝试访问系统资源,它将在编译时失败。这样可以提供最好的保修。
插件可以调用应用程序提供的接口。
STL <vector><algorithm><boost/template-only-headers>应该仍然可用。

想法2

运行ApplicationHelper以在受限制的容器中加载Plugin.so或/和以具有受限权限的用户身份运行。 看起来很难

问题

  • 是否可以实现想法1 –在编译时限制访问?
  • 请告诉我们如何在linux(尤其是Ubuntu)中实现想法2。

0 个答案:

没有答案