繁体   English   中英

从网页在服务器上执行Shell脚本

[英]executing a shell script on a server from a web page

我在远程服务器上有一个程序,可将数据发布到数据库上。 该程序必须以root权限执行才能正常运行。 而且我必须从网页开始执行。 即,如果事件触发,则该脚本的执行应开始(现在将事件视为单击按钮)

我知道可以使用php或其他服务器端脚本语言来完成此操作,但是我被迫使用javascript或其他相关技术(例如AJAX,jquery等)。

我担心安全性,所以这是我计划的。

我将使用密钥对ssh进入服务器,然后有一个shell脚本,该脚本以root作为控制权并开始执行程序。

我不想解析或在我的网页上打印任何输出。 只需启动脚本即可完成工作。

有人可以帮我这个忙吗..

谢谢!

问题在于JavaScript不支持TCP / IP套接字,因此在JavaScript中这样做是不可能的。 但是,您可以使用AJAX Web套接字(例如WebShell和AnyTerm这样做)来完成此任务,并让服务器在本地处理和验证会话。

如果您绝对需要在客户端执行所有操作,则另一个选择是使用在用户浏览器中运行的Java小程序。 显然,此applet可以用作终端程序外壳,但是根据您的需要,您可以非常轻松地打开applet,进行身份验证,运行脚本,然后传递回确认信息,以确保脚本开始正常运行。

由于您不能以root用户身份登录到该框,因此需要设置一个可执行脚本,该脚本将以root用户身份运行,可以从以ssh身份登录的普通用户那里调用。 去做这个:

chown root可执行文件

chgrp根可执行文件

chmod 4755可执行文件

不幸的是,出于安全原因,可执行文件不能成为Shell脚本(无论如何在Linux下),因此您需要编写一个简短的C程序,其中包含许多system()调用。 编译此文件,您应该离开了。 当然,C程序可能像

system(“ ./ executable”);

但这无论如何都会在常规服务器上造成巨大的安全漏洞。 如果C程序采用参数进行替换,则需要验证这些参数,否则安全性可能会受到损害。 至少-如果任何参数包含嵌入式';',则不做任何事情检查并退出

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM