我执行了一个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 。