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 的目的 可以让我们拥有 ...
随机推荐
- screen&tmux快捷键
screen Key 快捷键 Action 动作 Notes 备注 Ctrl+a c new window 新窗口 Ctrl+a n next window 下一个窗口 I bind F12 to ...
- logstash的output插件
logstash 的output插件 nginx,logstash和redis在同一台机子上 yum -y install redis,vim /etc/redis.conf 设置bind 0.0.0 ...
- linux shell 编程(一)
脚本:命令的堆砌,按照实际需要结合命令流程控制机制实现的源程序 linux 内核只能识别 elf格式的文件(可执行的可链接的文件) 脚本的第一行写 #!/bin/bash 表示脚本解释器
- C++指向函数的指针
直接上代码: #include<iostream> #include<string> #include<vector> using namespace std; t ...
- Oracle学习笔记_05_分组函数
组函数:avg sum max min count group by having group by 增强:rollup cube grouping groupi ...
- c++的静态变量与静态函数
参考文献:静态成员函数和静态成员 一.静态变量: 1.静态变量属于类的变量,为类共享,在编译期间就分配好了内存. 2.静态变量在头文件中声明(和全局变量一样不要在头文件中定义静态变量),在.cpp文件 ...
- stl_map.h
stl_map.h // Filename: stl_map.h // Comment By: 凝霜 // E-mail: mdl2009@vip.qq.com // Blog: http://blo ...
- Web Service 之JAX-WS 与CXF实现
Web Service的实现方式有很多种,本篇介绍的是基于JAX-WS(纯Java)实现的,然后借由CXF工具生成Javabean. 第一步:创建一个Java工程,编写CalService接口,此接口 ...
- BurpSuite工具应用及重放攻击实验
一.BurpSuite工具介绍 BurpSuite是用于攻击web 应用程序的集成平台.它包含了许多工具,并为这些工具设计了许多接口,以促进加快攻击应用程序的过程.所有的工具都共享一个能处理并显示HT ...
- c#迭代遍历带数组的json格式数据
[1]首先我们先创建一个带数组形式的json格式的数组 1)我们按照结构定义一个类,如下: using System;using System.Collections.Generic;using Sy ...