正则、扩展正则、目录权限及SElinux

练习讲解:
find 与管道配合使用的三种方法(find | )完成找出/etc目录下以.conf 结尾文件复制到/tmp下面
方法1
\cp $(find /etc -type f -name ".conf") /tmp/dira/find /etc -type f -name ".conf" -exec cp {} /tmp/dirb ;

\cp find /etc -type f -name "*.conf" /tmp/dira/

方法2 -exec
find /etc/ -type f -name "*.conf" -exec cp {} /tmp/dir/ \;

方法3 |xargs
find /etc -type f -name "*.conf" |xargs cp -t /tmp/dirc/

内容

1、特殊符号
2、常用的正则和扩展正则
3、简单粗暴的使用 sed 和awk

一、特殊符号

特殊符号 作用
!# 调用历史中第#条命令(#表示数字)
!ls 调用历史中最近一个以ls开头的命令
!! 上一条命令
\ 强制换行
* 匹配任意数量的任意字符
匹配单个任意字符
[ ] 对范围做匹配
{ } 生成序列
> 标准输出重定向
>> 标准追加重定向
< 标准输入重定向
<< 标准输入追加重定向
2> 标准错误输出重定向
2>> 标准错误输出重定向(用户追加错误信息)
2>&1 把错误的和正确的都记录下来(>>/tmp/error.log 2>&1)
# 注释

二、#常用的正则

基础正则

符号 释义
^ 锚定行首
$ 锚定行尾
^$ 匹配空行
. 匹配任意字符
* 匹配任意次数
.* 匹配任意长度任意字符
\ 转译
[] 匹配任意一个 如:[abc] 匹配a、b、c中的任意一个,在中括号中的特殊字符将没有特殊含义
[^abc] 取反 1个字符 1个整体 匹配不是a或不是b或不是c

扩展正则

符号 释义
| 或者
+ 前一个字符连续出现1次或一次以上
() 把括号内的字符当成一个整体(1个字符),在后项引用中使用
{m,n} 匹配前一个字符至少m次之多n次
{m} 匹配前一个字符m次
{m,} 匹配前一个字符至少出现m次,至多不限
{,n} 前一个字符最少出现0次最多n次
匹配前一个字符1次或0次

匹配字符

[a-z] 
[a-z]  
[A-Z] 
[0-9]
[a-zA-Z]
[a-Z] 
[a-Z0-9]
[0-Z]

三、简单粗暴的使用三剑客

1、sed 简单使用

使用sed命令的时候一定要注意一个事情就尽量的去使用单引号 ‘ ’

参数 释义
-i 修改原文件
-i.bak 先备份尾xxx.bak 然后修改原文件
-n 不输出模式中的内容至屏幕
-e 多点编辑
-f 从指定的文件中读取编辑脚本
-r 支持使用扩展正则表达式

p 显示模式空间中的内容,一般配合-n使用,显示时就不会显示两遍内容了;

实例 :sed -n '/UUID/P' /etc/fstab 仅显示匹配到的行
sed '/UUID/p' /etc/fstab 匹配到的行会显示两遍

s/ / / 查找替换,支持使用其他的分隔符;s@查找的内容@替换为的内容@ 或 s# # #都可以;
 >>此命令有两个替换标记

    1)g 实现全局替换
    2)p 显示替换成功的行    
    3)w/path/filename 将替换成功的内容保存至指定的文件中;
#在替换中只用  p  

[root@localhost dir]# sed -rn "s@(r..t)@\1er@p" /etc/passwd  
rooter:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/rooter:/sbin/nologin
ftp:x:14:50:FTP User:/var/fterp:/sbin/nologin

#在替换中使用   w

