我可以将用 C(使用 GCC)创建的二进制文件放入 Linux 沙盒中并方便用户使用吗?

我可以将用 C(使用 GCC)创建的二进制文件放入 Linux 沙盒中并方便用户使用吗?

我已经编译了一个二进制文件,想要分发给其他人。

它是闭源的,但我想向二进制用户保证,它不可能访问互联网、麦克风、打印机等。它也不应该能够读取/写入文件系统上的文件/目录,除非他们明确向该程序提供对该文件/目录的访问权限。

除了告诉用户使用 SELinux 或 AppArmor 之类的东西之外,是否还有更用户友好的方式可以做到这一点?在这些方法中,用户必须做一些特殊的事情才能运行二进制文件(而不是简单的./program)?

答案1

为了对您的二进制文件有信心,用户需要使用受信任的工具来限制它。您与二进制文件捆绑在一起的任何沙盒工具都应被视为与二进制文件本身一样受信任(不可信)。

您可以提供一个可读的安装脚本,用于创建适当的chroot或 AppArmor 配置。这样,您的用户将能够自己审核脚本,并查看您的二进制文件是否正确经过沙盒处理。

答案2

正如@Dmitry所说,如果应用程序本身是闭源的,那么你需要展示用户至少需要确保应用程序处于沙盒状态,以便他们可以检查甚至更改沙盒方式(以适应其特定的安全设置)。除此之外chroot,应用程序还应以其自己的用户身份运行(这可以通过对二进制文件进行 setuid 来实现,这对用户来说是透明的),并具有适当的访问限制。对于针对各种硬件(麦克风、网络等)的沙盒,任何不能通过用户权限限制的部分,至少需要 lxc 或虚拟机。这使事情变得更加复杂。

相关内容