Chinaunix首页 | 论坛 | 博客
  • 博客访问: 852054
  • 博文数量: 90
  • 博客积分: 766
  • 博客等级: 军士长
  • 技术积分: 1867
  • 用 户 组: 普通用户
  • 注册时间: 2011-12-18 08:42
个人简介

linux

文章分类

全部博文(90)

文章存档

2021年(2)

2020年(2)

2017年(1)

2015年(11)

2014年(1)

2013年(53)

2012年(16)

2011年(4)

分类: LINUX

2013-11-12 17:06:32

        这里仅关注IPC的创建和权限两个共性,关于IPC名字的可移植性问题就不讨论了,因为暂时指关注linux。

1.Posix IPC的创建

        Posix IPC的创建是调用Posix API来完成的,传递给API的第一个参数有几种选项:"O_CREAT" ,“O_EXEC", "O_NONBLOCK", "O_TRUNC"。关于“O_NONBLOCK"和“O_TRUNC"就不必细说的,O_CREAT和O_EXEC决定了创建一个对象能不能成功,系统对O_CREAT和O_EXEC的处理十分严谨,系统创建IPC对象详细流程:调用创建IPC的系统调用时,先判断需要创建的IPC是否存在,如果不存在则判断是否设置了O_CREAT位,如果没有设置,则设置errno变量,然后返回,如果设置了O_EXEC位,那么判断系统当中相应的IPC对象表是否已经满了,如果满了,则设置errno变量,然后返回。如果存在则判断是否同时设置了O_EXEC和O_CREAT位,如果设置了则设置errno,然后返回,如果没有同时设置O_EXEC和O_CREAT,则确定是否有相应的权限,如果有则成功返回,如果没有则设置errno并返回。

2.Posix IPC的权限

       刚提到创建时的权限,权限判断也颇有内容,对权限的判断顺序如下:
                1.如果当前进程的有效用户ID为O(超级用户),则允许访问。
                2.使用者是否符合有效用户ID,如果符合则判断相应的用户访问位是否允许访问,如果不允许则拒绝访问。
                3.使用者是否符合有效用户组ID,如果符合则判断相应的用户组访问位是否允许访问,如果不允许则决绝访问。
                4.使用者是否符合其他用户ID,如果符合则判断相应的其他用户ID位是否允许访问,如果不允许则决绝访问。

        他们之间是互斥的,即如果符合用户ID,决不会去匹配有效用户组ID,如果符合有效用户组ID,决不会去匹配其他用户ID。


阅读(1717) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~