点击返回自学Linux集锦

linux异常处理:selinux配置错误导致无法重启

一次linux无法重启异常记录:

当时第一反应就是梳理最近的配置变更,特别是能预知相关的就是selinux配置变更。

原来是误将SELINUXTYPE看成SELINUX后,将其值改为disabled。导致操作系统服务启动,无法进入单用户模式。变更回来之后,一切正常。

解决方法一:

系统启动的时候,按下‘e’键进入grub编辑界面,编辑grub菜单,使用上下键选择“kernel ” 一行,按‘e’键进入编辑,在末尾增加“enforcing=0”,按“enter”保存设置并退到上一层,按‘b’键继续引导后正常开机。收到

恢复“/etc/selinux/config”中的配置信息。再按需求修改“SELINUX=disabled”。

解决方法二:

直接更改。

下面就是谈谈selinux。

安全增强型 Linux(Security-Enhanced Linux)

SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。

SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。

1、SELinux 的作用及权限管理机制

1.1 SELinux 的作用

SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)。

目前系统文件权限的管理有两种:DAC(传统的) 和 MAC(SELinux)

1.2 DAC

传统的文件权限与帐号关系:自主式存取控制, DAC(Discretionary Access Control, DAC)

在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。

只要访问这个资源的进程符合以上的条件就可以被访问。

而最致命问题是,root 用户不受任何管制,系统上任何资源都可以无限制地访问。

这种权限管理机制的主体是用户,也称为自主访问控制(DAC)。

1.3 MAC

以政策规则订定特定程序读取特定文件:委任式存取控制,MAC

在使用了 SELinux 的操作系统中,决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。

这样一来,即使进程是以 root 身份运行的,也需要判断这个进程的类型以及允许访问的资源类型才能决定是否允许访问某个资源。进程的活动空间也可以被压缩到最小。

即使是以 root 身份运行的服务进程,一般也只能访问到它所需要的资源。即使程序出了漏洞,影响范围也只有在其允许访问的资源范围内。安全性大大增加。

这种权限管理机制的主体是进程,也称为强制访问控制(MAC)。

而 MAC 又细分为了两种方式,一种叫类别安全(MCS)模式,另一种叫多级安全(MLS)模式。

  • 在 DAC 模式下,只要相应目录有相应用户的权限,就可以被访问
  • 在 MAC 模式下,还要受进程允许访问目录范围的限制。

【总结理解】

  • DAC是以用户为出发点来管理权限的
  • MAC是以程序为出发点来管理权限的
  • 以前:root--->启动httpd---->httpd可以访问系统任何文件
  • 现在:root--->启动httpd---->httpd只能访问/var/www/目录(这是MAC)规则的约束
    如果httpd想要访问其他目录,那么必须满足两个条件:DAC的rwx + MAC的规则

2、SELinux 基本概念

2.1 主体(Subject)

可以完全等同于进程。

2.2 目标(Object)

被主体访问的资源。可以是文件、目录、端口、设备等。

注:为了方便理解,如无特别说明,以下均把文件或者目录视为对象。

2.3 政策和规则(Policy & Rule)

系统中通常有大量的文件和进程,为了节省时间和开销,通常我们只是选择性地对某些进程进行管制。

而哪些进程需要管制、要怎么管制是由政策决定的。

一套政策里面有多个规则。部分规则可以按照需求启用或禁用(以下把该类型的规则称为布尔型规则)。

规则是模块化、可扩展的。在安装新的应用程序时,应用程序可通过添加新的模块来添加规则。用户也可以手动地增减规则。

在 CentOS 7 系统中,有三套政策,分别是:

  • targeted:对大部分网络服务进程进行管制。这是系统默认使用的政策(下文均使用此政策)。
  • minimum:以 targeted 为基础,仅对选定的网络服务进程进行管制。一般不用。
  • mls:多级安全保护。对所有的进程进行管制。这是最严格的政策,配置难度非常大。一般不用,除非对安全性有极高的要求。

政策可以在 /etc/selinux/config 中设定。

【总结以上重要原理】SELinux 是透过 MAC 的方式来控管程序

  • 主体 (Subject):SELinux 主要想要管理的就是程序,主体= process;
  • 目标 (Object):主体程序将访问的文件,目标=文件;
  • 政策 (Policy):由于程序与文件数量庞大,因此 SELinux 依据服务来制订基本的存取安全性政策。这些政策内包含有详细的规则 (rule) 来指定不同的服务开放某些资源的存取与否。

2.4 安全上下文(Security Context)

主体能不能存取目标除了政策指定之外,主体与目标的安全性文本必须一致才能够顺利存取。

这个安全性文本 (security context) 有点类似文件系统的 rwx !安全性文本的内容与设定是非常重要的!

如果设定错误,你的某些服务(主体程序)就无法存取文件系统(目标资源),当然就会一直出现『权限不符』的错误讯息了!

安全上下文有四个字段,分别用冒号隔开。形如:system_u:object_r:admin_home_t:s0。

2.5 SELinux 的工作模式

SELinux 有三种工作模式,分别是:

  • enforcing:强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中。
  • permissive:宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用。
  • disabled:关闭 SELinux。

SELinux 工作模式可以在 /etc/selinux/config 中设定。

如果想从 disabled 切换到 enforcing 或者 permissive 的话,需要重启系统。反过来也一样。

enforcing 和 permissive 模式可以通过 setenforce 1|0 命令快速切换。

