在linux环境下执行某些程序时,偶尔会遇到来一个关于selinux的强制模式不可执行的情况,这种情况下需要关闭selinux或者将enforcing改为permissive模式后才能进行执行。selinux是Linux内核中提供的强制访问控制(MAC)系统,下面就对selinux的几种模式及其转换进行总结:

selinux的启动、关闭与查看
1)目前selinux支持三种模式,分别如下:
•enforcing:强制模式,代表selinux运作中,且已经正确的开始限制 domain/type 了;
•permissive:宽容模式:代表selinux运作中,不过仅会有警告讯息并不会实际限制 domain/type 的存取。这种模式可以运来作为 selinux 的 debug 之用;
•disabled:关闭,selinux 并没有实际运作。 2)查看selinux的模式
[root@localhost ~]# getenforce
Enforcing //显示出目前的模式为 Enforcing 3)查看 selinux的政策 (Policy)?
[root@localhost ~]# sestatus
selinux status: enabled //是否启动 selinux
selinuxfs mount: /selinux //selinux 的相关文件资料挂载点
Current mode: enforcing //目前的模式
Mode from config file: enforcing //设定档指定的模式
Policy version: 21
Policy from config file: targeted //目前的政策为何? 4)通过配置文件调整selinux的参数
[root@localhost ~]# vim /etc/selinux/config
selinux=enforcing //调整 enforcing|disabled|permissive
selinuxTYPE=targeted //目前仅有 targeted 与 strict 5)selinux的启动与关闭
上面是预设的政策与启动的模式!需要注意的是,如果改变了政策则需要重新开机;如果由enforcing或permissive改成disabled,或由disabled改成其他两个,那也必须要重新开机。这是因为 selinux 是整合到核心里面去的, 你只可以在 selinux 运作下切换成为强制 (enforcing) 或宽容 (permissive) 模式,不能够直接关闭 selinux 的!
同时,由selinux关闭 (disable) 的状态到开启的状态也需要重新开机! 查看selinux状态:
a)/usr/sbin/sestatus -v //如果selinux status参数为enabled即为开启状态
selinux status: enabled
b)getenforce //也可以用这个命令检查 关闭selinux:
a)临时关闭(不用重启机器):
setenforce 0 //设置selinux 成为permissive宽容模式
setenforce 1 //设置selinux 成为enforcing强制模式 b)修改配置文件需要重启机器:
修改/etc/selinux/config 文件
将selinux=enforcing改为selinux=disabled
重启机器即可 如果你要启动selinux的话,请将上述的selinux=enforcing设定妥当,并且指定selinuxTYPE=targeted 这一个设定,并且到/boot/grub/menu.lst这个文件去,看看核心有无关闭selinux。
[root@localhost ~]# vi /boot/grub/menu.lst
default=0
timeout=5
splashimage=(hd0,0)/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.18-92.el5)
root (hd0,0)
kernel /vmlinuz-2.6.18-92.el5 ro root=LABEL=/1 rhgb quiet selinux=0
initrd /initrd-2.6.18-92.el5.img 如果要启动selinux ,则不可以出现 selinux=0的字样在kernel后面! =======================================================
温馨提示一个坑点:
一般而言,要关闭服务器的selinux功能,常用下面两种方法:
1)临时关闭
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce 2)永久关闭
[root@localhost ~]# cat /etc/sysconfig/selinux
SELINUX=disabled
[root@localhost ~]# reboot 之前碰到一个坑,如上设置SELINUX为disabled,并reboot重启服务器后,selinux并没有关闭! 最后发现原因是:
/etc/selinux/config文件里面的SELINUX值没有改过来,所以重启不生效!
一般而言,服务器系统安装后,/etc/sysconfig/selinux会默认为/etc/selinux/config的软链接,所以只需修改/etc/sysconfig/selinux文件中的SELINUX为disabled即可!
因为系统启动后默认会以/etc/selinux/config为主。 [root@localhost ~]# ll /etc/sysconfig/selinux
lrwxrwxrwx. 1 root root 17 Apr 27 02:41 /etc/sysconfig/selinux -> ../selinux/config 但之前碰到过的现象是: /etc/sysconfig/selinux 并不是/etc/selinux/config的软链接,所以这个细节要留意,如果不是软链接关系,就最好两个文件都修改下!

