У меня проблема при запуске tomcat на RHEL 8:
[root@TEST ~]# systemctl restart tomcat.service
Job for tomcat.service failed because the control process exited with error code.
See "systemctl status tomcat.service" and "journalctl -xe" for details.
[root@TEST ~]#
В journalctl я вижу:
-- Unit tomcat.service has begun starting up.
Dec 08 14:58:30 TEST systemd[3869]: tomcat.service: Failed to execute command: Permission denied
Dec 08 14:58:30 TEST systemd[3869]: tomcat.service: Failed at step EXEC spawning /mnt/efs/tomcat9/bin/catalina.sh: Permission denied
-- Subject: Process /mnt/efs/tomcat9/bin/catalina.sh could not be executed
-- Defined-By: systemd
-- Support: https://access.redhat.com/support
--
-- The process /mnt/efs/tomcat9/bin/catalina.sh could not be executed and failed.
--
-- The error number returned by this process is 13.
Dec 08 14:58:30 TEST systemd[1]: tomcat.service: Control process exited, code=exited status=203
Dec 08 14:58:30 TEST systemd[1]: tomcat.service: Failed with result 'exit-code'.
Dec 08 14:58:30 TEST systemd[1]: Failed to start Apache Tomcat Server.
-- Subject: Unit tomcat.service has failed
Проблема только тогда, когда SELinux находится в принудительном режиме, когда я выключаю Selinux, tomcat запускается правильно.
Права и контекст для файла catalina.sh:
[root@TEST ~]# ls -lZ /mnt/efs/tomcat9/bin/catalina.sh
-rwxr-x--x. 1 tomcat tomcat system_u:object_r:unconfined_exec_t:s0 23567 Oct 7 09:57 /mnt/efs/tomcat9/bin/catalina.sh
[root@TEST ~]#
Кажется, что SELinux блокирует systemd запускать скрипт с этого пути, но не знаю, как его изменить.
Есть ли у вас какие-либо идеи? У кого-то была такая же проблема с Selinux?
Большое спасибо!
Вам нужно будет исправить контекст файла в каталогах, где находится ваше приложение. Обычно это достигается с помощью semanage -a -t "правильный контекст" "каталог" и restorecon -Rv "каталог". Следующие ссылки помогут вам https://www.systutorials.com/docs/linux/man/8-tomcat_selinux/ и https://noobient.com/2017/10/02/selinux-woes-with-tomcat-on-centos-74/. Некоторые SELinux bools также могут нуждаться в настройке в зависимости от того, что именно делает ваше приложение.