linux中的进程权限

对于一个linux进程,它每次打开、创建或者删除一个文件时,内核就要对该进程进行文件访问权限测试,而在对具体某个文件进行测试时,还需要测试其对目录(也就是文件路径)进行权限测试。

比如要修改/usr/include/stdio.h,需要对//usr/usr/include这三个目录进行权限测试,保证有对这三个目录的执行权限(执行权限用于打开该目录,读权限用于显示目录内容,写权限用于创建新文件或者目录)。
进程访问权限测试涉及文件的所有者(st_uidst_gid),进程的有效ID(有效用户ID和有效组ID)以及进程的附加组ID(若支持的话)。两个所有者ID是文件的性质,而两个有效ID和附加组ID则是进程的性质。

进程测试过程如下:
(1)若进程的有效用户ID是0(超级用户),则允许访问。这给予了超级用户对整个文件系统进行处理的最充分自由。
(2)若进程的有效用户ID等于文件的所有者ID(也就是该进程拥有此文件),那么:若文件所有者适当的访问权限位被设置,则允许访问,否则拒绝访问。适当的访问权限位指的是,若进程为读而打开该文件,则文件所有者读位应为1;若进程为写而打开该文件,则文件所有者写位应为1;若进程将执行该文件,则文件所有者执行位应为1.
(3)若进程的有效组ID或进程的附加组ID之一等于文件的组ID,那么:若文件的组适当的访问权限位被设置,则允许访问,否则拒绝访问。
(4)若文件的其他用户适当的访问权限位被设置,则允许访问,否则拒绝访问。
按顺序执行这四步。注意,如若进程拥有此文件(第2步),则按用户访问权限批准或拒绝该进程对文件的访问--不查看组访问权限。类似的,若进程并不拥有该文件,但进程属于某个适当的组,则按组访问权限批准或拒绝该进程对文件的访问--不查看其他用户的访问权限。

发布了180 篇原创文章 · 获赞 49 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/P19777/article/details/104631765
今日推荐