我目前正在尝试允许 PHP 应用程序管理后台作业 - 然而这在 selinux 下似乎更困难,因为 php 进程似乎无法访问其他 httpd 进程的 /proc/{pid} 。
基本上,目标是确定两件事:
需要注意的是,我对 SELinux 完全一无所知,但我的搜索/手册页阅读并没有让我更进一步。
任何帮助将不胜感激。
file_exists("/proc/$pid/status")
- setenforce 1 失败。file_exists("/proc/$pid")
本身,然后检查目录的所有者 - file_exists() 部分有效,但对目录的任何检查都会失败期望是通过 php 进程检索上述两个数据点的方法:
/proc/{pid} 目录获取与 {pid} 进程相同的 SELinux 上下文。
因此,您需要允许 PHP 进程查看
httpd_t
目录的存在,获取其属性(所有者、组、权限等)并遍历这些目录,以便 PHP 进程可以读取 /proc/{ pid}/状态文件。
但是你必须意识到一个问题(在安全方面):
status
文件具有httpd_t
SELinux类型;所以,如果你允许PHP进程打开并读取这些文件,你也会让PHP进程读取/proc/{pid}/下的许多文件!幸运的是,他们中的许多人都有相当保护性的 DAC 权限。
为了达到你的期望,你需要编译一小段SELinux策略代码。 您可以选择仅允许您需要的内容:允许 PHP 进程在
getattr
目录上进行 httpd_t
(只需查看 /proc/{pid} 目录并获取其所有者即可)。
或者您可以选择允许 PHP 进程使用 kernel_search_proc()
宏查看任何正在运行的进程状态(在 RedHat/CentOS/Fedora/Alma...)