如何在Linux中为php用户“nobody”分配特定权限?

如何在Linux中为php用户“nobody”分配特定权限?

我想为 c 程序制作一个在线评判器。我捕获了文本区域中的用户输入并从中创建了 .c 文件。现在它希望 php 运行 linux 命令“gcc code.c

我这样做了

$cmd=gcc -std=c99 code.c -g -Wall

$last=exec($cmd,$out,$status);

按照 stackoverflow 的建议。但是这个命令不起作用。它返回状态 1。但是其他 linux 命令(如 date、pwd 等)工作正常。

我怀疑的问题是whoami命令中说的是“nobody”。现在,这个“nobody”可能没有权限运行 gcc。所以,请告诉我如何让它工作或者如何为用户“nobody”分配权限?

我知道这非常不安全。但就这样吧。请给出解决方案以使命令正常工作。

答案1


  1. 你不使用nobodynobody永远不应该用于任何事情。 nobody是一个非人。
    使用nobody做事情意味着授予nobody权限。 一旦你这样做了,你就会开始走下坡路,最终你会nobody成为该组的成员wheelsu成为 root 用户,因为这更容易,然后你的系统被外星黑客攻陷,整个星球都沦陷了,它都是你的错


  2. 你不能直接拿别人的代码去执行。
    你甚至不能拿你自己的代码并执行它。
    执行不受信任的用户输入是糟糕且错误
    如果您想做到这一点,您可以启动完全隔离的虚拟机,在完全隔离的沙箱中编译和执行程序,无需网络连接,也无法访问外部机器。

如果 Stack Overflow 上有人暗示这是好主意这个人是个白痴。这就是我们不让开发人员管理生产环境的原因。

答案2

停下来,不要过去,不要收集网络疱疹。

请你,请你去调查一下Docker并了解为什么这样的方法是解决这个问题的更好的方法。

相关内容