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 

我已经validationTomcat是在tomcat user下运行的。 那么,为什么访问仍然被阻止?

红帽企业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相关的 。 我试图解决,但像这样的职位需要红帽订阅。

我想解决这个问题, keyfile.jks文件必须标记为:

 tomcat_t:tomcat_t:tomcat_sys_content_t:s0 

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

 unconfined_u:object_r:var_t:s0 

去超过额外的SELinux文件限制。

任何指导表示赞赏!

如果要使用tomcat_sys_content_t标记/var/websvr/certs/keyfile.jks,则可以创build客户文件上下文

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

如果因为tomcat_sys_content_t不存在而无法工作,则在上面的命令中replacetomcat_t或可能的pki_tomcat_cert_t