免费注册 查看新帖 |

Chinaunix

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

求救:uid 和 euid 问题,糊涂了 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-01-09 16:12 |只看该作者 |倒序浏览
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>

int main(void)
{
  printf("uid = %d, euid = %d\n", getuid(), geteuid());
  exit(0);
}

用户A执行 chmod 4755 a.out

用户B执行 a.out,
打印出来的uid和euid应该是不一样的吧
但我打印出来的都B的UID

系统为LINUX 2.6.9

论坛徽章:
0
2 [报告]
发表于 2009-01-09 17:30 |只看该作者
用户登录后,你的real userid 等于/etc/passwd文件中与你的登录名所对应的那条记录的pw_uid字段
如果不是执行带有set-user-id的程序,进程的effectvie-id(即geteuid的返回结果)= real id(即getuid的返回结果)

论坛徽章:
0
3 [报告]
发表于 2009-01-09 22:30 |只看该作者
但是用户A已经执行chmod u+s a.out了
也就是已经置set-uid位了

论坛徽章:
0
4 [报告]
发表于 2009-01-09 22:35 |只看该作者
是不是操作系统作了什么设置可以让chmod u+s a.out机制失效呢

论坛徽章:
0
5 [报告]
发表于 2009-01-09 22:54 |只看该作者
你的用户a,用户b是什么意思啊
a,b是他们的登录名啊
还是为了区分2个不同的用户啊

论坛徽章:
0
6 [报告]
发表于 2009-01-09 22:55 |只看该作者
原帖由 alpbrook 于 2009-1-9 22:35 发表
是不是操作系统作了什么设置可以让chmod u+s a.out机制失效呢

你ls -l看一下不就知道设置set-user-id 位有没有成功啊

论坛徽章:
0
7 [报告]
发表于 2009-01-10 14:30 |只看该作者
ls -l看是设置好的
文件的OWNER是用户A
用户A  CHMOD U+S A.OUT

用户B执行A.out

论坛徽章:
0
8 [报告]
发表于 2009-01-10 14:50 |只看该作者
在我这里getuid()和geteuid()结果不一样  :)
不过我的内核是2.4.20

[ 本帖最后由 zhuhefang2006 于 2009-1-10 14:53 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2009-01-10 15:51 |只看该作者
很正常啊,有效用户可以是当前的实际用户,你需要setuid更改有效用户后才可以看到实际当前用户跟有效用户不一致

论坛徽章:
0
10 [报告]
发表于 2009-01-10 15:52 |只看该作者
我以前写过一篇总结性文章,供参考:
http://blog.csdn.net/guosha/archive/2008/07/20/2679334.aspx
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP