首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >"setenforce 0“如何以及为什么允许Java 7运行?

"setenforce 0“如何以及为什么允许Java 7运行?
EN

Stack Overflow用户
提问于 2013-02-06 07:08:18
回答 1查看 6.5K关注 0票数 3

我对我正在做的一个程序做了一些修改,并将Java 6更新为Java 7。

我正在运行一个CentOS 5.8 32位虚拟机上的程序.

在Java更新之前,它运行良好。

现在,这个过程不是从错误开始的:

代码语言:javascript
复制
 [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

我已经在线检查过了,解决方案/解决办法是运行以下命令:

代码语言:javascript
复制
   setenforce 0

而且会成功的。

阅读setenforce命令的文档时,我不知道它做了什么,以及它是如何解决问题的。

所以我的问题是:

  1. 是什么原因导致错误阻止我开始我的进程?
  2. 为什么setenforce命令会解决这个问题?
  3. 请简要解释一下setenforce一般做什么。
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-06 07:36:50

1)是什么原因使我无法开始我的过程?

此问题是由SELinux强制执行访问策略造成的,该策略禁止应用程序更改内存段的内存保护属性。

CentOS、Fedora、SELinux和RedHat Entrprise默认将SELinux设置为“强制”模式。

2)为什么使用setenforce命令解决这个问题? ( 3)简要解释力的一般作用

运行setenforce 0正在将SELinux切换到“允许”模式。

这个“修复”问题,但如果您的系统是公开的,这不是一个好主意。SELinux定向访问策略的思想是通过限制公开的服务所能做的事情来保护您的系统。例如,如果他们被黑了。你刚刚关掉了保护装置。

一个更好的办法是:

  • 检查安全/审计日志,
  • 找出究竟是什么触发了AVC警报
  • 决定服务做它正在做的事情是否实际上是安全的
  • 使用chcon找出一个临时修复来更改相关的安全上下文或标志。
  • 通过添加本地策略覆盖来实现永久修复。

但要做到这一点,你需要一些SELinux技能/知识。

在这种情况下,另一种(且危险程度要小得多的)“快速修复”方法是运行以下命令:

代码语言:javascript
复制
# chcon -t textrel_shlib_t /agent/jre/lib/i386/client/libjvm.so

但是请注意,如果您需要执行一个chcon,那么使用restorecon所做的临时安全上下文更改可能会被撤消。

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14723474

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档