Linux进程的实际用户ID和有效用户ID
来源:互联网 发布:js获取当前数组下标 编辑:程序博客网 时间:2024/06/06 03:10
转自: http://www.cnblogs.com/kunhu/p/3699883.html
在Unix进程中涉及多个用户ID和用户组ID,包括如下:
1、实际用户ID和实际用户组ID:标识我是谁。也就是登录用户的uid和gid,比如我的Linux以simon登录,在Linux运行的所有的命令的实际用户ID都是simon的uid,实际用户组ID都是simon的gid(可以用id命令查看)。
2、有效用户ID和有效用户组ID:进程用来决定我们对资源的访问权限。一般情况下,有效用户ID等于实际用户ID,有效用户组ID等于实际用户组ID。当设置-用户-ID(SUID)位设置,则有效用户ID等于文件的所有者的uid,而不是实际用户ID;同样,如果设置了设置-用户组-ID(SGID)位,则有效用户组ID等于文件所有者的gid,而不是实际用户组ID。
以上来自:APUE(《高级UNIX环境编程》)
Unix系统通过进程的有效用户ID和有效用户组ID来决定进程对系统资源的访问权限。
以上这些概念还是比较的抽象,那么下面写一个小的测试程序:
这个程序非常简单没有什么好说的。我们编译这个程序生成test 程序
通过id命令看到当前登录用户为root,uid=0,gid=0。通过ls命令我们可以看出test程序没有设置SUID和SGID,所有者是root,所有组也是root。执行test我们发现有效用户ID等于实际用户ID(0),有效用户组ID等于实际用户组ID(0)。
你可能注意到test的所有者root,组也是root,和实际用户,实际用户组是一样的。下一步我们修改一下test所有者和组,再看结果。
发现结果和上面一样,test进程的有效用户ID等于实际用户ID(0),有效用户组ID等于实际用户组ID(0)。
下面我们给test程序设置SUID
发现设置test程序的SUID位之后,test进程的有效用户ID等于文件所有者的UID(gkh的uid为500),有效用户组ID还是等于实际用户组ID(0)。这样程序就可以访问只有gkh才能访问的资源了。
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- 关于Storm安装启动出现The storm client can only be run from within a release问题
- 4.3怎么解决跨域问题
- 新思路解决问题
- (学习java)带有头结点的单向循环链表
- Django request.GET 编码错误解决
- Linux进程的实际用户ID和有效用户ID
- NSPopover
- 基于链表的双端队列的类模板的C++实现
- 模板:费用流
- 【SSH】Hibernate学习(三)一对多、多对一、多对多
- Android广播工作过程分析
- LeetCode91 Decode Ways
- switch语句
- hadoop之 Hadoop1.x和Hadoop2.x构成对比