SELinux 策略阻止 Tomcat 启动

SELinux 策略阻止 Tomcat 启动

在新建的 Oracle Linux 8 服务器上,我添加了驱动器和文件系统,然后通过 tarball 将 Apache Tomcat 放在该文件系统中。现在,当通过服务文件启动 Tomcat 时,我收到一条错误消息,提示 Tomcat 尚未启动,并且我的 journalctl 文件显示以下内容:

4 月 4 日 09:53:17 t-einv systemd[1]: 无法启动 Apache Tomcat Web 应用程序容器。-- 主题:单元 tomcat.service 已失败 -- 定义者:systemd -- 支持:https://support.oracle.com

-- 单元 tomcat.service 已失败。

-- 结果失败。 4 月 4 日 09:53:17 t-einv setroubleshoot[2924]: AnalyzeThread.run(): 取消待处理的警报 4 月 4 日 09:53:17 t-einv setroubleshoot[2924]: SELinux 正在阻止 /usr/lib/systemd/systemd 对文件 /u01/tomcat/bin/startup.sh 执行 execute_no_trans 访问。 要查看完整的 SELinux 消息,请运行:sealert -l 97dddf7a-4f8a-4> 4 月 4 日 09:53:17 t-einv setroubleshoot[2924]: SELinux 正在阻止 /usr/lib/systemd/systemd 对文件 /u01/tomcat/bin/startup.sh 执行 execute_no_trans 访问。

                                         *****  Plugin catchall (100. confidence) suggests   **************************

                                         If you believe that systemd should be allowed execute_no_trans access on the startup.sh file by default.
                                         Then you should report this as a bug.
                                         You can generate a local policy module to allow this access.
                                         Do
                                         allow this access for now by executing:
                                         # ausearch -c '(artup.sh)' --raw | audit2allow -M my-artupsh
                                         # semodule -X 300 -i my-artupsh.pp

4 月 4 日 09:53:17 t-einv setroubleshoot[2924]: AnalyzeThread.run(): 将警报超时设置为 10

tomcate/bin 目录上的 ruunig ls -FlasZ 显示 startup.sh 上的以下 selinux 策略

unconfined_u:object_r:default_t:s0 1904 年 4 月 3 日 09:27 startup.sh*

关于如何永久改变政策以使其运行,您有什么想法吗?

答案1

为了安全起见,Web服务器无法使用默认的selinux策略执行可写文件。

如果需要(例如,对于缓存的编译文件),请运行setsebool -P httpd_execmem 1

如果不是,请删除需要 tomcat 执行的文件的写权限。(/u01/tomcat/bin/startup.sh此处)

此外,我发现用命令来理解拒绝会更容易audit2allow -a

相关内容