2010-02-09 57 views
2

我最近在安装了相当基本的SELinux的系统上安装了Sun Java。SELinux阻止Java运行

我正在运行Debian Etch并从非免费软件包存储库安装Sun Java软件包。

以下是我在运行java -version时出现在系统日志中的错误通知。

`Feb 9 14:02:40 dev kernel:audit(1265742160.570:4107):avc:denied {execmem} for pid = 9882 comm =“java”scontext = user_u:system_r:unconfined_t:s0 tcontext = user_u: system_r:unconfined_t:s0 tclass = process

Feb 9 14:02:40 dev kernel:audit(1265742160.578:4108):avc:denied {execmem} for pid = 9882 comm =“java”scontext = user_u:system_r: unconfined_t:S0 = tcontext user_u:system_r:unconfined_t:S0 = tclass process`

我周围的一派,似乎我需要创建一个SELinux策略允许的Java执行违反execmem约束操作。这是一个正确的假设吗?如果是这样,我该如何开始?

更新:

我查找并找到了一个旨在处理Java的目标策略。我安装它使用以下命令:

$ sudo semodule -i /usr/share/selinux/refpolicy-targeted/java.pp

这并没有帮助,但是。我继续在syslog中看到相同的审计消息。

+0

@jkndrkn:大多数Linux发行版的主要安全缺陷之一是,您需要root来安装.deb或.rpm软件包。看起来你担心安全问题。我确定。这就是为什么我永远不会以root身份安装Java。我将.tar.gz作为用户从用户帐户安装。在Windows上,如果没有管理员密码,您将无法安装Java。在Linux上,你可以。如果您担心安全问题,永远不要以root身份安装Java。 (可能不会帮助你的SELinux问题,但认为我会提到它,大多数人不知道你可以在普通的用户帐户中安装Java) – SyntaxT3rr0r

+1

@Wizardofodds实际上,你可以在chroot中安装rpm和.deb。我不认为你可以把它称为Linux的一个安全漏洞,当替代品是Windows时,绝对一切都以超级用户的身份运行,你不能像普通用户那样安装任何东西。 – rook

回答

2

本指南:http://etbe.coker.com.au/2006/12/08/se-linux-on-debian-in-5-minutes/和#selinux上的dgrift提供了正确的解决方案。

# semodule -i /usr/share/selinux/refpolicy-targeted/java.pp 
# restorecon -r -v /usr 

还有就是必须使用semodule应用可用于Java有针对性的政策。一旦应用策略,必须使用restorecon将策略应用于Java二进制文件。