Context值和bool开关
- Context值和bool开关的相关内容
Context值分为2种
系统默认的context值
服务的context值
Context值的作用
主要是防止有未知文件进入目录文件之中(如将病毒拷贝到目录文件下)
Bool开关的作用
Bool主要是争对在selinux处于enforcing(强制状态)时,拥有访问端口的口令也是无法登陆的情况时起作用的。
然后就是context值和bool开关的相关命令
Chcon –t 更改
Restorecon –v 恢复
Getroubleshoot –a 查看所有的bool开关
- 配context值
首先查看root的家目录下的文件,比较下面两个图,发现第一个图中的时间变为了第二个,这里我们就看变化中的admin_home_t,也就是context值
接下来就以文件install.log为例,将文件install.log复制到/tmp下,再次看看context值,发现context值变为了user_tmp_t了,
接下来就开始演示context值的作用了
首先就以ftp共享文件来测试,安装ftp服务后,就可以在/var下面自动生成ftp/pub这两节目录,然后就可以在目录pub下创建共享文件了,这里创建了一个文件test和复制了一个文件install.log,发现文件test的context值为public_content_t,而文件instal.log的context值也变为了public_content_t
接下来通过远程用户以ftp服务登录到主机上,查看pub下的文件,可以查看这两个共享文件
然后修改文件install.log的context值为tmp_t,
然后再次远程登录到主机,查看pub下的文件,发现看不到文件instll.log了,到这就隐隐的明白了什么,那就是是否继承了上一级目录context值的原因
于是为了验证自己隐约的想法,就来查看pub的context值吧,结果发现确实如推测的那样,pub的context值也是public_content_t,由此可知,刚才将文件install.log的context值认为的改变为tmp_t后,就无法读取了,这个文件确实还是存在的,只不过pub已经不会识别了,因为它的context已经被改变了。
为了更加确定推测,将文件install.log的context值恢复,再看看
更改后,再次查看,发现文件install.log又出现了,那么现在可以完全的明白了context值的作用了,可以对context值作用进行一个小结了
由于目录pub的context值为public_content_t,所以在pub下的文件的context值也应该为public_content_t,如果人为的将context值改变了,那么pub就不会认这个在它目录下的文件了,即使没有被删,我们也不会看到了
然后在http下再测试一下,安装了http服务后就可以在/var下面生成两节目录www/html了,然后在目录html下创建文件名为index.html文件,在这个文件里写的内容,我们就可以通过浏览器来看到了,这个是对http网页文件的解释,这里还是回到context值吧,我们来看看文件index.html的context值,发现context值是httpd_sys_cotent_t,
然后用浏览器查看一下,就可以看到内容了
接下来就更改一下文件index.html的context值吧,将其更改为tmp_t
发现在浏览器里已经看不到网页文件的内容了,原因应该是刚才的那个文件没有被读取到,被目录html忽略了,所以在浏览器中自然看不到了
然后将文件index.html的context值恢复为httpd_sys_content_t
那么就可以在浏览器中看到hello了
接下来我们将ftp安装后所产生的两节目录ftp/pub删掉,
然后远程登录ftp后,发现访问失败,这是肯定了,毕竟共享文件已经被删了
然后就创建文件ftp/pub这两节目录
然后远程登录,发现登录上了,可是却看不到共享目录pub
这时候我想到的是context值,于是,查看一下pub的context值,发现变为了var_t,看来是继承了/var目录的context值,可是/var是系统默认的context值,与ftp服务的context值是不同的,所以新建的文件仅仅是名字一样罢了,可是却不具备服务的context值,那么就没有意义,因此是没有用的
这时候可以用命令restorecon –Rv ftp 将context值恢复
恢复context值后就可以看到共享文件了
下面就是文件继承上一级的事例
实验到这里就得说明一下了
Context值分为两种
- 系统默认的context值
- 服务的context值
也就是说,除了由于服务的原因,比如/var下面,由于安装了ftp服务后,会在/var下面创建ftp这个目录文件,可是查看context值却发现并没有继承/var的context值,却可以在/var下面看到,这个现象可不是为了推翻context值的作用,而是为了说明继承分为两种,一种是以系统默认的context值为基,在此下面创建的目录或文件就继承了其context值,而有一种情况是不受其约束的,那就是安装服务的时侯所自动产生的目录或文件,它们拥有着属于自己的context值,可以当作例外来看,那么一切就可以解释的通了。
其实想要context值恢复还有一个方法,
首先需要安装一个软件包,policycoreutils-gui,然后就敲命令system-config-selinux,
就进入了如下的图形化界面,将下次启动时重新标记勾上,然后重启系统,那么再开启系统时,所以被更改的context值就会被重新标记,即context都会恢复为原始值
下面显示的是启动系统后重打标记的过程,*代表的就是在重打标记
系统开启后,再次查看pub的context值,发现确实已经恢复了
做到这,我们是否会想到既然一个勾就将更改的context值改了,那么是否可以让context永久是更改后的值呢,即使重打标记也不变,
其实是有的,可以用命令semanage fconftext –a –t httpd_sys_content_t 'pub(/.*)就可以了
那
接下来就开始第二个实验了
做bool开关
首先讲讲bool开关的作用,bool开关的作用就是在selinux变为enforcing状态时,将bool开启后就可以继续访问,在这就先简单的解释一下selinux的三种状态吧
首先disabled态,也就是禁用了selinux的功能
然后就是permissive状态,主要用于判断系统是服务本身的问题还是selinux问题,举个例子吧,当远程访问用户时,如果在知道了远程主机的账户的账号和密码时,验证成功后就可以访问了。
最后就是enforcing状态了,表示的是强制的意思,依旧接着上面的例子,也就是说即使知道了对方账户的账号和密码,验证成功也不能访问,即强制的不允许其登录,这个安全性更高。
那么这么一来就有一个问题了,没错当将selinux设置为enforing状态后安全性确实更高了,可是如果不能访问的话,这种安全就没有意义了,那么有什么方法可以让其处于enforcing状态依旧可以访问呢?
这时就需要bool开关了
接下来就开始演示bool开关的作用了
在这儿,首先需要安装setroubleshoot这个安装包,当然selinux也应该设置为enforcing状态,为了使这两个更改生效,就需要重启系统了,重启系统后,就可以查看了,如下两个图,发现selinux确实已经处于enforcing状态了,而在系统工具里看到了selinux故障排除工具,就说明setroubleshoot安装成功了
然后就可以开始更改bool值了
首先我们远程登录主机的普通账户发现登上了,却无法查看用户文件,报了登录失败的错误,这其实是selinux的enforcing起了作用
然后就查看bool开关的信息,这里可以进行指定搜索,我们访问的是ftp上用户的home下的文件,那么就可以进行如下搜寻,发现其off了,也就是bool处于关闭状态
那么就需要将其开启,于是就可以敲如下命令,这里的1表示的就是开启,而0代表的就是关闭了
然后再次访问,就可以看到账户的home下的文件了
至此,关于context值和bool开关的实验就结束了!!!
Context值和bool开关的更多相关文章
- C# 调用 C++ 的 DLL 返回值为 bool 时,值混乱
现象:C++ 导出函数的返回值为 false,C# 调用该函数获取的返回值却为 true . 原因:C++ 导出函数返回 false 时,采取的方式是: 将 C# 定义的用来接收返回值的 bool 所 ...
- python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出
# 在python3 中: # nian=input('>>:') #请输入什么类型的值,都成字符串类型# print(type(nian)) # a = 2**64# print(typ ...
- 零值比较--BOOL,int,float,指针变量与零值比较的if语句
这是程序员面试的一道常见题,也是个C++基础问题.若只在大学里看过几本基础的编程入门书,看见这道题可能会觉得奇怪,不就是和0比较吗,直接拿出来比就是了,其实非也.下文引自google搜索结果,出处不详 ...
- jQuery find() 搜索所有段落中的后代 C# find() 第一个匹配元素 Func 有返回值 Action是没有返回值 Predicate 只有一个参数且返回值为bool 表达式树Expression
所有p后代span Id为 TotalProject 的 select 标签 的后代 option标签 为选中的 text using System; using System.Collections ...
- std::vector<bool> 在 auto 推断下的返回值是 bool & 引用
转自: https://www.cnblogs.com/hustxujinkang/p/5218148.html //////////// std::vector<bool> featur ...
- 三值 bool? 进行与或运算后的结果
bool? 实际上是 Nullable<Boolean> 类型,可以当作三值的 bool 类型来使用.不过三值的布尔进行与或运算时的结果与二值有什么不同吗? 本文内容 重载条件逻辑运算符“ ...
- python 布尔值 bool( ) 与逻辑运算符
逻辑运算符 not and or 运算符优先级 not > and >or printer(x or y) x为非零,则返回x,否则返回y print(1 or 2) print(3 o ...
- python之bool (布尔值)
用途: 判断真假 识记: 空的字符串是False,非空的就是True 0 是False,非0的都是True 格式: True False 布尔值转换成字符串: print(type(str(Tru ...
- 十一、 BOOL类型、分支结构和关系运算符
BOOL类型:表示非真即假.只有两个值:YES和NO,而二进制只识别二进制数,所以,将YES替换为“1”,NO替换为“0” BOOL数据类型占一字节的空间内存 BOOL数据类型输出为:%lu:输入为: ...
随机推荐
- quartz.net 时间表达式----- Cron表达式详解
序言 Cron表达式:就是用简单的xxoo符号按照一定的规则,就能把各种时间维度表达的淋漓尽致,无所不在其中,然后在用来做任务调度(定时服务)的quart.net中所认知执行,可想而知这是多么的天衣无 ...
- PHP 面向对象编程和设计模式 (5/5) - PHP 命名空间的使用及名称解析规则
PHP高级程序设计 学习笔记 2014.06.12 命名空间概述 PHP 在 5.3.0 以后的版本开始支持命名空间.什么是命名空间?从广义上来说,命名空间是一种封装事物的方法.在很多地方都可以见到这 ...
- 了解HTML表单之form元素
前面的话 表单是网页与用户的交互工具,由一个<form>元素作为容器构成,封装其他任何数量的表单控件,还有其他任何<body>元素里可用的标签 表单能够包含<input& ...
- Android自定义控件之自定义ViewGroup实现标签云
前言: 前面几篇讲了自定义控件绘制原理Android自定义控件之基本原理(一),自定义属性Android自定义控件之自定义属性(二),自定义组合控件Android自定义控件之自定义组合控件(三),常言 ...
- Oracle 集群】ORACLE DATABASE 11G RAC 知识图文详细教程之ORACLE集群概念和原理(二)
ORACLE集群概念和原理(二) 概述:写下本文档的初衷和动力,来源于上篇的<oracle基本操作手册>.oracle基本操作手册是作者研一假期对oracle基础知识学习的汇总.然后形成体 ...
- js的单线程和异步
前言 说到js的单线程(single threaded)和异步(asynchronous),很多同学不禁会想,这不是自相矛盾么?其实,单线程和异步确实不能同时成为一个语言的特性.js选择了成为单线程的 ...
- Android动画:模拟开关按钮点击打开动画(属性动画之平移动画)
在Android里面,一些炫酷的动画确实是很吸引人的地方,让然看了就赏心悦目,一个好看的动画可能会提高用户对软件的使用率.另外说到动画,在Android里面支持3种动画: 逐帧动画(Frame Ani ...
- 在DevExpress程序中使用TeeList控件以及节点查询的处理
在很多情况下,我们需要通过树列表进行数据的展示,如一些有层次关系的数据,通过有层级的展示,能够使用户更加直观查看和管理相关的数据.在一般Winform开发的情况下,可以使用微软的TreeView控件, ...
- 以下C#程序的输出结果是( )。
以下程序的输出结果是( ). using System; namespace HoverTreeTikuConsole { class Program { static void Main(strin ...
- JDBC_part4_大对象_DAO_Bean_DButi
本文为博主辛苦总结,希望自己以后返回来看的时候理解更深刻,也希望可以起到帮助初学者的作用. 转载请注明 出自 : luogg的博客园 谢谢配合! JDBCday04_大对象_Dao_DBUtil_Ja ...