linux下如何自动提升权限

发表于:2013-11-19来源:IT博客大学习作者:phpor 点击数: 标签:linux
问题: httpd server是用web用户执行的,如何才能通过httpd server来做root才能做到事情呢? 我想大概这样可以: 我们知道linux上到可执行文件到属主有一个s位,则该文件就可以seteuid到该用户到权限来做事情,于是写如下测试脚本:

  问题: httpd server是用web用户执行的,如何才能通过httpd server来做root才能做到事情呢?

  我想大概这样可以:

  我们知道linux上到可执行文件到属主有一个s位,则该文件就可以seteuid到该用户到权限来做事情,于是写如下测试脚本:

  ====== agent.c=========

  #include

  #include

  #include

  #include

  int main(int ac, char ** av) {

  seteuid(0);

  printf("%d", geteuid()); // 返回0

  // 这里干活就是root的身份了

  return 0;

  }

  ========================

  编译文件:

  gcc -o agent agent.c

  生成文件:

  -rwxr-xr-x 1 root root 7213 2011-06-13 00:02 agent

  修改文件属性:

  chmod +s agent

  -rwsr-sr-x 1 root root 7213 2011-06-13 00:02 agent

  执行agent:

  ./agent

  0

  返回结果为0,说明提升权限成功了

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

  问题: 按说如果添加来s位,则非属主用户不应该有写权限,换言之,如果非属主用户有来写权限,则s位应该无效;但事实上, chmod a+w agent 后,提升权限还是成功来,为什么?

原文转自:http://blogread.cn/it/article/3784