SELinux 不断阻止我的 Apache 实例

SELinux 不断阻止我的 Apache 实例

我正在使用 CentOS 7,并使用那里的 systemd 结构设置了重复的 Apache 实例。

如果我使用 setenforce 0,我可以让两个 Apache 运行。但是,当我使用 setenforce 1 时,新的 Apache 将无法启动。

我尽力检查了我创建的所有文件,并使用“ls -Z”复制了 SELinux 类型,然后将 chcon 复制到与 httpd 相同的位置。

我收到的失败消息是:

[Thu Jun 23 23:51:24.123185 2016] [core:notice] [pid 24944] SELinux policy enabled; httpd running as context system_u:system_r:httpd_t:s0
[Thu Jun 23 23:51:24.124434 2016] [suexec:notice] [pid 24944] AH01232: suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Thu Jun 23 23:51:24.146830 2016] [auth_digest:notice] [pid 24944] AH01757: generating secret for digest authentication ...
[Thu Jun 23 23:51:24.147901 2016] [lbmethod_heartbeat:notice] [pid 24944] AH02282: No slotmem from mod_heartmonitor
[Thu Jun 23 23:51:24.147983 2016] [core:error] [pid 24944] (13)Permission denied: AH00099: could not create /etc/httpd-bobby/httpd-bobby.pid
[Thu Jun 23 23:51:24.148000 2016] [core:error] [pid 24944] AH00100: httpd-bobby: could not log pid to file /etc/httpd-bobby/httpd-bobby.pid

但该位置有 httpd 上下文:

[root~]# ls -Z /etc | grep httpd
drwxr-xr-x. root root system_u:object_r:httpd_config_t:s0 httpd
drwxr-xr-x. root root unconfined_u:object_r:httpd_config_t:s0 httpd-bobby

我知道它是 SELinux,因为它与 setenforce 0 一起工作。我做错了什么?

答案1

有多个 httpd 上下文,但这不是正确的一个。

pid 文件所在的目录应该具有上下文httpd_var_run_t

我不建议将其放在 /etc 中,而是在 /var/run 中创建一个。

要永久设置正确的上下文,例如 /var/run/httpd-bobby:

semanage fcontext -a -t httpd_var_run_t "/var/run/httpd-bobby(/.*)?" && restorecon /var/run/httpd-bobby

相关内容