Context值和bool开关

?

  1. Context值和bool开关的相关内容

Context值分为2种

系统默认的context值

服务的context值

Context值的作用

主要是防止有未知文件进入目录文件之中(如将病毒拷贝到目录文件下)

?

Bool开关的作用

Bool主要是争对在selinux处于enforcing(强制状态)时,拥有访问端口的口令也是无法登陆的情况时起作用的。

?

然后就是context值和bool开关的相关命令

Chcon –t 更改

Restorecon –v 恢复

Getroubleshoot –a 查看所有的bool开关

?

  1. 配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值分为两种

  1. 系统默认的context值
  2. 服务的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开关的实验就结束了!!!

时间: 2024-12-11 22:07:28

Context值和bool开关的相关文章

Context值和bool开关的应用

Context值和bool开关的相关内容 Context值分为2种 系统默认的context值 服务的context值 Context值的作用 主要是防止有未知文件进入目录文件之中(如将病毒拷贝到目录文件下) Bool开关的作用 Bool主要是争对在selinux处于enforcing(强制状态)时,拥有访问端口的口令也是无法登陆的情况时起作用的. 然后就是context值和bool开关的相关命令 Chcon t 更改 Restorecon v 恢复 Getroubleshoot a 查看所有的

零值比较--BOOL,int,float,指针变量与零值比

最近好多新东西需要学,好久没有写点什么了,忽然发现一个基础的基础,借来分析一下,共享-(PS:这不是我最近学的重点) 这是一个C++最基础.每个程序员都会碰到的问题.若只在大学里看过几本基础的编程入门书,看见这道题可能会觉得奇怪,不就是和0 比较吗,直接拿出来比就是了,其实不是的(PS:高手可以无视). 首先给个提示:题目中要求的是零值比较,而非与0进行比较,在C++里"零值"的范围可就大了,可以是0.0.0.FALSE或者"空指针". //------------

<转>零值比较--BOOL,int,float,指针变量与零值比较的if语句

下面这个是我在一本C语言书上看到的题目 写出float类型的变量i和零值比较的语句: if((x >= -0.00001)&& (x <= 0.00001) ) 不可以将浮点变量用"=="或"!="与数字进行比较,应该设法转化成">="或者"<="之类的形式. 这是程序员面试的一道常见题,也是个C++基础问题.若只在大学里看过几本基础的编程入门书,看见这道题可能会觉得奇怪,不就是和0比较

监控及selinux的简单应用

基本概念 这里涉及的是两个监控 端口 文件 简单端口查看命令netstat tulnp 然后就是端口对应服务的信息所在文件/etc/services 文件的监控就是通过安装aide这个软件,然后就在/etc下面产生了aide.conf这个配置文件,在文件中选择需要监控的文件,然后就通一次扫描,将监控的文件的原始数据记忆下来,那么当监控的文件出现了任何的更改后,通过二次扫描就可以被发现了.从而进行处理. 查看端口的相关命令 routeros 上网行为管理 netstate 网络状态监控 -t tc

处理把BOOL值存入NSMutableDictionary,从NSMutableDictionary中取出BOOL值

将一个BOOL值插入到NSMutableDictionary中,把BOOL值从NSMutableDictionary中取得出来的用法: 项目要讲BOOL类型的值插入到一个NSMutableDictionary. 首先将 BOOL 包装到 NSNumber中: NSNumber *boolNumber = [NSNumber numberWithBool:YES] 取得BOOL值: BOOL b = [boolNumber boolValue]; 或者通过这种方式: NSValue *boolVa

基本数据类型:1. int(整数) 2. bool(布尔值) 3. str(字符串)

1:基本数据类型 1. int ==> 整数,主要用来进行数学运算. 2. str ==> 字符串,可以保存少量的数据并进行相应的操作. 3. bool ==> 布尔值,判断真假-Ture.False. 4. list ==> 列表,存储大量数据,用[]表示. 5. tuple => 元组,不可以发生改变,用()表示. 6. dict ==> 字典,保存键值对,可以保存大量数据. 7. set ==> 集合,保存大量数据,不可以重复,就是不保存value的dict

十一、 BOOL类型、分支结构和关系运算符

BOOL类型:表示非真即假.只有两个值:YES和NO,而二进制只识别二进制数,所以,将YES替换为“1”,NO替换为“0” BOOL数据类型占一字节的空间内存 BOOL数据类型输出为:%lu:输入为:%s 关系运算符:“<,<=,>,>=,==,!=”判断两个值是否相等,一定要用“==”,结果值用BOOL存储. 优先级:[<,<=,>,>=(属同级运算符)] > [==,!=(属同级)] 运算符优先级:算术运算符>关系运算符>逻辑运算符&g

UISwitch开关控件

一.创建 UISwitch* mySwitch = [[ UISwitch alloc]initWithFrame:CGRectMake(200.0,10.0,0.0,0.0)]; 大小是0.0×0.0,系统会自动帮你决定最佳的尺寸,你自己写的尺寸会被忽略掉,你只要定义好相对父视图的位置就好了.默认尺寸为79 * 27. 二.显示控件 [ parrentView addSubview:mySwitch];//添加到父视图 或 self.navigationItem.titleView = myS

ReactNative: 使用开关组件Switch组件

一.简介 开关组件就是0和1的互斥关系,0代表关闭,1代表打开.应用中很多时候会使用一个开关组件来控制某些功能是否启用或禁用.ReactNative中提供了Switch组件来实现开关功能. 二.API 它提供的属性不多,如下所示: //开关组件当前的值,默认为false value: PropTypes.bool //开关组件是否可交互 disabled: PropTypes.bool //开关组件值发生改变时调用 onValueChange: PropTypes.func //开关组件唯一标识