getuid 和 geteuid 的区别

amoihin 2009-07-11 07:59:11
不太明白getuid 和 geteuid 的区别,什么是effective user id 和 user id 的区别啊?
能不能给个程序显示他们的区别?
另外,这是不是一个笨问题啊?
我自己google找不到答案,有什么方法能自己解决类似的问题?
...全文
1729 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ISPCFS 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hairetz 的回复:]
有效用户ID(EUID)是你最初执行程序时所用的ID
表示该ID是程序的所有者
真实用户ID(UID)是程序执行过程中采用的ID
该ID表明当前运行位置程序的执行者
举个例子
程序myprogram的所有者为501/anna
以501运行该程序此时UID和EUID都是501
但是由于中间要访问某些系统资源
……
[/Quote]

另外,向4楼大牛请教。
在不为程序设置set_uid的情况下,UID和EUID会不会出向不想相同的情况?
在设置了set_uid的情况下,用一般用户如1001来执行root所有的程序,观察UID和EUID,发现UID=1001,而EUID为0.似乎与你结论不符,EUID确实是程序所有者的ID,但并非是最初执行程序的用户的ID。。
ISPCFS 2011-10-09
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 hairetz 的回复:]
有效用户ID(EUID)是你最初执行程序时所用的ID
表示该ID是程序的所有者
真实用户ID(UID)是程序执行过程中采用的ID
该ID表明当前运行位置程序的执行者
举个例子
程序myprogram的所有者为501/anna
以501运行该程序此时UID和EUID都是501
但是由于中间要访问某些系统资源
……
[/Quote]

4楼说的好像有点问题。如,用户501运行root所有的程序,则UID=501,而EUID=0.。
ISPCFS 2011-10-08
  • 打赏
  • 举报
回复
学习了。。。。。。
  • 打赏
  • 举报
回复
有效用户ID(EUID)是你最初执行程序时所用的ID
表示该ID是程序的所有者
真实用户ID(UID)是程序执行过程中采用的ID
该ID表明当前运行位置程序的执行者
举个例子
程序myprogram的所有者为501/anna
以501运行该程序此时UID和EUID都是501
但是由于中间要访问某些系统资源
需要使用root身份
此时UID为0而EUID仍是501


http://topic.csdn.net/t/20050324/17/3878444.html
amoihin 2009-07-11
  • 打赏
  • 举报
回复
实际用户和有效用户的区别是什么啊?
Treazy 2009-07-11
  • 打赏
  • 举报
回复
[Quote=引用楼主 amoihin 的帖子:]
不太明白getuid 和 geteuid 的区别,什么是effective user id 和 user id 的区别啊?
能不能给个程序显示他们的区别?
另外,这是不是一个笨问题啊?
我自己google找不到答案,有什么方法能自己解决类似的问题?
[/Quote]
HP-UX
getuid() 调用进程的实际用户ID
geteuid() 调用进程的有效用户ID

一个是实际用户,一个是有效用户
大前置 2009-07-11
  • 打赏
  • 举报
回复
getegid()用来取得执行目前进程有效组识别码。有效的组识别码用
来决定进程执行时组的权限。

geteuid()用来取得执行目前进程有效的用户识别码。有效的用户识
别码用来决定进程执行的权限,借由此改变此值,进程可以获得额
外的权限。

getgid //获取
geteuid //修改

69,372

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