通过web控制Shell脚本
2017-12-14 10:42
357 查看
最近在做一些系统部署方案,需要做一个web的安装和控制系统,但是web的权限不足以调用root才有权限执行的脚本,网上找了很多方案,最后选择了一些来实现,发现好像现在系统有些变化,不能直接坐到文章说法的效果了,自己改良了一下。
首先创建一个C++的文件:runcmd.c
然后在系统中编译生成对应的命令:
runcmd需要赋特殊权限,u+s,否则后面也是无法执行。
另外新版本php中默认不打开安全模式,所以安全模式问题暂时不考虑,但是还是需要修改php的配置文件,主要是把调用shell脚本的方法打开,就是修改php.ini中disable_function,把system,exec,shell_exec这几个方法去掉,重启php即可。
后面就是编写php文件,代码很简单:
然后直接部署到服务器上,浏览器打开即可。
首先创建一个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.c chmod 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, 执行命令 ?>
然后直接部署到服务器上,浏览器打开即可。
相关文章推荐
- 简单的web控制shell脚本方法
- centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
- 通过Git WebHooks+脚本实现自动更新发布代码之shell脚本
- centos6.5环境通过shell脚本备份php的web及mysql数据库并做远程备份容灾
- 通过Git WebHooks+脚本实现自动更新发布代码之shell脚本
- 通过Git WebHooks+脚本实现自动更新发布代码之shell脚本
- 通过Git WebHooks+脚本实现自动更新发布代码之Shell脚本(二)
- 通过web php 执行shell脚本,获取的结果与直接在命令行下获取的结果不同。
- 通过Shell数组传参控制Sql脚本串并行调度一例
- 基于Django的控制(WEB服务器SHELL脚本的运行)指南
- curl 命令,curl监控网页shell脚本,curl多进程实现并控制进程数
- 通过Shell脚本读取properties文件中的参数时遇到\r换行符的问题
- shell脚本函数:控制颜色、定位、居中显示的代码
- HUE通过oozie工作流执行shell脚本
- Shell脚本的条件控制和循环语句
- shell脚本中使用自定义命令之二---通过source实现
- Shell脚本编程实战之:Web页面更新脚本
- Shell脚本学习笔记(八)--进程管理和工作控制
- 通过FTP自动上传文件到目标机的shell脚本
- Linux通过Shell脚本命令修改密码的两种方式