我可以在没有 root 的情况下限制进程对指定文件和标准输出的访问吗?

我可以在没有 root 的情况下限制进程对指定文件和标准输出的访问吗?

我想设置一个服务器供学生上传C代码。服务器编译 C 代码,运行二进制文件并向学生显示输出。

现在我有安全问题。学生可以上传任何代码,但我希望他们只能访问 2 个指定文件(1 个用于读取,1 个用于写入fopen)和标准输出。我不希望他们访问互联网或系统上的任何其他文件。

我的服务器是容器化的Linux,并且我没有root。

我考虑过这些解决方案:

  1. chroot或者 firejail。 (我没有服务器的root。它是容器化的,不允许设置euid)

  2. 使用某些gcc选项、.h文件或 C 库限制。 (我对编译知之甚少。理论上人们可以用 C 做任何事情而不使用任何头文件或库)

  3. 使用类似strace或 的东西ptrace来监视进程并在它想做我不希望它做的事情时终止它。

可以这样做吗?

相关内容