我有一堆使用 IPC 信号量进行交互的程序 (semget)。
其中一个程序是 Apache 模块,它在(某种)受限的 SELinux 上下文中运行(我不太了解)。
该模块能够与任何常规文件正确交互,当然前提是这些文件的 SELinux 安全上下文设置得当。
但是 - 当我的(模块)访问 IPC 信号量时,semget 调用失败并返回 EPERM。当 SELinux 关闭时,我不会收到此错误。
所以 - 显然我需要做一些事情来设置某种 SELinux 安全上下文或信号量上的一些东西才能让它工作。如果它是一个普通文件,我可以在上面调用“chcon”。因为它是一个 System-V IPC 信号量,所以我不能那样做。
我该怎么做才能使这项工作成功?
最佳答案
获取SELinux的基本步骤处理您需要的更改是:
- 启用permissive mode
- 捕获拒绝
- 添加新的策略模块或修改现有的策略模块
- 启用强制模式并测试
具体如何执行这些步骤取决于您使用的 Linux 发行版;这是 CentOS 的引用资料, Debian , Gentoo , RedHat和 Ubuntu .您还可以从 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/