[root@localhost dir]# sed -rn "s@(r..t)@\1er@pw/dir/file05" /etc/passwd 
rooter:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/rooter:/sbin/nologin
ftp:x:14:50:FTP User:/var/fterp:/sbin/nologin
[root@localhost dir]# cat /dir/file05
rooter:x:0:0:root:/root:/bin/bash
operator:x:11:0:operator:/rooter:/sbin/nologin
ftp:x:14:50:FTP User:/var/fterp:/sbin/nologin
root@localhost oldboy]# sed -n '/UUID/P' /etc/fstab 打印1遍
UUID=913120af-26d4-4d10-bfa3-ad698a9b0fb8 /                       xfs     defaults        0 0
UUID=d7199976-4543-4308-81b7-a9c783f6fabc /boot                   xfs     defaults        0 0
UUID=0195d767-3038-4bdb-953c-fbf29897a44e swap                    swap    defaults        0 0
[root@localhost oldboy]# sed  '/UUID/P' /etc/fstab  打印2遍
#
# /etc/fstab
# Created by anaconda on Fri Apr 12 21:49:43 2019
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
# 
UUID=913120af-26d4-4d10-bfa3-ad698a9b0fb8 /                       xfs     defaults        0 0
UUID=913120af-26d4-4d10-bfa3-ad698a9b0fb8 /                       xfs     defaults        0 0
UUID=d7199976-4543-4308-81b7-a9c783f6fabc /boot                   xfs     defaults        0 0
UUID=d7199976-4543-4308-81b7-a9c783f6fabc /boot                   xfs     defaults        0 0
UUID=0195d767-3038-4bdb-953c-fbf29897a44e swap                    swap    defaults        0 0
UUID=0195d767-3038-4bdb-953c-fbf29897a44e swap                    swap    defaults        0 0
[root@localhost oldboy]# 

sed的后项引用用法
第一种用法

匹配文件中的34两个字符
[root@localhost dir]# cat file01  
123456789
[root@localhost dir]# sed -r 's@12(.*)56.*@\1@g' file01
34
[root@localhost dir]# 

第二种用法

匹配文件中的34两个字符,这里注意第一个小括号和第二和小括号引用的内容
[root@localhost dir]# cat file01
123456789
[root@localhost dir]# sed -r 's@(..)(..).*@\2@g' file01
34
[root@localhost dir]# sed -r 's@(..)(..).*@\1@g' file01
12
[root@localhost dir]# sed -r 's@[1-9]{2}(..).*@\1@g' file01 
34

[root@localhost dir]# sed -r 's@[1-9]{2}(..)(..).*@\1@g' file01 
34
[root@localhost dir]# sed -r 's@[1-9]{2}(..)(..).*@\2@g' file01 
56

第三种用法

这里注意+的用法
[root@localhost dir]# echo {1..10} | sed -r 's@(.)@<\1>@g'
<1>< ><2>< ><3>< ><4>< ><5>< ><6>< ><7>< ><8>< ><9>< ><1><0>
[root@localhost dir]# echo {1..10} | sed -r 's@([0-9])@<\1>@g'
<1> <2> <3> <4> <5> <6> <7> <8> <9> <1><0>
[root@localhost dir]# echo {1..10} | sed -r 's@([0-9]+)@<\1>@g'
<1> <2> <3> <4> <5> <6> <7> <8> <9> <10>
[root@localhost dir]# 

2、awk 简单使用

awk语法格式:awk+选项+指令+文件
awk options '{指令}' file

-F 指明字段分隔符

[root@localhost dir]# stat file02 | sed -n '4p' 
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
[root@localhost dir]# stat file02 | sed -n '4p' | awk -F "[(/]"  '{print $2}'  #[(/] 意为指定(或/为分隔符
0644

排坑

在awk 使用指定分割符时,如果要使用|符号时 需要使用多个转义符\ 进行转译

[root@localhost dir]# stat file02 | sed -n '4p'
Access: (0644/-rw-r--r--)  Uid: (    0/    root)   Gid: (    0/    root)
[root@localhost dir]# stat file02 | sed -n '4p' | awk -F "\\\(|/"  '{print $2}'
0644
[root@localhost dir]# stat file02 | sed -n '4p' | awk -F '\\(|/'  '{print $2}'
0644
[root@localhost dir]# 

[root@xiaoxi ~]# ip a s eth0
2: eth0:  mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 00:16:3e:06:ce:0f brd ff:ff:ff:ff:ff:ff
    inet 172.31.37.4/20 brd 172.31.47.255 scope global dynamic eth0
       valid_lft 309371533sec preferred_lft 309371533sec
