免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1409 | 回复: 1
打印 上一主题 下一主题

[Linux] 设置用户id的程序执行ysytem函数问题,求解。。。。。。。。。。。。。。 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-05-27 10:48 |只看该作者 |倒序浏览
按照apue上所述:程序a中用system执行程序b,程序b输出有效用户id,当程序a设置了设置用户id位的时候,通过程序a执行程序b应该输出程序a的实际用户id啊,但是做了个实验发现不是这样的。
代码如下:tsys.c(即上面的程序a)
  1. #include <stdio.h>
  2. #include <unistd.h>

  3. int main(int argc, char *argv[])
  4. {
  5.         int status;
  6.         if(argc <2 )
  7.         {
  8.                 printf("commend-line argument requited\n");
  9.                 exit(1);
  10.         }

  11.         if((status=system(argv[1]))<0)
  12.         {
  13.                 printf("system() error!\n");
  14.                 exit(1);
  15.         }
  16.         return 0;
  17. }
复制代码
Test.c(即上面的程序b)
  1. int
  2. main(int argc, char *argv[])
  3. {
  4.   printf("real uid=%d,effectivce uid =%d\n",getuid(),geteuid());  
  5.   return 0;
  6. }
复制代码
执行结果如图

Q.jpg (14.28 KB, 下载次数: 23)

Q.jpg

论坛徽章:
11
技术图书徽章
日期:2014-03-01 14:44:34天蝎座
日期:2014-05-21 22:11:59金牛座
日期:2014-05-30 17:06:14
2 [报告]
发表于 2014-05-28 09:30 |只看该作者
system通过shell执行cmd,处于安全考虑,set-user-id可能被重置了,用strace跟踪下,或者可以直接fork+exec+wait越过shell
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP