简短版: 允许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
在Internet上连接的主机很危险,并且我的主机已连接到Internet。
还有其他文章建议使用这种下一种方法,但也说这可能很危险,所以我还没有尝试过。
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
您可以将其安装在主目录中吗?
—
托尔比约恩Ravn的安德森
@ThorbjørnRavnAndersen:好吧,我想我可以,但是它作为守护程序运行,更具体地来说是Tomcat服务器,因此从我的主目录运行Tomcat服务器感觉有点草率。
—
约翰·菲茨帕特里克
基本上是对stackoverflow.com/q/14723474/560648的欺骗。
—
Lightness比赛于
chcon
解决方案看起来是合理的。最后一个解决方案与没什么不同setenforce 0
。