在沙箱中从PHP运行Java程序

时间:2011-08-02 12:45:01

标签: java php exec sandbox

我有一个小问题:我们必须运行Java程序,部分代码将由用户上传。 所以我想知道运行它们的最佳方法是什么?我知道两种可能的方法,

  1. exec("javac Usercode.class")然后使用exec("java Main")运行整个事情,但我尝试使用exec()并且它不起作用。也许是因为http不是root?但我不知道究竟是为什么。
  2. http://php-java-bridge.sourceforge.net/pjb/
  3. 有什么建议吗?

    另一个问题是,如何在沙盒中运行这些程序。我们有一个Debian服务器,所以在有限的时间内执行命令没问题,但有没有办法在沙盒中运行整个代码?

1 个答案:

答案 0 :(得分:2)

沙盒的想法:

  • 使用例如chroot在chroot中运行Debian的schroot命令。防止他们访问chroot之外的文件,但不要打开像打开套接字等的东西。

  • 每个用户都有自己的Linux用户名,并对其进行验证。然后命令将在适当的用户名下运行(例如,使用sudo或set-uid可执行文件)。

  • 维护一个虚拟服务器池 - 昂贵且复杂,但提供最佳隔离。