一、进程凭证
每个进程都有一套用数字表示的用户ID(UID) 和组ID(GID),有时将这些ID称之为进程凭证,具体如下图所示:
1. 实际用户ID和组ID
实际用户ID和组ID确定了进程所属的组,标识我是谁。
2.有效用户ID和有效组ID
当进程尝试执行各种系统调用的时候,将结合有效用户ID、有效组ID及辅助ID来确定赋予进程的权限。
例如,当进程访问一些文件、进程间通信对象之类的系统资源时,有效用户ID和有效组ID会决定系统授予进程的权限,这些资源的属主则是由上述所介绍的实际用户ID和实际组ID来决定。
有效用户ID为0的进程拥有超级用户的所有权限,这样的进程称之为特权进程。如果只是为了使进程可以执行某个或某些系统调用而将进程的有效用户ID置为0是非常不安全的,因为root的权限分为很多种,仅为了某一个访问权限而给予别人一切权限,这样使得攻击面变得很大,系统很不安全。
后续会讲到Linux Capability方案,将root权限切割成更细粒度的小权限,对于进程来说可以单独启用或者禁用某个或者某些权限。
3.Set-User-ID和Set-Group-ID程序
set-user-ID程序会将进程的有效用户ID置