+ -
当前位置:首页 → 问答吧 → 请教个setuid(getpid())的问题

请教个setuid(getpid())的问题

时间:2011-06-28

来源:互联网

我看使用原始套接字的程序中,都有使用
setuid(getpid())这个函数,可是我在看
man setuid时发现,该函数的自变量是
当前进程的有效用户ID(the effective user ID of the current process),
我就不明白了,那它为什么不使用setuid(geteuid())呢?我也看到有人使用setuid(getuid()),
请问到底是用什么?
(我也测试了,发现getpid()与geteuid()是不同的) 

作者: leetow2003   发布时间: 2011-06-28

因为你的程序有S权限,运行得到了root权限。

创建完原始套接字紧接着就是去除权限,就是把有效用户改为实际用户,这样就脱离root了恢复真身了,成为了一个无权利的人。

作者: qq120848369   发布时间: 2011-06-29

我的程序是自己编译的,好像没有S权限,请问我想在程序中能使用原始套接字,那该怎么做呢?(我的用户是普通用户,不是root用户),能否详细说说?

作者: leetow2003   发布时间: 2011-06-29

setuid(getpid())

这个不理解
setuid的参数是一个uid_t类型的,与进程ID没有直接关系
不会是印刷错误吧

作者: justkk   发布时间: 2011-06-29

引用 3 楼 justkk 的回复:
setuid(getpid())

这个不理解
setuid的参数是一个uid_t类型的,与进程ID没有直接关系
不会是印刷错误吧

那参数应该是什么?

作者: leetow2003   发布时间: 2011-06-29