SELinux策略
对象(object):全部能够读取的对象,包括文件、目录和进程,端口等
主体:进程称为主体(subject)
SELinux中对全部的文件都赋予一个type的文件类型标签,对于全部的进程也赋予各自的一个domain的标签。domain标签可以执行的操做由安全策略里定义
当一个subject试图访问一个object,Kernel中的策略执行服务器将检查AVC (访问矢量缓存Access Vector Cache), 在AVC中,subject和object的权限被缓存(cached),查找“应用+文件”的安全环境。而后根据查询结果容许或拒绝访问
安全策略:定义主体读取对象的规则数据库,规则中记录了哪一个类型的主体使用哪一个方法读取哪个对象是容许仍是拒绝的,而且定义了哪一种行为是充许或拒绝linux
SELinux工做过程正则表达式
配置SELinuxshell
getenforce: 获取selinux当前状态数据库
sestatus :查看selinux状态express
setenforce设定selinux运行状态,1开启(Enforce),0关闭(Permissive)数组
修改配置文件缓存
/etc/selinux/config /etc/sysconfig/selinux selinux=enable安全
SELINUX={disabled|enforcing|permissive}bash
-------------------------------------------------------------------------------服务器
awk介绍
有多种版本:New awk(nawk),GNU awk( gawk)
gawk:模式扫描和处理语言
基本格式:awk [options] 'program' file…
pattern和action
pattern部分决定动做语句什么时候触发及触发事件
action statements对数据进行处理,放在{}内指明
分割符、域和记录
awk执行时,由分隔符分隔的字段(域)标记$1,$2...$n称为域标识。$0为全部域,注意:此时和shell中变量$符含义不一样
文件的每一行称为记录
省略action,则默认执行 print $0 的操做
第一步:执行BEGIN{action;… }语句块中的语句
第二步:从文件或标准输入(stdin)读取一行,而后执行pattern{ action;… }语句块,它逐行扫描文件,从第一行到最后一行重复这个过程,直到文件所有被读取完毕。
第三步:当读至输入流末尾时,执行END{action;…}语句块
BEGIN语句块在awk开始从输入流中读取行以前被执行,这是一个可选的语句块,好比变量初始化、打印输出表格的表头等语句一般能够写在BEGIN语句块中
END语句块在awk从输入流中读取完全部的行以后即被执行,好比打印全部行的分析结果这类信息汇总都是在END语句块中完成,它也是一个可选语句块
pattern语句块中的通用命令是最重要的部分,也是可选的。若是没有提供pattern语句块,则默认执行{ print },即打印每个读取到的行,awk读取的每一行都会执行该语句块
print格式:print item1, item2, ...
实例:取出磁盘利用率
变量:内置和自定义变量
FS:输入字段分隔符,默认为空白字符
OFS:输出字段分隔符,默认为空白字符
RS:输入记录分隔符,指定输入时的换行符
ORS:输出记录分隔符,输出时用指定符号代替换行符
NF:字段数量
NR:记录号
FNR:各文件分别计数,记录号;
FILENAME:当前文件名;
ARGC:命令行参数的个数;
ARGV:数组,保存的是命令行所给定的各参数
输入字段分隔符FS变量的使用
输入记录分隔符RS变量的使用
输出记录分隔符ORS变量
字段数量NF变量的使⽤
⾏号NR变量的使⽤
各⽂件分别的记录号FNR变量的使⽤
当前⽂件名FILENAME变量的使⽤
命令⾏参数的个数ARGC变量的使⽤
命令⾏给定的各参数的数组ARGV变量的使⽤
命令⾏给定的各参数的数组ARGV变量的使⽤
awk的格式化输出
格式输出:printf "FORMAT", item1, item2,...
必须知道FORMAT;
不会自动换行,须要显示给出换行控制符,\n;
FORMAT中须要分别为后面每一个item指定格式符
格式符:与item⼀⼀对应
%c:显示字符的ASCII码;
%d,%i:显示十进制整数;
%e,%E:显示科学计数法数值;
%f:显示为浮点数;
%g,%G:以科学计数法或浮点形式显示数值;
%s:显示字符串;
%u:无符号整数;
%%:显示%自身。
格式化输出,以冒号为分隔符,第⼀个字段宽度20个字符串,第⼆个字段宽度10个数⼦,⼀⾏输出2个字段,而后
换⾏
格式化输出为左对齐
awk的操做符
x+y:加法;
x-y:减法;
x*y:乘法;
x/y:除法;
x^y:幂运算;
x%y:取模(余数)
赋值操做符:
=:右边赋值给左边;
+=:先加,再赋值;
-=:先减,再赋值;
*=:先乘,再赋值;
/=:先除,再赋值;
%=:先取余,再赋值;
^=:先幂运算,再赋值;
++:递增操做;
--:递减操做。
⽐较操做符:
==:判断相等;
!=:判断不等;
\>:判断大于;
\>=:判断大于等于;
<:判断小于;
<=:判断小于等于
模式匹配符:
~:左边是否和右边匹配包含;
!~:是否不匹配。
使⽤awk的算术操做符,计算5*4
使⽤awk的+=赋值操做符
使⽤awk的i++赋值操做符
使⽤awk的++i赋值操做符
匹配包含root⾏的记录
匹配不包含root⾏的记录
⽤正则表达式匹配包含root⾏的记录
显⽰硬盘分区的使⽤率
逻辑操做符:与&&,或||,非!
显⽰第三字段⼤于等于0,且⼩于等于1000的⾏中的第1字段
显⽰第三字段等于0,或⼤于等于1000的⾏中的第1字段
Awk实现打印奇数⾏和偶数⾏
sed执行
awk PATTERN
PATTERN:根据pattern条件,过滤匹配的行,再作处理
BEGIN/END模式
BEGIN{}:仅在开始处理文件中的文本以前执行一次
END{}:仅在文本处理完成以后执行一次
BRGIN/END模式
awk控制语句if-else
使用场景:对awk取得的整行或某个字段作条件判断
查找最后⼀个字段是/bin/bash的⾏,打印第⼀个字段
对第3字段判断⼤于等于500,则显⽰每⾏的
查找以空格为分隔符,显⽰每⾏⼤于5个字段所在的⾏
awk的循环
while(condition){statement;...}
条件为真,进入循环,条件为假退出循环;
使⽤场景:对⼀⾏内的多个字段逐⼀相似处理时使⽤;对数组中的各元素逐⼀处理时使⽤。
计算1+2+3+...+100的和
do-while循环
意义:不管真假,至少执行一次循环体
awk中使⽤for循环
计算100内整数的和
性能比较
continue语句
break语句
计算100内的整数和,但遇到整数66就不计算了,退出执⾏
next:
提早结束对本行处理而直接进入下一行处理
awk数组
关联数组:array[index-expression]
index-expression:
可以使用任意字符串;字符串要使用双引号括起来
若是某数组元素事先不存在,在引用时,awk会自动建立此元素,并将其值初始化为空串
若要判断数组中是否存在某元素,要使用index in array格式进行遍历
若要遍历数组中的每一个元素,要使用for循环
统计各个tcp状态的个数: