Permissions
在 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 Server 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 Doc for SELinux & Apache與RH SELinux Doc結合使用- 我認為要解決此問題,該
keyfile.jks
文件必須標有:tomcat_t:tomcat_t:tomcat_sys_content_t:s0
這是角色 tomcat_t 中受限使用者 tomcat_t 的只讀訪問權限。該文件目前標記為:
unconfined_u:object_r:var_t:s0
克服額外的 SELinux 文件限制。
任何指導表示讚賞!
如果你想用 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或可能的pki_tomcat_cert_t。