[root@xiaoxi ~]# ip a s eth0 | sed -n '3p' |awk -F "[ /]" '{print $6}'
172.31.37.4

注意上面 指定分割符后面不加+号,和下面带有+号的区别,+号表示连续多个

[root@xiaoxi ~]# ip a s eth0 | sed -n '3p' |awk -F "[ /]+" '{print $3}'
172.31.37.4
[root@xiaoxi ~]# ip a s eth0 | sed -n '3p'
    inet 172.31.37.4/20 brd 172.31.47.255 scope global dynamic eth0
[root@xiaoxi ~]# ip a s eth0 | sed -n '3p' |awk -F "[ /]+" '{print $3}'
172.31.37.4

四、文件目录权限(续)吧

详细讲解 r、w、x、的作用

注意不用使用root用户测试权限问题,root用户默认自

带rw权限。

文件的权限 作用
r 是否可以查看 cat
w 是否可以修改文件内容
x 是否可执行,需要r权限,常用于命令、脚本中
目录的权限 作用
r 是否可以查看目录的内容
w 是否可以在目录中创建、修改、(文件名)的权限
x 是否能进入目录(cd),是否能修改目录下的文件属性信息

五、特殊权限

1、权限掩码

umask 查看系统的权限掩码

0 022 //root用户,第一个0表示高级权限位
0 002 //普通用户,第一个0表示高级权限位

目录初始权限:

777-022=755 //root用户
777-002=775 //普通用户ch

文件初始权限:

666-022=644 //root用户
666-002=664 //普通用户
修改权限掩码)

umask 新的权限掩码
umask 000

注:使用上述方法是临时修改,重新启动系统即失效,永久修改需要修改配置文件/etc/bashrc,其中第66行是普通用户的权限掩码,68行是root用户的权限掩码。

2、权限位分类:

权限位 作用
suid 只要文件所有者位置上有s,用户运行命令的时候相当于命令的所有者(root)
sgid 只要命令所属用户组位置上有s,用户运行命令的时候相当于与这个命令的用户组是一样。(root)
sticky 粘着位,每个人都可以在目录下创建文件,但是每个人只能管理自己创建的文件

设置suid权限位方法:
chmod u+s
chmod 4755 命令名(可执行的脚本或二进制文件)
设置sgid权限位方法
chmod 2777 /dir

查看权限位
[root@localhost dir]# stat /dir/
  File: ‘/dir/’
  Size: 137         Blocks: 0          IO Block: 4096   directory
Device: 803h/2051d  Inode: 16777894    Links: 2
Access: (0755/drwxr-xr-x)  Uid: (    0/    root)   Gid: (    0/    root)
Context: unconfined_u:object_r:default_t:s0
Access: 2019-04-26 19:30:24.329810671 +0800
Modify: 2019-04-26 19:30:16.228811151 +0800
Change: 2019-04-26 19:30:16.228811151 +0800
 Birth: -
[root@localhost dir]# chmod 2755 /dir/

设置sticky方法:
chmod o+t /dir1
chmod 1777 /dir1

3、隐藏属性
隐藏属性有两种,一种是a(设置这个属性后,只能追加,不能删除)
另一种是 i (immutable) 不能删除,不能修改

chattr 加上属性
lsattr 查看属性

[root@xiaoxi ~]# chattr +a aaa 
[root@xiaoxi ~]# lsattr aaa 
-----a-------e-- aaa
[root@xiaoxi ~]# rm -rf aaa 
rm: cannot remove ‘aaa’: Operation not permitted
[root@xiaoxi ~]# echo '1111' >aaa 
-bash: aaa: Operation not permitted
[root@xiaoxi ~]# echo '1111'>>aaa 
[root@xiaoxi ~]# chattr -a aaa 
[root@xiaoxi ~]# lsattr aaa 
-------------e-- aaa
[root@xiaoxi ~]# 
[root@xiaoxi ~]# chattr +i aaa 
[root@xiaoxi ~]# lsattr aaa 
----i--------e-- aaa
[root@xiaoxi ~]# 
--e--表示默认属性,不用理会 
[root@xiaoxi ~]# lsattr 
-------------e-- ./aaa
[root@xiaoxi ~]# 

