进程的用户和用户组身份
来源:互联网 发布:洪荒之力网络意思 编辑:程序博客网 时间:2024/05/17 20:21
一、进程的用户身份
1、Effective UserId
执行进程的有效用户身份,进程权限由其参与决定
2、Saved UserId
用于保存Effective UserId的数据结构
3、Real UserId
创建进程的用户身份,可称之为实际用户身份
一般情况下,进程的Effective UserId和Real UserId是一致的,都是创建进程的用户的Id,Saved UserID用不到,比如说当前登录用户为dsl,那么创建一个进程之后,进程的Effective UserId和Real UserId都为dsl用户对应的id
假如一个可执行文件设置了SUID,那么这3个UserId的值开始变得不同,Real UserId保存了创建进程的用户的Id,Effective UserId保存了文件属主用户的id(SUID,就是以文件属主的身份运行进程),当在进程执行过程中,进程期望临时转为以Real UserId的身份运行,那么它先把当前的Effective UserId保存到Saved UserId中,然后将Effective UserId的值设为Real UserId的值,等到想要恢复到最初有效用户身份的时候,再从Saved UserId中将值取出来覆盖Effective UserId的值
二、进程的用户组身份
相应的,存在
1、Effective GroupId
执行进程的有效用户组身份,进程权限由其参与决定
2、Saved GroupId,
用于保存Effective GroupId的数据结构
3、Real GroupId的概念
创建进程的用户组身份,可称为实际用户组身份
它们的值也分为两种情况:
1)未设置SGID
2)设置SGID
设置了SGID之后,Real GroupId保存了实际用户对应的primary group的Id值,Effective GroupId的值就为文件所属组(SGID,就是以文件所属组的身份运行进程),当在进程执行过程中,进程期望临时转为以Real GroupId的身份运行,那么它先把当前的Effective GroupId保存到Saved GroupId中,然后将Effective GroupId的值设为Real GroupId的值,等到想要恢复到最初有效用户组身份的时候,再从Saved GroupId中将值取出来覆盖Effective GroupId的值
三、进程用户和用户组的情况组合
一共有4种情况,分别是SUID和SGID都不设置,SUID设置和SGID不设置,SUID不设置和SGID设置,SUID和SGID都设置
参考文献:
[1]http://www.lst.de/~okir/blackhats/node23.html
[2]http://www.makelinux.net/alp/083
[3]http://en.wikipedia.org/wiki/User_identifier
[4]http://stackoverflow.com/questions/8499296/realuid-saved-uid-effective-uid-whats-going-on
[5]http://stackoverflow.com/questions/205070/whats-the-deal-with-all-the-different-uids-a-process-can-have
1、Effective UserId
执行进程的有效用户身份,进程权限由其参与决定
2、Saved UserId
用于保存Effective UserId的数据结构
3、Real UserId
创建进程的用户身份,可称之为实际用户身份
一般情况下,进程的Effective UserId和Real UserId是一致的,都是创建进程的用户的Id,Saved UserID用不到,比如说当前登录用户为dsl,那么创建一个进程之后,进程的Effective UserId和Real UserId都为dsl用户对应的id
假如一个可执行文件设置了SUID,那么这3个UserId的值开始变得不同,Real UserId保存了创建进程的用户的Id,Effective UserId保存了文件属主用户的id(SUID,就是以文件属主的身份运行进程),当在进程执行过程中,进程期望临时转为以Real UserId的身份运行,那么它先把当前的Effective UserId保存到Saved UserId中,然后将Effective UserId的值设为Real UserId的值,等到想要恢复到最初有效用户身份的时候,再从Saved UserId中将值取出来覆盖Effective UserId的值
二、进程的用户组身份
相应的,存在
1、Effective GroupId
执行进程的有效用户组身份,进程权限由其参与决定
2、Saved GroupId,
用于保存Effective GroupId的数据结构
3、Real GroupId的概念
创建进程的用户组身份,可称为实际用户组身份
它们的值也分为两种情况:
1)未设置SGID
Real GroupId和Effective GroupId的值为进程实际用户对应的Primary Group的Id值,跟进程有效用户无关,也就与相应程序是否设置SUID无关。
比如说有一个程序,无论是否设置SUID都没有关系,dsl用户执行该程序,dsl用户的Primary Group为dsl,那么得到的进程的Real GroupId和Effective GroupId都为dsl这个用户组对应的Id。
2)设置SGID
设置了SGID之后,Real GroupId保存了实际用户对应的primary group的Id值,Effective GroupId的值就为文件所属组(SGID,就是以文件所属组的身份运行进程),当在进程执行过程中,进程期望临时转为以Real GroupId的身份运行,那么它先把当前的Effective GroupId保存到Saved GroupId中,然后将Effective GroupId的值设为Real GroupId的值,等到想要恢复到最初有效用户组身份的时候,再从Saved GroupId中将值取出来覆盖Effective GroupId的值
三、进程用户和用户组的情况组合
一共有4种情况,分别是SUID和SGID都不设置,SUID设置和SGID不设置,SUID不设置和SGID设置,SUID和SGID都设置
参考文献:
[1]http://www.lst.de/~okir/blackhats/node23.html
[2]http://www.makelinux.net/alp/083
[3]http://en.wikipedia.org/wiki/User_identifier
[4]http://stackoverflow.com/questions/8499296/realuid-saved-uid-effective-uid-whats-going-on
[5]http://stackoverflow.com/questions/205070/whats-the-deal-with-all-the-different-uids-a-process-can-have
0 0
- 进程的用户和用户组身份
- 进程的用户身份
- Linux的用户和用户组
- Linux的用户和用户组
- 用户和用户组的学习
- 用户和用户组的概念
- nginx forbidden 403:多进程下的子程序的用户和用户组指定
- Linux的用户和用户组管理
- Linux的用户和用户组管理
- Linux的用户和用户组管理
- 关于SharePoint 2007的用户组和用户
- 附:Linux的用户和用户组管理
- 用户、用户组、角色的区别和联系
- 关于SharePoint 2007的用户组和用户
- 用户、用户组、角色的区别和联系
- Linux的用户和用户组管理
- Linux的用户和用户组管理
- Linux的用户和用户组管理
- n后问题c++
- 第40讲--项目六--三色球问题
- 使用PDFLib生成PDF文档(C语言版)
- 二叉树的遍历——递归和非递归
- TurtleWorld demo
- 进程的用户和用户组身份
- I/O流(四)—java如何添加到文件尾
- 在linux环境下编译运行OpenCV程序的两种方法
- C/C++语言面试题详细解答四
- iOS 检测更新的实现
- COCOS2DX-ANDROID之 APK签名,打包
- 使用PDFLib生成PDF文档,C代码实例--画图形
- Android编译服务器的管理之五:上电自启
- 框架,springmvc,mybatis,ehcache,源码