Linux下获取root权限的c程序
来源:互联网 发布:dr.jart 知乎 编辑:程序博客网 时间:2024/06/07 00:56
Linux下获取root权限的c程序
传递euid和egid给脚本,使脚本具有特殊用户的权限
使脚本实现类似于设置了stick位的效果
shell, python, perl等脚本、程序不能取得suid,因为这些脚本程序需要解释器-/bin/bash, /usr/bin/python等来执行,而这些解释器本身没有suid也不方便设置suid。碰到这种情况可以用c写一个外壳,对这个外壳设置suid,而在c程序里面把自身的uid,gid传递给实际执行任务的脚本。(这个方法是在读周鹏(Roc Zhou <roczhou.zhoup@alibaba-inc.com>)写的工具时学到的)
c程序如下:
- /* # ScriptName: transeuid.c
- # Author: JH Gao <gaopenghigh@gmail.com>
- # Create Date: 2012-06-05
- # Function: transmit euid and egid to other scripts
- # since shell/python/... scripts can't get suid permission in Linux
- # usage: transeuid xxx.sh par1 par2 par3
- # xxx.sh will get the euid and egid from transeuid
- # ******************************************************************** */
- #include <stdio.h>
- #include <stdlib.h>
- #include <unistd.h>
- #define BUFFSIZE 1024
- /*
- * usually euid is the uid who run the program
- * but when stick is setted to the program
- * euid is the uid or the program's owner
- */
- int main(int argc, char *argv[]) {
- char *cmd = malloc(BUFFSIZE);
- // set uid and gid to euid and egid
- setuid(geteuid());
- setgid(getegid());
- cmd = argv[1];
- int i = 0;
- for(i = 0;i < argc - 1;i++) {
- argv[i] = argv[i+1];
- }
- argv[argc-1] = NULL
- // search $PATH find this cmd and run it with pars:argv
- if (execvp(cmd, argv)) {
- printf("error");
- free(cmd);
- exit(1);
- }
- free(cmd);
- }
编译这个程序,在给这个程序设置希望取得的用户,再设置suid,然后就可以用这个用户的权限执行脚本或命令了:
$ gcc -t transeuid transeuid.c$ sudo chown root transeuid$ sudo chmod +s transeuid$ ./transeuid ls /root /home/home:. .. data .directory gp_old jh jh_old lost+found/root:. .. .bash_history .bashrc .cache .dbus .profile .pulse .pulse-cookie .viminfo
0 0
- Linux下获取root权限的c程序
- Linux下获取root权限的c程序
- Linux下获取root权限的c程序
- 程序获取linux的root权限
- linux 下获取root权限
- Linux下用户获取root权限执行程序
- Linux 下获取Root权限的几种方法
- Linux 下获取Root权限的几种方法
- Linux在无root的权限下如何安装程序
- linux下普通用户获取root权限
- linux下,普通用户获取root权限
- linux下获得root权限运行程序
- linux下获得root权限运行程序
- linux下获得root权限运行程序
- Linux下重新更改root密码-获取root权限
- linux root权限获取
- linux获取root权限
- Linux获取root权限
- linux 输入长命令行时回到行首解决
- 年少轻狂,漫漫职业路
- aauto抓http数据
- java中,数据存储,以及堆和 栈
- qt 之 QScreen
- Linux下获取root权限的c程序
- 面试珠玑 快速排序、希尔排序、插入排序、选择排序、归并排序、堆排序总结
- JAVA正则表达式
- 黑马程序员--Java语言基础篇
- springmvc+mybatis+spring
- 用Ant实现Java项目的自动构建和部署
- 思考项目 求1+2的2次方+3的3次方+4的4次方+5的5次方+6的6次方的值。(异种循环嵌套)
- PING命令入门详解
- 沃通首张定制版-超真单位客户端证书诞生啦