Linux下获取root权限的c程序

传递euid和egid给脚本,使脚本具有特殊用户的权限

使脚本实现类似于设置了stick位的效果

shell, python, perl等脚本、程序不能取得suid,因为这些脚本程序需要解释器-/bin/bash, /usr/bin/python等来执行,而这些解释器本身没有suid也不方便设置suid。碰到这种情况可以用c写一个外壳,对这个外壳设置suid,而在c程序里面把自身的uid,gid传递给实际执行任务的脚本。(这个方法是在读周鹏(Roc Zhou )写的工具时学到的)

c程序如下:

/* # ScriptName: transeuid.c

# Author: JH Gao

# 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

#include

#include

#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

linux c 获得root权限,Linux下获取root权限的c程序相关推荐

  1. linux 权限 c,Linux下获取root权限的c程序

    Linux下获取root权限的c程序 传递euid和egid给脚本,使脚本具有特殊用户的权限 使脚本实现类于设置了stick位的效果 shell, python, perl等脚本.程序不能取得suid ...

  2. Linux 下获取Root权限的几种方法

    方法分为永久性获取root权限以及非永久性获取Root权限 非永久性获取Root权限: 非永久性获取Root权限可以在我们要键入的命令之前加上sudo前缀. 如我们要键入的命令是: rm ,以Root ...

  3. java root权限_Android应用获取Root权限

    在项目的过程中,有可能会要实现类似360优化大师.安卓优化大师的软件搬家.静默安装等需要root权限的功能,或者类似SET_PREFERRED_APPLICATIONS.MOVE_PACKAGE 等需 ...

  4. 4x root 红米_红米Note 4X root教程 红米Note4X获取root权限的方法

    2017-09-13 11:53:45 红米Note 4X root教程 红米Note4X获取root权限的方法 来源:刷机之家 标签:红米Note 4X,root教程,获取root 刷机之家小编来说 ...

  5. java获取root权限_apk如何获取root权限

    展开全部 在apk中,有时候需要root权限,例如通过apk更新系统库等system的文件等,避免升级固件,或者e68a8432313133353236313431303231363533313333 ...

  6. Linux Glibc幽灵漏洞允许黑客远程获取系统权限

    幽灵漏洞是Linux glibc库上出现的一个严重的安全问题,他可以让攻击者在不了解系统的任何情况下远程获取操作系统的控制权限.目前他的CVE编号为CVE-2015-0235. 什么是glibc gl ...

  7. linux启用root用户,Ubuntu 下启用root账号与修改密码

    Ubuntu是一套基于Debian的Linux系统,它追求的是"Just Work",最新的7.10版本发布于2007年10月,不同于其他Linux发行版本,Ubuntu的所有版本 ...

  8. android 最新漏洞 root,新漏洞可获取root权限 所有安卓机躺枪

    原标题:新漏洞可获取root权限 所有安卓机躺枪 [中关村在线软件资讯]10月25日消息:Android系统的安全问题可以用源源不断来形容,最近一个新的严重漏洞被发现,该漏洞甚至可以获取root权限. ...

  9. Android5手动root,魅蓝Note5如何获取ROOT权限?魅蓝Note5 ROOT教程(亲测可行)

    手机ROOT之后可以获得更多的系统权限,例如删除自带软件,修改字体以及系统设置等等.但是ROOT之后也会有很多安全方面的漏洞,小编建议小白用户不要尝试自己进行ROOT,有过刷机经验的发烧友可以尝试RO ...

最新文章

  1. Bootloader
  2. 心理成熟的十五条标准(转)
  3. C++中的运算符优先级
  4. matlab产生时间数组以月为单位_Matlab中处理日期与时间的函数
  5. Spring MVC开发RESTful风格的URI
  6. Logrotate 对服务器日志按照小时切割并压缩
  7. MFC拖拽文件到任意EDIT控件
  8. ./和bash的区别
  9. C++之undefined reference to “ssl::first::first()“
  10. linux-优化内核参数 /etc/sysctl.conf
  11. Android获取手机屏幕宽高
  12. java8 metaspacesize_java-8 – Java8 MetaspaceSize标志不起作用
  13. jsbridge实现及原理_Hybrid APP基础篇(四)-JSBridge的原理
  14. 软件测试:Lab 2 Selenium
  15. sql server安全管理-新建登录名-sql和混合身份验证模式#windows域和用户名的查找#不是有效的 Windows NT 名称。请给出完整名称: <域\用户名>。
  16. vt功能对计算机有影响吗,电脑开vt有什么坏处
  17. tcc-transaction深入理解
  18. java作品欣赏_[Java教程]推荐25个强大的 jQuery 网页布局设计作品欣赏
  19. 03.mysql调优--索引基本实现
  20. 用布制成的“山寨Klein瓶”

热门文章

  1. iptv信息服务器,IPTV点播电影类服务最获青睐
  2. 【系统架构设计师】第一章:操作系统(1.2.2) 信号量与pv操作
  3. JZ2440分区表梳理
  4. android 组件可见,android界面控件可见性方法setVisibility()3个可选参数(visible,invisible,gone)的区别...
  5. JS sort函数(按照首字母字符排序)
  6. 基于词典规则的中文分词(C语言实现)
  7. java的递归详细讲解
  8. 怎么压缩图片,压缩图片轻松搞定
  9. 亚信安全:2017年勒索软件与商业邮件欺骗将继续蔓延
  10. 席位预定中,第二届世界物联网安全峰会5.30-5.31