linux - 在 (SVS-V) IPC 信号量上配置 SELinux 权限

标签 linux ipc selinux

我有一堆使用 IPC 信号量进行交互的程序 (semget)。

其中一个程序是 Apache 模块,它在(某种)受限的 SELinux 上下文中运行(我不太了解)。

该模块能够与任何常规文件正确交互,当然前提是这些文件的 SELinux 安全上下文设置得当。

但是 - 当我的(模块)访问 IPC 信号量时,semget 调用失败并返回 EPERM。当 SELinux 关闭时,我不会收到此错误。

所以 - 显然我需要做一些事情来设置某种 SELinux 安全上下文或信号量上的一些东西才能让它工作。如果它是一个普通文件,我可以在上面调用“chcon”。因为它是一个 System-V IPC 信号量,所以我不能那样做。

我该怎么做才能使这项工作成功?

最佳答案

获取SELinux的基本步骤处理您需要的更改是:

  1. 启用permissive mode
  2. 捕获拒绝
  3. 添加新的策略模块或修改现有的策略模块
  4. 启用强制模式并测试

具体如何执行这些步骤取决于您使用的 Linux 发行版;这是 CentOS 的引用资料, Debian , Gentoo , RedHatUbuntu .您还可以从 NSA 中找到 SELinux 信息。 .我找到的最好的文档来自 Gentoo:step 1 , step 2 , step 3 , step 4 .

作为@smassey noted ,您很可能需要修改一些 IPC permission .

关于linux - 在 (SVS-V) IPC 信号量上配置 SELinux 权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7572974/

相关文章:

linux - 在 unix 中并行运行多个命令

linux - Boost.Python 快速入门失败

c - 如何处理 strerror_r 函数返回的指针?

java - 将文件用于共享内存 IPC

android - Android 上如何获取指定文件的 SELinux 上下文?

linux - Mongo 连接溢出

c - openMPI 在服务器集群上运行期间无限等待?

c - 用于 IPC 的 sprintf 或 itoa 或 memcpy

php - 如何使用 semanage 递归地获取持久化特定文件类型

android - 无法将文件推送到设备