我对我正在做的一个程序做了一些修改,并将Java 6更新为Java 7。
我正在运行一个CentOS 5.8 32位虚拟机上的程序.
在Java更新之前,它运行良好。
现在,这个过程不是从错误开始的:
[root@CentOS-58-i-0 bin]# ./agent.sh start
Starting Agent.....d. running (23442).
Error: dl failure on line 864
Error: failed /agent/jre/lib/i386/client/libjvm.so,
because /agent/jre/lib/i386/client/libjvm.so:
cannot restore segment prot after reloc: Permission denied我已经在线检查过了,解决方案/解决办法是运行以下命令:
setenforce 0而且会成功的。
阅读setenforce命令的文档时,我不知道它做了什么,以及它是如何解决问题的。
所以我的问题是:
setenforce命令会解决这个问题?setenforce一般做什么。发布于 2013-02-06 07:36:50
1)是什么原因使我无法开始我的过程?
此问题是由SELinux强制执行访问策略造成的,该策略禁止应用程序更改内存段的内存保护属性。
CentOS、Fedora、SELinux和RedHat Entrprise默认将SELinux设置为“强制”模式。
2)为什么使用setenforce命令解决这个问题? ( 3)简要解释力的一般作用
运行setenforce 0正在将SELinux切换到“允许”模式。
这个“修复”问题,但如果您的系统是公开的,这不是一个好主意。SELinux定向访问策略的思想是通过限制公开的服务所能做的事情来保护您的系统。例如,如果他们被黑了。你刚刚关掉了保护装置。
一个更好的办法是:
chcon找出一个临时修复来更改相关的安全上下文或标志。但要做到这一点,你需要一些SELinux技能/知识。
在这种情况下,另一种(且危险程度要小得多的)“快速修复”方法是运行以下命令:
# chcon -t textrel_shlib_t /agent/jre/lib/i386/client/libjvm.so但是请注意,如果您需要执行一个chcon,那么使用restorecon所做的临时安全上下文更改可能会被撤消。
https://stackoverflow.com/questions/14723474
复制相似问题