允许 Java 7 在 SELinux 上运行的安全方法是什么

Joh*_*ick 9 linux selinux java

简短版本: 允许 Java 7 在(与?)SELinux 上运行的最安全方式是什么?

长版:

如果我使用了不正确的术语,请提前抱歉。我真的只是一名 Java 开发人员,对 Linux 技能知之甚少。

我刚刚在 CentOS 5.3 版(最终版)上安装了 Java 7,它显然具有安全增强的 Linux。安装完成后(我通过从 Oracle 中解压缩 tar.gz 文件来“安装” /usr/java/jdk/jdk1.7.0_25),我运行java -version并得到这个错误:

Error: dl failure on line 864
Error: failed /usr/java/jdk1.7.0_25/jre/lib/i386/server/libjvm.so,
      because /usr/java/jdk1.7.0_25/jre/lib/i386/server/libjvm.so:
      cannot restore segment prot after reloc: Permission denied`
Run Code Online (Sandbox Code Playgroud)

我发现一些文章指出这可能是由于 SELinux 并尝试 setenforce 0查看问题是否消失。我运行了那个命令,Java 工作了。但是这些相同的文章说,离开setenforce 0连接到 Internet 的主机是危险的,而我的主机已连接到 Internet。

还有其他文章提出了下一种方法,但也说它可能很危险,所以我还没有尝试过。

chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so
Run Code Online (Sandbox Code Playgroud)

...在上面的命令中,命令末尾的路径替换为我的 JDK 路径。

我找不到关于如何安全地在(使用?)SELinux 上运行 Java 7 的“官方”(这可能意味着很多事情)。有没有人有任何信息给我?

编辑: 我发现了一篇提到编辑/etc/selinux/config. 我已设置如下示例所示。这允许 Java 运行,但我认为我现在有一些安全漏洞。

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#       enforcing - SELinux security policy is enforced.
#       permissive - SELinux prints warnings instead of enforcing.
#       disabled - SELinux is fully disabled.
SELINUX=permissive
# SELINUXTYPE= type of policy in use. Possible values are:
#       targeted - Only targeted network daemons are protected.
#       strict - Full SELinux protection.
SELINUXTYPE=targeted
Run Code Online (Sandbox Code Playgroud)

use*_*441 2

  1. 清理当前安装

  2. 下载 RPM 文件 ( http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html )

    yum -y localinstall /path/to/downloaded-java.rpm
    
    Run Code Online (Sandbox Code Playgroud)

休息会得到照顾。

  • 为什么这是解决方案? (4认同)
  • @eyoung100:不,我的观点是这个答案没有解释任何事情。它应该解释_为什么_删除和替换安装可以解决问题,并给出执行此操作的步骤。我也问,因为我从 RPM 安装但仍然遇到问题。 (3认同)