六、md5sum

md5sum 简单使用 
[root@localhost dir]# md5sum file01 
a9f6fa345e50065d2f39bb0d291a2b74  file01
[root@localhost dir]# 

使用md5sum 验证文件是否被修改过

如果文件没有被修改过
[root@localhost dir]# md5sum file01 >/tmp/file.md5
[root@localhost dir]# cat /tmp/file.md5 
a9f6fa345e50065d2f39bb0d291a2b74  file01
[root@localhost dir]# md5sum --check /tmp/file.md5 
file01: OK
若对文件内容更改了再做验证
[root@localhost dir]# echo '111' >>file01 
[root@localhost dir]# md5sum --check /tmp/file.md5 
file01: FAILED
md5sum: WARNING: 1 computed checksum did NOT match
[root@localhost dir]# 

对批量文件做Md5验证

首先生成MD5 文件
[root@localhost dir]# find /dir/ -type f |xargs md5sum >/tmp/dir.md5 
[root@localhost dir]# cat /tmp/dir.md5 
b6aeba4e1e889c715fde52ee46b418fc  /dir/file.tar.gz
bb7080f43a0bb47ffc286e9a7f194724  /dir/file01
a9022c08b5d075e43ea05f63428ce3c8  /dir/file02
d41d8cd98f00b204e9800998ecf8427e  /dir/file03
bcf2c8554bb79f6aaed59eadfaf893da  /dir/file04
bcf2c8554bb79f6aaed59eadfaf893da  /dir/file05
bb7080f43a0bb47ffc286e9a7f194724  /dir/file.hart
1eee127fc47681ab29c7bf5becfa5563  /dir/sh
然后对生文件进行验证
[root@localhost dir]# md5sum --check /tmp/dir.md5 
/dir/file.tar.gz: OK
/dir/file01: OK
/dir/file02: OK
/dir/file03: OK
/dir/file04: OK
/dir/file05: OK
/dir/file.hart: OK
/dir/sh: OK
[root@localhost dir]# 

同md5sum一样的还有一个sha,用法和md5sum一样

[root@localhost dir]# sha
sha1sum    sha224sum  sha256sum  sha384sum  sha512sum  
[root@localhost dir]# sha1sum file01 
cc5b71ee3889078b458bf781283346de05df0569  file01
[root@localhost dir]# 


七、常用的 yum 源

1、阿里云 mirrors.aliyun.com
curl -o /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum makecache
2、epel源 ,同样进人mirrors.aliyun.com 找到epel 点击帮助
wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

八、

查询系统信息
cat /etc/redhat-release
uname -a

开启或关闭防火墙

C 7

关闭 防火墙:systemctl stop firewalld
关闭防火墙:systemctl start firewalld
设置开机自启动: systemctl enable firewalld
关闭开机自启动:systemctl disable firewall

C 6

关闭 防火墙centos 6 :service iptables stop
关闭防火墙 centos 6 :service iptables start
chkconfig --add apache 添加nginx服务
chkconfig apache on 开机自启nginx服务
chkconfig apache off 关闭开机自启
chkconfig --list | grep apache 查看

SElinux

selinux存放位置 /etc/selinux/config

修改配置文件重启系统生效,一般配合临时生效一起使用

[root@localhost dir]# ll /etc/selinux/config 
-rw-r--r--. 1 root root 542 Apr 21 02:10 /etc/selinux/config
[root@localhost dir]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.  ##开启selinux 
#     permissive - SELinux prints warnings instead of enforcing.##selinux 临时关闭
#     disabled - No SELinux policy is loaded. ##彻底关闭selinux 
SELINUX=disabled
# SELINUXTYPE= can take one of three values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 
[root@localhost dir]# 
[root@localhost dir]# setenforce 0    ##  selinux  临时关闭 
[root@localhost dir]# getenforce      ##查看 
Permissive
[root@localhost dir]#

你可能感兴趣的:(正则、扩展正则、目录权限及SElinux)