zoukankan      html  css  js  c++  java
  • seLinux初探

    今天遇到一个访问ftp失败的问题, 场景大致是: 在/var/ftp下面新建一个目录/pxeboot ,然后将其挂载到一个iso上,结果ftp无法访问。

    最后定位到是selinux 的问题。 之前对selinux只知道怎么开关,没什么理解,现在就学习一下吧。

    基本概念

    seLinux的目的是对程序读取文件进行权限的控制,即便你chmod 777,如果不符合seLinux的规则,那么程序同样无法访问目标文件。

    selinux控制访问的规则定义在策略中,程序和目标资源都有各自的安全上下文(security context),只有双方的安全上下文符合策略中的规定时才能够成功访问。

    seLinux安全上下文  由冒号分隔的四个字段组成,其中最重要的是第三个, 称为 类型字段 。

    下面图例说明了httpd是怎么读取到/var/www/html目录中的文件的。

    实践:

    修改seLinux规则需要用到的主要命令有 chcon restorecon setsebool。

    关于chcon更详细的用法:

    chcon 的作用是更改相应的安全上下文,其实在seLinux规则中可以定义目录文件的默认安全上下文,我们可以通过restorecon来恢复默认设置。上例中,我们只需要 执行 restorecon -Rv  /var/www/html  就可以还原 /var/www/html 目录的默认设置,从而使httpd可以访问a.html。

    关于restorecon的详细用法:

    既然我们说了restorecon可以恢复默认设置,那么默认设置定义在哪里拿?在目录/etc/selinux/targeted/contexts中定义着这些默认设置。我们可以使用semanage方便管理他们。

    我们现在知道了如果seLinux的规则不允许的话,程序就无法访问到目标文件,而这些规则是通过一个个 规则布尔值 来表示的,我们可以通过更改这些规则布尔值来放开部分限制。

    我们下面就通过这种方式来解决在开头提到的那个问题。

    如果程序因为seLinux的原因导致了访问目标资源失败,往往会在下面两个日志中有所体现。

    /var/log/messages /var/log/audit/audit.log 

    按照相应提示定位修改即可。

    总结: seLinux的初步认识就是这样了,我的最直白的理解就是seLinux通过对比程序和目标资源的安全上下文来决定是否可以成功访问

  • 相关阅读:
    iOS动画之模拟音量振动条
    LeetCode Reverse Linked List
    Android使用BroadCastRecevier广播实现接收短信,并利用Toast弹出显示内容
    Python+Django+SAE系列教程16-----cookie&session
    初识MVC之建项
    【Android 系统开发】使用 Source InSight 阅读 Android 源代码
    ym—— Android网络框架Volley(终极篇)
    俯视数据库系统原理
    hdu 1269 迷宫城堡
    2014年湖北省TI杯大学生电子设计竞赛论文格式
  • 原文地址:https://www.cnblogs.com/zh1164/p/6340776.html
Copyright © 2011-2022 走看看