在沙箱中从 PHP 运行 Java 程序
我有一个小问题:我们必须运行Java程序,部分代码将由用户上传。 所以我想知道运行它们的最佳方式是什么?我知道两种可能的方法,
exec("javac Usercode.class")
然后用exec("java Main")
运行整个过程,但我尝试了 < code>exec() 并且它不起作用。也许是因为http不是root?但我不知道具体原因。- http://php-java-bridge.sourceforge.net/pjb/ ?
有什么建议吗?
另一个问题是,如何在沙箱中运行这些程序。我们有一个 Debian 服务器,所以在有限的时间内执行命令没有问题,但是有没有可能在沙箱中运行整个代码?
I have a little question: we have to run Java programs and parts of the code will be uploaded by the users.
So I want to know what's the best way to run them? I know 2 possible ways,
exec("javac Usercode.class")
and then run the whole thing withexec("java Main")
, but I tried it withexec()
and it don't work. maybe because the http is not root? But I don't know exactly why.- http://php-java-bridge.sourceforge.net/pjb/ ?
Any suggestions?
And another question is, how can I run these programs in a sandbox. we have a Debian server and so it's no problem to execute the command with a limited time, but is there a possible way to run the whole code in a sandbox?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
沙箱的想法:
使用 Debian 的 schroot 命令在 chroot 中运行。防止他们访问 chroot 之外的文件,但不能防止他们执行打开套接字等操作。
每个用户都有自己的 Linux 用户名,并根据该用户名进行验证。然后,命令将在适当的用户名下运行(例如,通过使用 sudo 或 set-uid 可执行文件)。
维护虚拟服务器池 - 昂贵且复杂,但提供最佳隔离。
Ideas for sandboxing:
Run in a chroot using e.g. Debian's schroot command. Protects against them accessing files outside of the chroot but not against them doing things like opening sockets etc.
Each user has their own Linux username against which they validate. Commands will then be run under the appropriate username (e.g. by using sudo or a set-uid executable).
Maintain a pool of virtual servers - expensive and complicated but gives best isolation.