linux实际用户和有效用户的区别,附程序示例说明
2013-12-26 20:24
288 查看
看unix高级编程的时候,第八章有提到实际用户和有效用户,那么这两个用户到底是什么,它们之间有什么区别呢?
实际用户:表示一开始执行程序的用户,比如用账号iceup登录shell,然后执行程序ls,那么实际用户就是iceup。
有效用户:有效用户是指在程序运行时,计算权限的用户。大多数情况下实际用户和有效用户相等,但是在执行拥有SUID权限的程序的时候,这两个用户通常会不一致。
为方便理解,笔者用C写了一个例子hello.c,内容很简单,就是获取实际用户id和有效用户id然后输出,代码如下:
编译后的执行文件为a.out,使用ls -l查看两个文件的属性:
实际用户和有效用户演示文件属性
可以看到a.out的所有者为root,用root账号运行这个文件,输出如下:
换一个账号iceup运行这个文件,输出如下:
这两个执行结果比较显而易见,实际用户和有效用户都是一致的。前面一个执行者是root,所以两个都是0,在linux下root的id就是0;后面一个是1001,就是iceup的编号。
下面来看下实际用户和有效用户不一致的情况,切换回root,修改a.out的权限,增加SUID权限:
使用iceup来执行这个程序,结果输出如下:
可以看到有效用户和实际用户不一致了,因为一开始执行程序的是iceup账号,所以实际用户uid=1001。因为a.out有SUID权限,所有在执行的时候,权限的计算会转为root账号,所以有效用户euid=0了。
实际用户:表示一开始执行程序的用户,比如用账号iceup登录shell,然后执行程序ls,那么实际用户就是iceup。
有效用户:有效用户是指在程序运行时,计算权限的用户。大多数情况下实际用户和有效用户相等,但是在执行拥有SUID权限的程序的时候,这两个用户通常会不一致。
为方便理解,笔者用C写了一个例子hello.c,内容很简单,就是获取实际用户id和有效用户id然后输出,代码如下:
1 | #include <stdio.h> |
2 |
3 | int main( void ) |
4 | { |
5 | int uid, euid; |
6 | //实际用户id |
7 | uid = getuid(); |
8 | //有效用户id,其中e表示effective,就是有效的意思 |
9 | euid = geteuid(); |
10 |
11 | printf ( "uid=%d\n" , uid); |
12 | printf ( "euid=%d\n" , euid); |
13 | return 0; |
14 | } |
实际用户和有效用户演示文件属性
可以看到a.out的所有者为root,用root账号运行这个文件,输出如下:
$ ./a.out uid=0 euid=0
换一个账号iceup运行这个文件,输出如下:
$ ./a.out uid=1001 euid=1001
这两个执行结果比较显而易见,实际用户和有效用户都是一致的。前面一个执行者是root,所以两个都是0,在linux下root的id就是0;后面一个是1001,就是iceup的编号。
下面来看下实际用户和有效用户不一致的情况,切换回root,修改a.out的权限,增加SUID权限:
$ chmod u+s a.out
使用iceup来执行这个程序,结果输出如下:
$ ./a.out uid=1001 euid=0
可以看到有效用户和实际用户不一致了,因为一开始执行程序的是iceup账号,所以实际用户uid=1001。因为a.out有SUID权限,所有在执行的时候,权限的计算会转为root账号,所以有效用户euid=0了。
相关文章推荐
- linux有效用户和实际用户的区别
- [转]linux 有效用户和实际用户的区别
- [转]linux 有效用户和实际用户的区别
- linux 有效用户和实际用户的区别
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”的区别
- 关于LINUX中的权限位S(设置用户ID)(有效用户ID)(实际用户ID)
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- Linux进程的实际用户ID和有效用户ID
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语的区别
- Linux进程的实际用户ID和有效用户ID
- linux下进程的实际用户ID(有效组)和有效用户ID(有效组ID)
- Linux进程的实际用户ID与有效用户ID
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语的区别
- linux 中实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语
- Linux进程的实际用户ID和有效用户ID
- “实际用户ID”、“有效用户ID”和“保存的设置用户ID”三个术语的区别