我有一个在 RHEL5 安装上的 apache 服务器中运行的 php 脚本。此脚本在“rpm -q --info packagename”上运行 exec。
问题是它在许可模式下与 selinux 一起正常工作,但在完全启用时不能正常工作。所以我认为这是一个selinux问题。
我已经开始使用 audit2allow 根据我发现的拒绝条目创建规则,但现在审核日志中不再有拒绝,但它仍然无法在启用 selinux 的情况下运行。
在我的世界里,它似乎会询问系统是否允许运行,当 selinux 说“如果你尝试这个,我会阻止你”。所以系统不运行exec。如果是这样,我假设我会得到一个“拒绝”,我可以根据它创建一个新的 selinux 规则。在允许 selinux 的情况下,我也没有被拒绝,但它可以工作..
所以看来我将不得不以艰难的方式处理这个问题并为 selinux 创建一个自定义规则。说了又做了,我做了一个:
module php_rpm 1.0;
require {
type httpd_t;
type bin_t;
type rpm_exec_t;
type rpm_var_lib_t;
class file { execute execute_no_trans getattr read execmod };
class dir { getattr search };
}
#============= httpd_t ==============
allow httpd_t rpm_exec_t:file { execute execute_no_trans getattr read execmod };
allow httpd_t rpm_var_lib_t:dir { getattr search };
不幸的是,这对我的问题没有任何影响,但假设我的 selinux 规则有点混乱:P
有没有人尝试在启用 selinux 的情况下从 php 执行 rpm 并侥幸逃脱?