我期待开发一个远程系统管理Web应用程序(例如Webmin).显然,我需要调用
shell命令来执行root或其他特定的非nobody用户发出的命令.
这项任务的一般准则是什么?
我现在想到的唯一解决方案是在特殊端口上运行Web服务器,该端口只能由本地和VPN连接的用户访问(通过防火墙).但也许有一些特殊的技巧可以保护这样的应用程序,即使它暴露在公共网络上?
解决方法
由于我们讨论的是用于控制本机任务的Web应用程序,因此您需要考虑几个方面(至少对于
Java,但通常是针对每个精心设计的解决方案):
>使用异步模型执行本机任务,因为其中一些可能需要更长时间,并且在浏览器中,用户不知道机器或互联网是否有问题,或者其他什么.
>不要直接使用Java Runtime #exec()导致很容易让事情无法正常工作或出错,或者在不同的机器上使用不同的代码,或者至少小心使用它:请参阅JavaWorld article关于可能的陷阱.>如果可以将应用程序分为两部分:webapplication和执行任务的“无头代理”(并与Web应用程序安全地通信).这样,通过一个Web应用程序,您可以控制多台计算机(仅安装了“代理”),当计算机出现问题时,Web应用程序仍然具有响应性,并可能启动所需的恢复步骤.>当在同一台机器上运行时(webapplication和带有可执行命令的代理程序),如果应用程序“自行搜索”,则需要“备份计划”,从而影响您对计算机的访问.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。