首先写个C程序,命名为:run.c 放在目录/scripts/demo/下

复制代码 代码如下:

#include

#include

#include

#include

int main()

{

uid_t uid ,euid;

//char cmd[1024]; //变量暂时未使用

uid = getuid() ;

euid = geteuid();

printf("my uid :%u\n",getuid()); //这里显示的是当前的uid 可以注释掉.

printf("my euid :%u\n",geteuid()); //这里显示的是当前的euid

if(setreuid(euid, uid)) //交换这两个id

perror("setreuid");

printf("after setreuid uid :%u\n",getuid());

printf("afer sertreuid euid :%u\n",geteuid());

system("/scripts/demo/runscripts.php"); //执行脚本

return 0;

}

编译该文件:

gcc -o run -Wall run.c

在该路径下生成run文件,这个可执行文件。如果现在用PHP脚本调用 该run的话,即使setreuid了 也是不行的。

接下来要做的是:给run赋予suid权限

# chmod u+s run

# ls

# -rwsr-xr-x 1 root root 5382 Jul 2 21:45 run

好了,已经设置上了,再写一个php页面调用它。

复制代码 代码如下:

echo '

';

$last_line = system('/scripts/demo/run', $retval);

echo '


Last line of the output: ' . $last_line . '


Return value: ' . $retval;

?>

在浏览器中浏览。

my uid :48

my euid :0

after setreuid uid :0

afer sertreuid euid :48

--------------------------------------------------------------------------------

Last line of the output: afer sertreuid euid :48

--------------------------------------------------------------------------------

Return value: 0

该命令执行成功。

从显示结果可以看出: apache(daemon)的uid 为48(事实上很多linux系统下daemon的uid为2)。

调用setreuid后将有效用户id和实际用户id互换了。(必须在chmod u+s生效的情况下) 使apache当前的uid为0这样就能执行root命令了。

只需要更改 C文件中的system所要执行的命令就可以实现自己的PHP以root角色执行命令了。

php system权限,让PHP以ROOT权限执行系统命令的方法相关推荐

  1. root权限获取排行榜,root权限软件排行榜

    VIVOX7的root权限怎么获取? vivo手机是不可以获取root的,建议不要轻易将手机root. ROOT是一种存在于UNIX系统(如AIX.BSD等)和类UNIX系统(如大名鼎鼎的Linux, ...

  2. android 6 编译 root权限,Android应用获得Root权限

    要让Android应用获得Root权限,首先Android设备必须已经获得Root权限. 应用获取Root权限的原理:让应用的代码执行目录获取最高权限.在Linux中通过chmod 777 [代码执行 ...

  3. 联想 android 5.1 root权限,联想A520手机ROOT权限图文教程(附联想A520root工具)

    联想A520 ROOT教程: 2.将手机USB调试打开; 步骤:设置----应用程序----开发-----USB调试 设置----应用程序----未知源,后面的勾打上就行; 3.打开了USB调试和未知 ...

  4. python执行系统命令的方法_python执行系统命令的方法 :os.system(),subprocess.popen(),command...

    最近接触到os.system(),subprocess.popen()和commands来执行系统命令,从网上搜索到许多,现整理如下. 1. 使用os.system("cmd") ...

  5. android22 system,有用的Android22一键ROOT权限(中兴U880为例)详细方法..doc

    有用的Android22一键ROOT权限(中兴U880为例)详细方法. Android2.2一键ROOT权限(中兴U880为例)详细方法 2011年8月1日官方的最新升级资料B10无法ROOT的解决方 ...

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

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

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

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

  8. 权限英文linux,使用Root权限登陆、解决root用户首次登录界面是英文

    使用Root权限登陆: 1.为root用户设置密码 打开终端输入:sudo passwd root 输入新的 UNIX 口令: 重新输入新的 UNIX 口令 passwd:已成功更新密码 2.更改登陆 ...

  9. linux安卓root权限,Android 文件系统获取root权限

    最近在移植Android2.3到s3c6410平台,文件系统成功挂载后,在超级终端执行一些命令不成功,比如mkdir,这样的基础命令,后来查阅资料,是自己没有取得root权限,只需在启动的shell时 ...

最新文章

  1. java跨函数跳转_C语言中将绝对地址转换为函数指针以及跳转到内存指定位置处执行的技巧...
  2. 问题:为命名空间,在此被用作类型和此项目作为引用添加将导致循环依赖项
  3. Golang 入门笔记(二)中
  4. [Swift] 使用Playground
  5. [物理学与PDEs]第1章第4节 电磁能量和电磁动量, 能量、动量守恒与转化定律 4.3 电磁能量 (动量) 密度, 电磁能量流 (动量流) 密度...
  6. Spring Boot 面试题
  7. nowcoder172C 保护 (倍增lca+dfs序+主席树)
  8. 红队技巧:绕过ESET_NOD32抓取密码(ESET_NOD32是一款杀毒软件)
  9. LNMP 常见问题(FAQ)
  10. selenium webdriver - 截图
  11. 无线通信原理与应用笔记
  12. win10下面安装MTK USB VCOM 驱动
  13. python 三色球问题
  14. 计算机设备配备情况,计算机设备配置标准.doc
  15. superset、metabase、redash、dataease开源BI对比
  16. 华尔街“是”世界经济关键角色的原因
  17. Log图文详解(Log.v,Log.d,Log.i,Log.w,Log.e)的用法
  18. 产品思考 - 免费移动宽带自带魔百和的烦恼
  19. Http请求状态码-416
  20. 鸿蒙开发中vp和fp是啥?

热门文章

  1. asio指定网卡加入组播组
  2. 基于51单片机的可控硅调压调光程序-带过零检测
  3. JIS T8165标准, 日本安全带、登山扣JIS解析
  4. linux open file不生效,【Linux】Linux修改openfiles后不生效问题?
  5. SolidWorks2010常用快捷键
  6. ado.net能访问oracle,利用ADO.NET访问Oracle数据库的实现
  7. redmine mysql 配置_Redmine 2.0.3 安装配置
  8. 短线是零和博弈,唯有做时间的朋友,做宠辱不惊的哲学家才是最后的赢家
  9. linux禁用触控板驱动程序,linux – X11 EvDev触摸屏驱动程序:禁用长按在桌面上单击鼠标右键...
  10. SwiftUI 实现丝滑拖拽效果GestureState DragGesture(教程含源码)