《UNIX网络编程 卷2:进程间通信(第2版)》——2.4 IPC权限

简介: 新的消息队列、有名信号量或共享内存区对象是由其oflag参数中含有O_CREAT标志的mq_open、sem_open或shm_open函数创建的。如图2-4所注,权限位与这些IPC类型的每个对象相关联,就像它们与每个Unix文件相关联一样。

本节书摘来自异步社区《UNIX网络编程 卷2:进程间通信(第2版)》一书中的第2章,第2.4节,作者:【美】W. Richard Stevens著,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.4 IPC权限

新的消息队列、有名信号量或共享内存区对象是由其oflag参数中含有O_CREAT标志的mq_open、sem_open或shm_open函数创建的。如图2-4所注,权限位与这些IPC类型的每个对象相关联,就像它们与每个Unix文件相关联一样。

当同样由这三个函数打开一个已存在的消息队列、信号量或共享内存区对象时(或者未指定O_CREAT,或者指定了O_CREAT但没有指定O_EXCL,同时对象已经存在),将基于如下信息执行权限测试:

(1)创建时赋予该IPC对象的权限位;

(2)所请求的访问类型(O_RDONLY、O_WRONLY或O_RDWR);

(3)调用进程的有效用户ID、有效组ID以及各个辅助组ID(若支持的话)。

大多数Unix内核按如下步骤执行权限测试。

(1)如果当前进程的有效用户ID为0(超级用户),那就允许访问。

(2)在当前进程的有效用户ID等于该IPC对象的属主ID的前提下,如果相应的用户访问权限位已设置,那就允许访问,否则拒绝访问。

这里相应的访问权限位的意思是:如果当前进程为读访问而打开该IPC对象,那么用户读权限位必须设置;如果当前进程为写访问而打开该IPC对象,那么用户写权限位必须设置。

(3)在当前进程的有效组ID或它的某个辅助组ID等于该IPC对象的组ID的前提下,如果相应的组访问权限位已设置,那就允许访问,否则拒绝访问。

(4)如果相应的其他用户访问权限位已设置,那就允许访问,否则拒绝访问。

这4个步骤是按所列的顺序尝试的。因此,如果当前进程拥有该IPC对象(第2步),那么访问权的授予与拒绝只依赖于用户访问权限——组访问权限绝不会考虑。类似地,如果当前进程不拥有该IPC对象,但它属于某个合适的组,那么访问权的授予与拒绝只依赖于组访问权限——其他用户访问权限绝不会考虑。

我们从图2-3中指出,sem_open不使用O_RDONLY、O_WRONLY或O_RDWR标志。然而在10.2节我们将指出,某些Unix实现采用O_RDWR,因为只要使用一个信号量,都涉及读写该信号量的值。

相关文章
|
8月前
|
安全 API
7.4 通过API枚举进程权限
GetTokenInformation 用于检索进程或线程的令牌(Token)信息。Token是一个数据结构,其包含有关进程或线程的安全上下文,代表当前用户或服务的安全标识符和权限信息。GetTokenInformation函数也可以用来获取这些安全信息,通常用于在运行时检查某个进程或线程的权限或安全信息。
67 1
|
7天前
|
安全 网络安全 数据安全/隐私保护
【专栏】IT 知识百科:访问控制列表(ACL)是网络安全的关键机制,用于定义和管理网络资源的访问权限
【4月更文挑战第28天】访问控制列表(ACL)是网络安全的关键机制,用于定义和管理网络资源的访问权限。ACL工作原理包括定义规则、匹配规则和执行操作。标准ACL基于源IP过滤,扩展ACL则提供更多筛选条件。时间及用户基础的ACL提供更细化的控制。优点在于增强安全性和精细管理,但管理复杂性和性能影响也是挑战。未来,ACL将趋向智能化和自动化,与更多安全技术结合,以提升网络安全。**
|
12月前
|
Android开发
KernelSU基于内核的 SU。它通过自定义内核,直接在内核中赋予目标进程 root 权限。
KernelSU基于内核的 SU。它通过自定义内核,直接在内核中赋予目标进程 root 权限。
3439 0
|
7天前
|
Web App开发 监控 Unix
Linux 常用命令汇总(七):进程管理 & 系统权限 & 用户授权
Linux 常用命令汇总(七):进程管理 & 系统权限 & 用户授权
|
7天前
|
Shell Linux C语言
【Shell 命令集合 网络通讯 】Linux 设置终端机的写入权限 mesg 命令 使用指南
【Shell 命令集合 网络通讯 】Linux 设置终端机的写入权限 mesg 命令 使用指南
24 0
|
7天前
|
安全 关系型数据库 应用服务中间件
连接rds设置网络权限
连接阿里云RDS需关注:1) 设置白名单,允许特定IP访问;2) 选择合适网络类型,如VPC或经典网络;3) 确保VPC内路由与安全组规则正确;4) 同VPC内可使用内网地址连接;5) 可启用SSL/TLS加密增强安全性。记得遵循最小权限原则,确保数据库安全。不同服务商操作可能有差异,但基本流程相似。
27 9
|
9月前
|
安全 Shell 网络安全
【网络安全】护网系列-windows权限维持
【网络安全】护网系列-windows权限维持
122 0
|
9月前
|
安全 Linux Shell
【网络安全】护网系列-权限维持-Linux权限提升&维持
【网络安全】护网系列-权限维持-Linux权限提升&维持
226 0
VS 无法在web服务器上启动调试。您没有调试web服务器进程的权限
VS 无法在web服务器上启动调试。您没有调试web服务器进程的权限
260 0
VS 无法在web服务器上启动调试。您没有调试web服务器进程的权限
|
NoSQL Linux Redis
【Linux必知必会】如何查看进程&数字法和文本法修改权限
这篇文章为大家介绍Linux面试时常问的问题
206 0
【Linux必知必会】如何查看进程&数字法和文本法修改权限