Я выполнил обновление 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)
редактировать
Из А. Б.комментарий - /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 Doc - Думаю, решить эту проблему keyfile.jks
файл должен быть помечен:
tomcat_t:tomcat_t:tomcat_sys_content_t:s0
который является доступом только для чтения для ограниченного пользователя tomcat_t в роли tomcat_t. В настоящее время файл помечен:
unconfined_u:object_r:var_t:s0
чтобы обойти дополнительные ограничения файлов SELinux.
Любое руководство приветствуется!
Если вы хотите пометить /var/websvr/certs/keyfile.jks с помощью tomcat_sys_content_t, вы можете создать контекст файла клиента
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 в команде выше.