SELinux入门简介

    操作系统有两类访问控制:自主访问控制(DAC)和强制访问控制(MAC)。标准Linux安全是一种DAC,SELinux为Linux增加了一个灵活的和可配置的的MAC。

    进程启动时所拥有的权限就是运行此进程的用户权限,一个进程能访问哪些文件取决于该文件的主、组和其他权限,这就是DAC

    如一个用户运行了进程,运行此进程需要若干个文件,但该进程具有的权限是与该用户的权限一致,即该进程能访问此用户能够访问的所有文件。Linux自身是无法限定某个进程只能访问其运行需要的指定文件,因此MAC,就是不让进程在该用户权限下访问它不需要文件,即使进程是有权限访问的。

那么是如何实现的?
每个进程启动时,给它划定一个范围,只能访问此范围内的资源。但是每种程序运行依赖的资源或权限并不相同,并不可能为每一种程序制定范围。所以有如下两种工作级别。

SELinux工作级别
        restrict:每个进程都受selinux的控制
        targeted:仅有限的进程受到控制,通常只监控容易受到入侵的进程

SELinux工作模型

        存在三种角色subject   operation   object
        subject:主体,操作的发起者
        operation:操作,主体能够执行什么样的操作取决于客体所支持的操作
        object:客体,操作的作用对象
        通常动作的发起者是进程,进程可以对诸如文件或者进程等对象执行操作,那针对文件来说可以支持的操作有读、写、打开、关闭及更改权限等,针对进程作为客体,执行的操作有杀死、创建等

    每一个进程都有一个标签。操作系统中的每一个文件/目录客体object也都有一个标签。甚至连网络端口、设备,乃至潜在的主机名都被分配了标签。标签有五部分组成USER:ROLE:TYPE[LEVEL[:CATEGORY]]。user指的是SELinux的user非系统user,LEVEL和CATEGORY:定义层次和分类,只用于mls策略中。

    进程通过标签划分在不同的域,文件通过标签定义为不同个类型。SElinux存在一规则库,其中定义了哪种域能够访问哪些类型内的文件。如某进程要访问一个文件,但是此进程的域与文件的类型不在同一范围内那么要如何突破限制,这时候就要修改标签。
SELinux的策略通常是编译成二进制文件以加速访问。

如何使用SELinux

        (1)  /etc/sysconfig/selinux打开或关闭SELinux
               SELINUX=enforcing|permissive|disabled
               从disable状态启用,需要重启系统,让系统上的所有文件重新打上标签。permissive不禁止,但会计入日志/var/log/audit/audit.log
               getenforce/setenforce 0|1  获取或更改当前状态
        (2)查看、更改文件标签
             ps –Z :检查进程的安全上下文;
             ls -Z :检查文件、目录的安全上下文
             chcon [-u USER] [-r ROLE] [-t TYPE]
              一般目录下的文件具有“目录名_t”的类型,更改文件标签类型可以在不更改主(组)的情况下限制进程对其的访问。
              还原文件的默认标签 ,restorecon [-R] path/file
        (3)SELinux的布尔型开关
               getsebool -a: 列出SELinux的所有布尔值
               setsebool: 设置SELinux布尔值,如:setsebool -P dhcpd_disable_trans=0,-P表示重启后也能生效,直接写入规则库

参考:http://blog.csdn.net/myarrow/article/details/9856095/

转载于:https://www.cnblogs.com/otherside/p/6683429.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/372454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

RESTEasy教程第3部分:异常处理

在开发软件应用程序时,异常处理是显而易见的要求。 如果在处理用户请求时发生任何错误,我们应该向用户显示一个错误页面,其中包含详细的异常消息,错误代码(可选),更正输入和重试的提示&#xff…

WinForm关闭窗体彻底的退出方式

//System.Environment.Exit(0); //Process.GetCurrentProcess().Kill(); //System.Threading.Thread.CurrentThread.Abort(); System.Diagnostics.Process.GetCurrentProcess().Kill();Application.Exit(); 转载于:https://www.cnblogs.com/XuPengLB/p/5799178.html

创建css的时候选择器有哪几类,CSS3-CSS的选择器共有几类?

CSS 3对属性选择器的又增加了3种子字符串的匹配方式:E[att^"val"]匹配所有E元素中att属性的值以“val”开始的所有元素。E[att$"val"]匹配所有E元素中att属性的值以“val”结束的所有元素。E[att*”val”]匹配所有E元素中att属性的值中包含字符…

在Grails 2.0中使用Servlet 3.0异步功能

上周,我与某人谈论了Grails 2中对Servlet 3.0异步功能的新支持,并意识到我对可用功能并不了解。 所以我想我会尝试一下并分享一些例子。 该文档对这个主题有些了解,因此首先介绍一些背景信息。 在3.0规范中进行异步工作的主要方式是javax.ser…

接口怎么实例化?

