Yum 更新后,SELinux 在 RHEL 7 中阻止 Tomcat 7 服务

Yum 更新后,SELinux 在 RHEL 7 中阻止 Tomcat 7 服务

我执行了 Yum 更新,Tomcat 访问文件的能力已被破坏。

SEVERE: Failed to load keystore type JKS with path /var/websvr/certs/keyfile.jks due to /var/websvr/certs/keyfile.jks (Permission denied)
java.io.FileNotFoundException: /var/websvr/certs/keyfile.jks (Permission denied)

尽管 tomcat 用户ownership and full permissions不仅拥有文件,而且拥有整个目录

-rwxrwxrwx. 1 tomcat   tomcat 4829 Aug 19  2016 keyfile.jks

并且我已验证 正在Tomcat下运行tomcat user。那么,为什么仍然阻止访问?

Red Hat Enterprise Linux 服务器版本 7.4 (Maipo)

编辑

AB的评论 - /var/log/audit/audit.log

type=AVC msg=audit(1511208892.087:392): avc:  denied  { read } for  pid=770 comm="java" name="keyfile.jks" dev="xvda2" ino=9641897 scontext=system_u:system_r:tomcat_t:s0 tcontext=unconfined_u:object_r:var_t:s0 tclass=file

所以似乎这与 SELinux 有关。我尝试解决,但类似这样的帖子这个需要 Red Hat 订阅。

使用RH 文档:SELinux 和 Apache, 和这个结合RH SELinux 文档- 我认为要解决这个问题,keyfile.jks文件必须标有:

tomcat_t:tomcat_t:tomcat_sys_content_t:s0

这是对 tomcat_t 角色中受限用户 tomcat_t 的只读访问权限。该文件当前标记为:

unconfined_u:object_r:var_t:s0

以绕过额外的 SELinux 文件限制。

任何指导都值得感激!

答案1

如果您想用 tomcat_sys_content_t 标记 /var/websvr/certs/keyfile.jks,那么您可以创建客户文件上下文

semanage fcontext -a /var/websvr/certs/keyfile.jks -t tomcat_sys_content_t
restorecon /var/websvr/certs/keyfile.jks

如果由于 tomcat_sys_content_t 不存在而不起作用,则替换tomcat_t或者可能证书颁发机构在上面的命令中。

相关内容