13

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

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

该模块能够正确地与任何常规文件进行交互,当然,如果这些文件具有适当的 SELinux 安全上下文设置。

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

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

我能做些什么来完成这项工作?

4

2 回答 2

2

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

  1. 使能够许可模式
  2. 捕获拒绝
  3. 添加新策略模块或修改现有策略模块
  4. 启用强制模式和测试

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

正如@smassey 所指出的,您很可能需要修改一些IPC 权限

于 2011-10-07T13:37:52.400 回答
0

SELinux 不仅有常规文件的权限设置,还有设备和特殊文件的权限设置。

http://seedit.sourceforge.net/doc/access_vectors/access_vectors.html#SECTION00044000000000000000是您正在寻找的。授予“sem”对象读/写/等权限。

干杯

于 2011-10-07T09:26:19.787 回答