有童鞋问euid的问题,这里顺便总结一下放这里。


1 分类

user id 分为:

1)real user id (RUID);

2)effective user id (EUID)

3)sticky user id (SUID)

group id 也类似分为:

1)real group id(RGID)

2)effective group id(EGID)

3)sticky group id(SGID)


2 三种user id 区别及关联

RUID 是进程创建者的user id,即进程的执行者;进程的RUID 只有ROOT 用户可以修改;

EUID 是进程执行过程中实际拥有哪个有效用户的权限,这个用户的user id即EUID;

SUID 是程序(非进程)属主的user id,因为unix 的可执行文件elf可以设定sticky 位,设置sticky 位之后,当执行这个程序时,不管执行者的uid是多少,euid都会变成那个程序的属主uid,此时这个进程的权限也就变成了程序属主所拥有的权限。举例,设置stick uid:chmod u+s my_pro,而my_pro的属主UID是501,此后不管谁执行my_pro,这个新进程的权限都是501用户的权限,但这个进程的uid不变,除非root用户强制修改。

进程的创建者可以通过seteuid 来修改进程的euid,可以设为suid,也可以设为自己的uid。

3 三种group id的区别和关联

参考2,将uid换成gid即可,修改函数也是setegid。



Logo

更多推荐