通过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, 执行命令?>
然后直接部署到服务器上,浏览器打开即可。
阅读全文
0 0
- 通过web控制Shell脚本
- 判断php脚本是通过shell访问还是web访问
- shell脚本超时控制
- shell脚本超时控制
- shell脚本超时控制
- shell脚本逻辑控制
- shell 脚本并发控制
- Shell脚本控制语句
- shell脚本流程控制
- 通过shell脚本打包
- 通过Shell数组传参控制Sql脚本串并行调度一例
- Shell脚本结构流程控制
- Shell脚本的控制语句
- shell脚本和流程控制
- 通过java执行shell脚本
- 通过脚本控制播放音频
- shell系列------控制另一个shell的脚本
- Shell脚本之场景控制脚本
- Mariadb Cluster+Haproxy+keepalived 集群的详细安装与配置
- 技术分享连载(八十七)
- [LeetCode] 310. Minimum Height Trees
- 数据结构大总结
- Eclipse利用maven插件打jar包或者war包
- 通过web控制Shell脚本
- 第八周 【项目3
- HtmlUnit 爬虫简单案例——模拟登陆CSDN
- quartz工厂
- CY6936智能家居安防系统系统应用
- 学习笔记-bootstrap(1)
- java同步
- 1051. Pop Sequence (25)-PAT甲级真题
- 策略模式,模板模式,工厂模式