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

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

简洁版本: 允许 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`

我发现一些文章指出这可能是由于 SELinux 造成的,并尝试setenforce 0看看问题是否消失。我运行了该命令,Java 工作了。但这些文章说,留setenforce 0在连接互联网的主机上是危险的,而我的主机已连接到互联网。

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

chcon -t textrel_shlib_t /usr/jre1.7.0_10/lib/i386/client/libjvm.so

...在上面的命令中,命令末尾的路径被替换为我的 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

答案1

  1. 清理当前安装

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

    yum -y localinstall /path/to/downloaded-java.rpm
    

休息会得到照顾。

相关内容