14-总结
9.8 总结
每个进程都有一干与之相关的用户ID和组ID(凭证)。实际ID定义了进程所属③。在大多数的UNIX实现中,进程对诸如文件之类资源的访问,其许可权限由有效ID决定。然而,Linux会使用文件系统ID来决定对文件的访问权限,而将有效ID用于检查其他权限。(因为文件系统ID一般等同于相应的有效ID,所以Linux对文件权限的检查方式与其他UNIX实现相同。)进程辅助组ID则是出于权限检查目的而另行设立的进程属组集合。存在各种系统调用和库函数支持进程获取和修改其用户ID和组ID。
set-user-ID程序运行时,会将进程有效用户ID置为文件属主的用户ID。运行某个特殊程序时,这种机制支持用户“假借”其他用户的身份和特权。相应的,set-group-ID程序会修改运行该程序的进程的有效组ID。保存set-user-ID和保存set-group-ID允许set-user-ID和set-group-ID程序临时性地放弃特权,并在之后恢复特权。
0在用户ID中可谓卓尔不群。通常仅为一个名为root的账号所有。有效用户ID为0的进程属特权级进程。换言之,对于进程发起的各种系统调用,可免于接受通常所要历经的诸多权限检查(比如那些能够随意修改进程各种用户ID和组ID的调用)。