LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 957|回复: 4

有效ID,实际ID如何理解

[复制链接]
发表于 2007-6-22 13:36:42 | 显示全部楼层 |阅读模式
进程的有效ID 和进程的实际ID该如何理解呀。?
看到有些地方说:进程真正运行时候的UID,而实际UID是运行这个进程真正的用户的UID。。。
感觉有点不太对。。。。
发表于 2007-6-22 15:01:08 | 显示全部楼层
引用APUE上面的话来说就是:
每个文件有一个所有者,所有者由stat结构中的st_uid来表示,当执行一个程序文件时,进程的有效用户ID通常就是实际用户ID,但是可以在文件方式字(st_mode)中设置一个特殊标志,其定义是"当执行此文件时,将进程的有效用户ID设置为文件的所有者(st_uid)"


即是说进程的实际UID对应着启动进程的那个用户的UID,而有效UID通常与实际UID相同,如果在文件中设置了setuid位, 则有效UID就为该文件拥有者的UID.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-22 15:06:53 | 显示全部楼层
能否用实例来说明一下。。。
回复 支持 反对

使用道具 举报

发表于 2007-6-22 15:18:55 | 显示全部楼层
比如说passwd这个程序就是改密码的, 向保存密码的文件中写入, 但是只有超级用户才具有向文件中写入这个权限, 所以说普通用户在运行这个程序时, 其有效UID就变成了0, 即该文件的拥有者的UID了.
另外,在APUE这本书第四章有一个对access()函数的讲解, access()函数是以实际用户ID去访问一个文件,而open()是以有效用户ID去访问, 当调用open()时,就使用a.out这个程序的所有者的UID去访问那个文件,所以可以访问到. 你看一看这个例子.
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-6-22 17:29:10 | 显示全部楼层
开窍了,谢谢!
周末愉快!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表