ubuntu下apache2的cgi-bin中以root权限运行程序
一,安装apache2
sudo apt-get install apache2
二.配置cgi-bin
sudo chmod 777 /var/www/html
sudo vim /etc/apache2/sites-enabled/000-default
#加入
DocumentRoot /var/www/html/
ScriptAlias /cgi-bin/ /var/www/html/cgi-bin/
#:wq 保存并退出
sudo a2enmod cgi
sudo /etc/init.d/apache2 restart
三.测试
test.c
#include <stdio.h>
#include <stdio.h> //getenv
int main(void){
printf("Content-Type: text/html\n\n");
printf("GET:%s\n",getenv("QUERY_STRING"));
return 0;
}
gcc -o test test.c
mv test /var/www/html/cgi-bin/test
访问http://localhost/cgi-bin/test?a=b
得到GET:a=b
四.以root身份运行的方法
1.准备要用到的源文件
visit.c 浏览器访问入口
#include <stdio.h>
#include <stdlib.h>
int main(int argc,char* argv[])
{
system("./run_root ./run.sh");
return 0;
}
run_root.c 用来获取root权限
#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <unistd.h>
int main(int argc,char* argv[])
{
if(argc>1){
uid_t uid ,euid;
uid = getuid();
euid = geteuid();
if(setreuid(euid, uid)) //交换这两个id以获取root权限
perror("setreuid");
system(argv[1]); //执行一个需root权限运行的脚本,我尝试在这里执行应用程序,结果失败了,不知道是操作失误还是其它原因,还望指教
}
return 0;
}
run.sh
#!/bin/bash
#这里运行需要root权限的程序
mkdir /home/hello
2.编译
gcc -o visit visit.c
sudo gcc -o run_root run_root.c
sudo chmod u+s run_root
chmod +x run.sh
sudo mv run_root /var/www/html/cgi-bin/run_root
sudo mv visit /var/www/html/cgi-bin/visit
sudo mv run.sh /var/www/html/cgi-bin/run.sh
结果
inu1255@inu1255-pc:/var/www/html/cgi-bin$
-rwxrwxr-x 1 inu1255 inu1255 7293 12月 9 23:42 visit*
-rwxr-xr-x 1 inu1255 inu1255 60 12月 9 23:59 run.sh*
-rwsr-xr-x 1 root root 7452 12月 9 23:35 run_root*
3.测试
访问 http://localhost/cgi-bin/visit
ls /home
发现多了一个hello文件夹
ubuntu下apache2的cgi-bin中以root权限运行程序的更多相关文章
- Ubuntu下如何将普通用户提升到root权限
在ubuntu的系统操作中,我们经常会使用到系统权限的,因为权限不足,导致在一些操作当中非常麻烦.要获取权限,最长使用的方法就是使用sudo指令,但是来回使用还是比较麻烦,有没有直接提升我们的用户权限 ...
- [Linux]Ubuntu下如何将普通用户提升到root权限
转至:http://jingyan.baidu.com/album/6181c3e0780131152ef153ff.html?picindex=0&qq-pf-to=pcqq.c2c 在u ...
- 在PyCharm中以root权限运行和调试python代码
python中有的代码可能需要su权限,如 import os os.mkdir('/media/xxx/disk_a') 如果在交互式环境中使用,需要以sudo的方式启动python.而在PyCha ...
- ubuntu下Apache2配置
Ubuntu下Apache2的CGI简单配置:http://blog.csdn.net/a623891391/article/details/47170355 Ubuntu Apache的安装和配置以 ...
- Ubuntu下apache2安装配置(内含数字证书配置)
Ubuntu下apache2安装配置(内含数字证书配置)安装命令:sudo apt-get updatesudo apt-get install apache2 配置1.查看apache2安装目录命令 ...
- ubuntu下关于profile和bashrc中环境变量的理解(转)
ubuntu下关于profile和bashrc中环境变量的理解(转) (0) 写在前面 有些名词可能需要解释一下.(也可以先不看这一节,在后面看到有疑惑再上来看相关解释) $PS1和交互式运行(r ...
- Ubuntu 下 Apache2 和 PHP 服务器环境配置
Ubuntu 下 Apache2 和 PHP 服务器环境配置 1.简介 本文主要是 Ubuntu 下 Apache2 和 PHP 服务器环境配置方法,同样适用于 Debian 系统:Ubuntu 20 ...
- Ubuntu下如何修改文件或者文件夹的权限
Ubuntu下如何修改文件或者文件夹的权限------chmod的亲身测试 具体原理如下: Linux系统下如何修改文档及文件夹(含子文件夹)权限,我们来看一下. 一 介 ...
- android中获取root权限的方法以及原理(转)
一. 概述 本文介绍了android中获取root权限的方法以及原理,让大家对android 玩家中常说的“越狱”有一个更深层次的认识. 二. Root 的介绍 1. Root 的目的 可以让我们拥有 ...
随机推荐
- nc命令用法
root@10.1.1.43:~# nc -h[v1.10-38]connect to somewhere: nc [-options] hostname port[s] [ports] ... li ...
- HDU 4089 Activation:概率dp + 迭代【手动消元】
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4089 题意: 有n个人在排队激活游戏,Tomato排在第m个. 每次队列中的第一个人去激活游戏,有可能 ...
- 聊聊js跨域
推荐先读一下这篇文章: https://segmentfault.com/a/1190000012469713http://www.dailichun.com/2017/03/22/ajaxCross ...
- (转)Java字符串转日期或日期转字符串
文章中,用的API是SimpleDateFormat,它是属于java.text.SimpleDateFormat,所以请记得import进 来! 用法: SimpleDateFormat sdf = ...
- STL stl_alloc.h
# // Comment By: 凝霜 # // E-mail: mdl2009@vip.qq.com # // Blog: http://blog.csdn.net/mdl13412 # # // ...
- 打包AAC码流到FLV文件
AAC编码后数据打包到FLV很简单. 1. FLV音频Tag格式 字节位置 意义0x08, ...
- bzoj 4199: [Noi2015]品酒大会 后缀树
题目大意: 给定一个长为n的字符串,每个下标有一个权\(w_i\),定义下标\(i,j\)是r相似的仅当\(r \leq LCP(suf(i),suf(j))\)且这个相似的权为\(w_i,w_j\) ...
- 研华 RISC超低功耗3.5”单板电脑
产品简介: 这是一款搭载TI Sitara AM3358 Cortex-A8 1GHz高性能处理器的RISC 3.5”单板电脑.RSB-4221是一款稳定可靠.性能强大的低功耗平台,专为各种需要丰富I ...
- stm32 奇怪的位赋值问题 出错了
转载请注明出处:http://blog.csdn.net/qq_26093511/article/category/6094215 1.在51单片机里 ,下面这两种操作方法都是一样的,没有什么问题! ...
- LAMP 1.6 Discuz安装
1.下载 ...