最开始看到数据库连接的时候忽然想到这个问题: Connection connull;try {Class.forName(Driver);} catch (ClassNotFoundException e) {e.printStackTrace();}try {conDriverManager.getConnection(url, user, pass);} catch (SQLException e) {e.printStackTrace()…

css中基线指的是哪一条线,如何设置基线网络_CSS, Vertical Rhythm 教程_W3cplus

首先,当谈到排版,我们先要了解基线是什么?维基百科是这样定义)的:在排版和书法中,基线是以字终sit底线为基础,并且向两边延伸的直线。好极了,但我为什么要忽视他呢?好希望你充满激情…

libvirt里的面向对象的C语言

C语言:类的声明和定义 1 // 通用父类的定义2 struct _virClass {3 virClassPtr parent;4 5 unsigned int magic;6 char *name;7 size_t objectSize;8 9 virObjectDisposeCallback dispose; 10 }; 11 typedef struct _virClass virClass; 12 typ…

使用JGroups进行ElasticMQ消息复制

ElasticMQ是一台消息服务器,具有Scala,Java和与Amazon SQS兼容的接口。 它通过跨服务器群集复制消息来支持有保证的消息传递,并通过日志记录实现消息持久性。 消息复制是ElasticMQ的核心功能之一。 但是,如果您看一下代码&#xf…

ajax省市二级联动硬编码,AJAX请求接受硬编码的JSON,但不接受软编码

这个AJAX请求返回'成功'如果PHP中的输出被复制并粘贴了JSON,但是'失败'如果它是由文件生成的。看看下面api.php中的评论,看看我的意思。$.aj…

Fiddler高级技巧 - 映射路径到本地文件夹

适用场景: 你是前端开发人员,要开发一个小模块,需要用到线上的环境(账号、数据、跨域等),但你又没有权限往线上传文件你是移动测试人员,需要将一组接口的返回结果替换为另一组,最简单…

Spring Social入门

像我一样,无论是添加简单的Facebook“赞”按钮,一大堆“共享”按钮还是显示时间轴信息,您都不会注意到当前对应用程序“社交化”的热衷。 每个人都在做这件事,包括Spring的家伙,事实上,他们提供了一个称为S…

apache ajax 跨域访问,Apache 实现AJAX跨域请求

当使用ajax跨域请求时,浏览器报错:XmlHttpRequest error: Origin null is not allowed by Access-Control-Allow-Origin.肯定是跨域的问题,如果用jsonp或者pro更多:当使用ajax跨域请求时,浏览器报错:XmlHtt…

14、数据库

数据库转载于:https://www.cnblogs.com/quyong/p/6687924.html

EhCache复制:RMI与JGroups

最近,我正在研究一种需要复制缓存的产品。 缓存提供程序已经确定-EhCache,剩下的就是有关传输的问题。 哪一个是最佳选择? 这里的最佳选择是指性能更好的选择。 仅在两个可用传输之间进行了性能评估-JGroups和RMI,对其他传输不予考…

Oracle 监控语句整理(包括TOP SQL等)

希望能对大家有所帮助! 很多时候大家想查看oracle数据库中的sql语句执行情况,但是又不知道如何是好,今天在这里为大家提供一个sql语句,大家可以通过以下的sql语句查询Oracle数据库中Top Sql情况: 查询结果可按照PCT、总…

服务器wifi无线放大器,一回家WiFi信号太弱?教你用两毛钱制作信号放大器

原标题:一回家WiFi信号太弱?教你用两毛钱制作信号放大器现在家家户户都有无线路由器,但是大部分人都还是早期的单天线产品,信号覆盖范围比较小,特别是穿墙性能不行。人在客厅WiFi信号还满格,一到卧室就瞬间…

iOS开发 之 可穿戴设备 蓝牙4.0 BLE 开发

1 前言 当前有越来越多的可穿戴设备使用了蓝牙4.0 BLE(Bluetooth Low Energy)。对于iOS开发而言,Apple之前专门推出CoreBluetooth的Framework来支持BLE的开发。对于硬件开发有了解的朋友应该知道,在之前使用低版本的蓝牙的设备,要…

将Java服务公开为Web服务

本教程解决了开发人员面临的最实际的情况。 大多数时候,我们可能需要将某些现有服务公开为Web服务。 在项目生命周期的不同阶段可能会遇到这种情况。 如果这是初始阶段,那么您几乎是安全的,您可以为此做好充分的准备。 但是,将要发…

git服务器维护 备份,gitlab服务运维,备份与恢复 - 橙子柠檬's Blog

gitlab服务运维工作Gitlab-ctl 使用gitlab-ctl start #启动服务gitlab-ctl stop #停止服务gitlab-ctl restart #重启服务检查服务的日志信息gitlab-ctl tail redis #检查redis的日志gitlab-ctl tail postgresql #…

angular js实现开关效果

功能:实现点击排序,再点击排倒序。 实现方法如下 方法一:定义变量实现点击切换true或false,代码为: $scope.lidata [ {"name":"Terry","age":12}, {&qu…