|
发表于 2009-1-13 16:28:55
|
显示全部楼层
我发现一个问题:
int resetuid:因为函数要打开一个raw socket,因此运行的时候需要root权限。这个参数表示,是否在打开了raw socket之后把进程的有效权限置为实际用户权限,也就是说,是否调用setuid(getuid())。
------
我觉得应该是使用seteuid(getuid())吧,setuid设置的是实际用户,seteuid设置的是有效用户,当可执行文件设置了setuid属性,那么普通用户运行程序后有效用户是root,实际用户依然是普通用户的id,而这是为了打开原始套接口,为了安全,操作完后不是应该用seteuid(getuid())把有效用户也设置为普通用户的id吗?
TNND,刚才测试了一下发现setuid(getuid())和seteuid(getuid())的执行效果都是一样的嘛,有效用户都可以设置为普通用户的id,哪位大侠解释一下? |
|