Permissions

在 Yum 更新後 SELinux 阻止 RHEL 7 中的 Tomcat 7 服務

  • November 29, 2017

我執行了 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 & ApacheRH 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

引用自:https://serverfault.com/questions/884014