需要注意,如果系统已经在关闭 SELinux 的状态下运行了一段时间,在打开 SELinux 之后的第一次重启速度可能会比较慢。因为系统必须为磁盘中的文件创建安全上下文。

SELinux 日志的记录需要借助 auditd.service 这个服务,请不要禁用它。

........

linux异常处理:selinux配置错误导致无法重启的更多相关文章

  1. HWADDR配置错误导致network重启失败处理

    如果因为/etc/sysconfig/network-scripts/下的ifcfg-eth0(此处以eth0网卡名为例),其中的HWADDR配置错误,不知道到哪里找到原来的HWADDR时,可以尝试一 ...

  2. Linux在fstab中因配置错误导致服务器主机无法重启的问题应该如何解决

    fstab中配置错误导致系统无法启动的恢复方案 1制造错误的案例发生,在/etc/fstab中配置如下内容 结尾的倒数第一个为1表示进行磁盘检查,为0表示不进行磁盘检查,倒数第二个为0表示不备份,为1 ...

  3. SELinux配置不当导致vsftpd系统用户不能登陆

    1.测试是否是SELinux配置不当导致的: setenforce 0 再次登陆ftp,正常,说明是SELinux配置不当导致.还原配置 setenforce 1 2.查看配置: getsebool ...

  4. 两个由于php.ini配置错误导致的报错:ajax图片上传报错和exec报错

    遇到了两个由于php.ini配置错误导致的报错:ajax图片上传报错和exec报错 首先第一个: 在做一个用ajax图片上传的功能中,php报了这样一个错误:File upload error - u ...

  5. vmware Selinux配置错误,导致无法启动虚拟机

    Linux 开机提示kernel panic - not syncing: Attempted to kill init! 解决方法: 系统启动的时候,按下‘e’键进入grub编辑界面,编辑grub菜 ...

  6. selinux配置错误实例介绍

    错误原因 配置关闭SELinux,结果误操作 应修改配置文件/etc/selinux/config中的“SELINUX”参数的值, # SELINUX=enforcing  原始配置 SELINUX= ...

  7. SELinux配置不当导致httpd无法在非80端口启动

    检测是否为selinux导致httpd启动失败,若setenforce 0以后就可以启动,就表示selinux配置不当. 首先本机要支持semanage命令,安装方法网上有. semanage  po ...

  8. Linux iptables配置错误导致ORA-12535 & ORA-12170

    实验环境:       操作系统  : Red Hat Enterprise Linux Server release 5.7 (Tikanga)       数据库版本: Oracle Databa ...

  9. Linux实例/etc/fstab文件配置错误导致系统启动异常

    Centos 7.3系统 问题现象: 阿里云ECS升级配置后重启,SSH连接不上.登录控制台远程连接ECS,出现以下界面.  提交工单阿里云反馈:https://help.aliyun.com/kno ...

随机推荐

  1. 3.1《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——下载文件

    首先,为了不手动创建一个长文件(这太麻烦了),我们将使用强大的curl(有时也写作"cURL")工具从网上下载一个文件,这个命令可以让命令行与URL交互.尽管这不是Unix核心命令 ...

  2. Spring Boot 2.0(七):Spring Boot 如何解决项目启动时初始化资源

    在我们实际工作中,总会遇到这样需求,在项目启动的时候需要做一些初始化的操作,比如初始化线程池,提前加载好加密证书等.今天就给大家介绍一个 Spring Boot 神器,专门帮助大家解决项目启动初始化资 ...

  3. System.Data.SqlClient.SqlException:“对象名 'customer' 无效。"

    连接数据库出错, 错误原因:表名错误.

  4. QT 小总结

    遇到的问题: 1:在debug模式下可以顺利执行,但是换到release模式下没法执行了.会显示 exited with code 1 . 解决办法:把产生的release文件放到QT的bin库下,看 ...

  5. MySQL主主同步配置

    1. MySQL主主配置过程 在上一篇实现了主从同步的基础上,进行主主同步的配置. 这里用node19(主),node20(从)做修改,使得node19和node20变为主主同步配置模式 修改配置文件 ...

  6. Thrift_简介(基于C#)

    //Server: TProtocolFactory ProtocolFactory = new TBinaryProtocol.Factory(true, true); TTransportFact ...

  7. StoryLine3变量存储与跳转后台时的使用

    前言 公司项目原因,接触到storyline3(后面简称SL)课件制作工具,类似ppt,但是又多了互动.交互,且页面元素可添加触发器,触发器中可执行js代码. 1.官方教程 在SL中,会有“了解详情. ...

  8. 针对负载均衡集群中的session解决方案的总结

    在日常运维工作中,当给Web站点使用负载均衡之后,必须面临的一个重要问题就是Session的处理办法,无论是PHP.Python.Ruby还是Java语言环境,只要使用服务器保存Session,在做负 ...

  9. 牛客小白月赛6-E对弈-简单搜索

    https://www.nowcoder.com/acm/contest/136/E 我搜索很差啊,看了学长代码,自己在下面手敲了一遍,感觉学长的极其精巧,把我繁琐的搜索步骤给简化了不少 其实本题想法 ...

  10. [2019BUAA软件工程]结对编程感想

    结对编程感想 写在前面   本博客为笔者在完成软件工程结对编程任务后对于编程过程.最终得分的一些感想与经验分享.此外笔者还对于本课程的结对编程部分提出了一些建议. Tips Link 作业要求博客 2 ...