【问题标题】:SELinux context seems incorrect for java对于 java,SELinux 上下文似乎不正确
【发布时间】:2021-03-21 11:23:25
【问题描述】:

我遇到了一个问题,Tomcat 无法使用 systemctl start 启动,但在以 root 身份从命令行执行脚本时启动正常。这似乎指向权限问题,但在检查文件所有权和组时,一切都是 tomcat:tomcat。而且,它过去启动得很好,并且“突然”停止了 systemctl start 启动(除了,必须有一个原因)。

我在这里发布了这个问题:

Tomcat 9 no longer starting using systemctl but will start manually

我会第一个说,尽管我现在阅读的有关 SELinux 的内容比我想的要多,但我仍然不能 100% 确定它是如何工作的,或者在这种情况下会导致问题。以下是我目前发现的内容以及随之而来的问题。

根据我对 SELinux 的了解,在 Permissive 模式下,它会审核访问,但不会阻止访问或导致问题。真的吗?在我的情况下,sestatus 显示:(CENTOS7)

SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   permissive
Mode from config file:          permissive
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      31

既然是宽容的,那么它应该不会影响任何事情,不是吗?但坚持认为它可能我发现了以下内容:

java 可执行文件,实际上 /opt/jdk1.8.0_121/bin/ 中的所有可执行文件都归“10:143”所有,这表明无论用户是拥有它的用户,它都已被删除或不存在(我是由于安装时的问题)。因此,我将所有者更改为 root:root,它与我拥有的 CENTOS8 VM 中的 java 可执行文件相匹配。那没有解决问题。所以我使用“ll -Z”命令列出了文件的上下文。所有的可执行文件都是 unconfined_u:object_r:usr_t:s0 。当我检查 CENTOS8 java 文件夹可执行文件时,它们是 system_u:object_r:bin_t:s0 在我更好地理解后果之前,我不愿意更改有关文件的任何其他内容。

所以,我认为是 Tomcat 问题,似乎是权限问题,特别是 SELinux 问题(虽然我不确定)。

所以问题是:

  1. 我在这里走的是正确的道路吗?即使 SELinux 模式是允许的,但仍需要正确设置上下文?
  2. 有没有办法重置文件,除了重新安装 java,可以解决上下文问题吗?看起来 restorecon 可能会这样做,但我不想制造更多问题。
  3. 在追查问题根源的过程中,我没有创建太多的 tomcat 问题。 systemctl start 在启动时会导致“找不到类”错误,我知道这是一个权限,而不是类路径问题(请记住,这可以通过 root 直接运行脚本而不是 systemctl start 启动)。但是有没有工具或日志可以用来查看权限失败的原因以及原因? audit.log 并没有说明太多关​​于 tomcat 或 java 的问题。

就是这样。我对这个问题有点困惑,但我宁愿把它修好,而不是花更多时间试图弄清楚它是如何做到的。无论如何,修复可能会指出我的原因。

【问题讨论】:

    标签: java tomcat centos7 selinux


    【解决方案1】:

    所以,这和大多数“谜团”一样都是自己造成的。我仍然无法解释我在查看实例之间的 SELinux 上下文时看到的一些差异,但真正的原因是微妙的(对我来说)。 {tomcat root}/lib 和 {tomcat root}/lib/ext 的权限没有执行权限。这可能是由于最近添加了一个 jar,然后需要由所有者和权限更新。无论如何,最初的问题导致了许多尝试和错误的尝试来修复它,这使事情变得更加复杂。

    我通过对工作实例和非工作实例进行逐个文件夹、逐个文件的比较来发现解决方案。显然,新 jar 和所有者/权限更改已应用于除生产版本之外的所有版本。

    是的,是权限问题,但不是 SELinux 权限问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-15
      • 1970-01-01
      • 1970-01-01
      • 2023-03-19
      • 2013-12-03
      • 2012-06-09
      • 2014-07-16
      • 2023-01-08
      相关资源
      最近更新 更多