Linux下selinux简单梳理的更多相关文章

  1. Linux下一个简单的日志系统的设计及其C代码实现

    1.概述 在大型软件系统中,为了监测软件运行状况及排查软件故障,一般都会要求软件程序在运行的过程中产生日志文件.在日志文件中存放程序流程中的一些重要信息, 包括:变量名称及其值.消息结构定义.函数返回 ...

  2. linux下EOF写法梳理 自动新建分区并挂载的脚本

    linux下EOF写法梳理 - 散尽浮华 - 博客园 https://www.cnblogs.com/kevingrace/p/6257490.html 在平时的运维工作中,我们经常会碰到这样一个场景 ...

  3. Linux下的简单好用的计算器bc

    1. 关于bc bc是随意精度计算器语言,通常在linux下当计算器用,简单好用.相当于windows下的计算器. 2. 支持的运算符 主要的数学运算: + 加法 - 减法 * 乘法 / 除法 ^ 指 ...

  4. [Android] Linux下JNI简单实现过程

    大概梳理了一下JNI的过程: start->先写好A.java文件,里面添加native方法B,调用库C.so->编译成.class文件->用javac生成.h文件,文件包含Java ...

  5. 小知识积累-linux下一些简单开发配置

    系统环境为 redhat enterprise 6.x,主要是针对初学者在linux下用gcc和vi简单测试开发的一些配置 1.vi 自动换行 在终端下敲入vi命令打开文件 : vi ~/.vimrc ...

  6. (转)live555在Linux下最简单地实现实时流媒体点播

    通过Live555交叉编译后运行发现,上面实现的流媒体实时通过文件服务器的文件点播,没有相关的流媒体实现方式, 但在Linux下,可以通过某些技巧实现Live555服务器实时流媒体服务器,并且是傻瓜式 ...

  7. linux下最简单的端口转发工具

    linux下简单好用的工具rinetd,实现端口映射/转发/重定向 官网地址http://www.boutell.com/rinetd 软件下载wget http://www.boutell.com/ ...

  8. Linux下一个简单sniffer的实现

    Sniffer(嗅探器)是一种基于被动侦听原理的网络分析方式.将网络接口设置在监听模式,便可以将网上传输的源源不断的信息截获.对于网络监听的基本原理我们不在赘述,我们也不开启网卡的混杂模式,因为现在的 ...

  9. linux下EOF写法梳理

    在平时的运维工作中,我们经常会碰到这样一个场景:执行脚本的时候,需要往一个文件里自动输入N行内容.如果是少数的几行内容,还可以用echo追加方式,但如果是很多行,那么单纯用echo追加的方式就显得愚蠢 ...

随机推荐

  1. 游标和递归sql 的一些代码

    DECLARE @UserID INT; --推广员帐号 DECLARE @ProxyID INT; --代理帐号 ; --分数 SELECT @UserID = [SpreaderID] FROM ...

  2. Linux进程描述符task_struct结构体详解--Linux进程的管理与调度(一)【转】

    Linux内核通过一个被称为进程描述符的task_struct结构体来管理进程,这个结构体包含了一个进程所需的所有信息.它定义在include/linux/sched.h文件中. 谈到task_str ...

  3. nginx重新安装 引起的问题

    问题描述: 今天开发测试环境的网站需要做https认证,默认安装的nginx没有 http_ssl_module 模块,需要重新加载nginx  安装  http_ssl_module ,我采用的是默 ...

  4. CentOS7.4下编译Hadoop-2.7.6

    1. 使用系统和软件 操作系统:CentOS Linux release 7.4.1708 (Core) 64位 使用软件如下: jdk1.8.0_112.tar.gz hadoop-2.7.6-sr ...

  5. ccf-20160903--炉石传说

    本题思路如下图: 题目和代码如下: 问题描述 试题编号: 201609-3 试题名称: 炉石传说 时间限制: 1.0s 内存限制: 256.0MB 问题描述: 问题描述 <炉石传说:魔兽英雄传& ...

  6. ARC设置

    XCode兼容ARC和非ARC代码的方法 在ARC开发模式下引用非ARC文件或库需进行如下操作以告诉编译器此代码需按照非ARC模式对待: XCode中项目文件->TARGETS->Comp ...

  7. 教程+资源,python scrapy实战爬取知乎最性感妹子的爆照合集(12G)!

    一.出发点: 之前在知乎看到一位大牛(二胖)写的一篇文章:python爬取知乎最受欢迎的妹子(大概题目是这个,具体记不清了),但是这位二胖哥没有给出源码,而我也没用过python,正好顺便学一学,所以 ...

  8. Nginx使用教程(一):下载并编译安装Nginx

    安装依赖 <br\>我们已经选择下载程序源代码进行手动编译,而不是使用软件包管理器(如Yum,Aptitude或Yast)进行安装. 这个选择有两个原因. 首先,软件包可能不包含在您的Li ...

  9. el-table表格标题换行

    在做一些管理后台的项目中,表格时最常见的,当有时数据字段多时往往会用滚动条,但从用户体验角度讲,肯定需要多展示信息,那么可能需要一个单元格放多个字段,这时候表头就需要换行. 具体实现如下: // 注意 ...

  10. js中Math之random,round,ceil,floor的用法总结

    1.Math.random(); 结果为0-1间的一个随机数(包括0,不包括1) 2.Math.floor(num); 参数num为一个数值,函数结果为num的整数部分(返回小于等于n的最大整数). ...