随笔 - 50  文章 - 0 评论 - 17 trackbacks - 0

PID:进程号。

内核为每个进程分配一个唯一的ID编号,许多操作进程的命令和系统调用需要制定一个PID,以识别操作的对象,PID按照进程创建的顺序生成。

 

PPID:父进程号

Linux并不支持创建一个新进程以执行特定程序的系统调用。新的进程总是通过克隆一个进程自身来生成,克隆出的进程可以把现在运行的程序替换为另外一个。

当一个进程被克隆的时候,原始的进程成为父进程,拷贝的进程作为其的子进程。进程的PPID属性就存储了了其父进程的PID。如果原来的父进程终止,那么进程init(进程1)成为该子进程的父进程。

 

UID、EUID:真是用户ID(real User ID),有效用户ID(Effective User ID)

UID描述了该进程是由哪个用户创建的,更精确的说来,他是父进程UID值的拷贝。通常来说,只有进程的创建者(也称为属主)和超级用户才拥有操作进程的权限。

EUID是一个额外的UID,用于描述一个进程在任何给定时刻对哪些资源和文件具有访问权限。

对大部分进程来说,UID和EUID是相同的,例外的情况可以考虑setuid。

保存UID和EUID在维护身份(identity)和权限(permission)的时候是有用的,并且考虑到一个setuid的程序并不一定希望一直以一种扩展的权限来进行操作。进程的EUID可以被设置,也可以被重置,以允许或者限制进程所拥有的额外的权限。

Linux同时保存一种"saved UID",暂且称为保存UID,SUID在进程首次开始执行的时候被赋予和EUID一样的值。除非进程采取某些措施擦除了这个保存的UID,否则它可以一直被当做UID或者EUID一样来使用。因此,一个谨慎构造的setuid程序可以在程序执行的大部分时间与其所持有的特权无关,仅仅在需要的时候才访问这些特权。

 

FSUID

linux同时定义了非标准的FSUID进程参数,用以控制对文件系统权限的判断,不过这个在内核之外好像并不常用。

 

GID、EGID:真实和有效的组ID

GID是进程的组标识号。EGID和GID的关系跟EUID和UID的关系相同,因为它可以由一个setuid程序来切换。类似 saved UID,内核也同时维护一个saved GID。

GID的用途不是特别大了,从访问控制的角度上来说,一个进程可以同时是好几个组的成员。决定访问权限一般要考虑EGID和追加的组清单,但不考虑GID。

只有当一个进程要创建新文件的时候,GID才会起作用。文件系统权限是如何设定的,决定了新的文件可能要采用创建该文件的进程的GID。

posted on 2010-01-29 23:45  tigertall  阅读(396)  评论(0编辑  收藏