我创建了一个Web应用程序,用户可以在浏览器中运行Java代码。
我正在使用chroot
在Web服务器中执行用户提交的代码。
在chroot
脚本中我正在安装然后卸载一些必需的目录。
这通常工作得非常好,但当我解雇连续执行请求时,如
20-30个请求,然后对于某些响应,我收到此消息/bin/su: user XXX does not exist
其中 XXX 是Linux系统的用户名,我将挂载所需的目录。
对于其他人,我得到了预期的输出结果。
我担心的是“在Linux框中反复执行mount
和unmount
是否有任何副作用?
或者Linux中是否有任何设置可以支持此配置?
答案 0 :(得分:0)
要使用/bin/su
,您需要获得/etc/passwd
提供的用户信息。您是否已挂载该目录或(正如我所建议的)将其复制到新根目录中的/etc/
?
关于安装问题,是的,安装和卸载可能需要一些时间,并且不能保证是即时的(尤其是如果挂载的文件系统上的某些内容仍处于活动状态,卸载可能会明显失败)。所以也许你应该检查unmount是否失败并在那种情况下重试。
答案 1 :(得分:0)
感谢您的回复......是的,你是绝对正确的Alfe!这是连续安装/卸载的问题。我通过SSH登录到我的网络服务器检查了这一点。当我重复执行20-30个程序命令(用分号分隔)时,我在窗口上按顺序得到了所需的输出。然后我打开另一个SSH窗口,然后我再次从该窗口执行10个命令,从前一个窗口执行20个命令。当我看到输出然后在两个窗口中的一些命令时,我得到了“/ bin / bash用户XXX不存在”的消息。所以一个结论是,当我同时发出Web请求时,命令的执行(chroot / unchroot)不是同步的。这就是我收到这条消息的原因。我在Linux上不是很好。我不知道如何解决这个问题。