通过web控制Shell脚本

来源:互联网 发布:淘宝虚拟物品手动发货 编辑:程序博客网 时间:2024/05/23 20:47

最近在做一些系统部署方案,需要做一个web的安装和控制系统,但是web的权限不足以调用root才有权限执行的脚本,网上找了很多方案,最后选择了一些来实现,发现好像现在系统有些变化,不能直接坐到文章说法的效果了,自己改良了一下。
首先创建一个C++的文件:runcmd.c

#include<unistd.h>#include<sys/types.h>#include<stdlib.h>#include<string>#include<exception>#include<iostream>using namespace std;int main(int ac,char **argv)         // 获取命令参数{ string get("su - root -c '");       //(1)命令首先执行使用root权限执行传进命令,不做这个处理的话,还是无法执行 for(int i=1;i<ac;i++){  string temp(argv[i]);  get+=" ";  get+=temp; } get+="'"; string cmd=get;    //命令字符串  setuid(0);  //将当前用户的uid设置为0 (root用户的uid为0),使其具有root权限,同时需要用(1)的步骤才能执行,否则web还是无法执行 system(cmd.c_str());          //执行命令}

然后在系统中编译生成对应的命令:

g++ -o runcmd -Wall runcmd.cchmod u+s runcmd

runcmd需要赋特殊权限,u+s,否则后面也是无法执行。

另外新版本php中默认不打开安全模式,所以安全模式问题暂时不考虑,但是还是需要修改php的配置文件,主要是把调用shell脚本的方法打开,就是修改php.ini中disable_function,把system,exec,shell_exec这几个方法去掉,重启php即可。

后面就是编写php文件,代码很简单:

<?php $cmdstr="iptables -L";system("/workdata/www/default/runcmd $cmdstr");   //调用cmd, 执行命令?>

然后直接部署到服务器上,浏览器打开即可。

原创粉丝点击