我想为c程序做一个在线评判。 我在textarea中捕获用户input,并从中创build.c文件。 现在它想让PHP运行linux命令`gcc code.c
我做了
$cmd=gcc -std=c99 code.c -g -Wall $last=exec($cmd,$out,$status);
如在stackoverflowbuild议。 但是这个命令不起作用。 它返回状态1.但其他Linux命令,如date,密码等工作正常。
我怀疑的问题是whoami命令说“没有人”。 现在,这个“nobody”可能没有权限运行gcc。 那么,请告诉我如何使其工作或如何分配权限给用户“nobody”?
我知道这是非常不安全的。 但是,让它成为。 请给出解决scheme,使命令工作。
没有
你不使用nobody 。 nobody都不应该被用于任何事情。 nobody是无人的。
使用nobody做事是指授予nobody权限。 一旦你这样做了,你就开始滑下坡路,最终结束的时候, nobody是wheel组的成员,因为它更容易,然后你的系统被外星人的空间黑客摧毁,整个星球就会掉落这都是你的错 。
没有
你不只是采取其他人的代码,并执行它。
你甚至不用自己的代码并执行它。
执行不可信的用户input是错误的和错误的 。
如果你想做到这一点,你可以旋转完全隔离的虚拟机,在完全隔离的沙箱中编译和执行程序,而不需要networking连接,也无法访问外部机器。
如果Stack Overflow上的某个人暗示这是以任何方式塑造或形成一个好主意 ,那么这个人就是白痴。 这就是为什么我们不让开发人员pipe理生产环境。
停下来,不要过去,不要收集互联网疱疹。
请拜托调查Docker ,了解为什么类似这样的问题是更好的解决scheme。