Day13
1、selinux是什么?
安全规则,让Linux系统更安全的一套规则。
这个规则太严格了,一般的情况下都会关闭selinux。
自己开启防火墙啊,用其他手段来实现同样的安全目的。
2、怎么关掉Selinux?
查看方法:getenforce
如果是Enforcing临时关掉:
设置Selinux; setenforce
usage: setenforce [ Enforcing | Permissive | 1 | 0 ] #1是关掉 0是开着
永久关闭:
vim /etc/selinux/config
Linux里防火墙C6 iptables C7 firewalld
作用:防护计算机,防止被入侵。
systemctl status firewalld.service
开启firewalld(C6 service iptables start 或者/etc/init.d/iptables start)
什么是硬链接?
具有相同inode节点号的文件互为硬链接。
一个文件硬链接原理。
测试
创建硬链接:
ln 源文件 硬链接文件
的两个入口。
作用:
1、备份,防止误删
b.目录硬链接
不支持人工创建目录硬链接
软链接:
本质是快捷方式,指向源文件实体,本身和源文件是不同的文件。
工作中为什么会使用软链接。
第一个用途:
安装软件:/application/nginx-1.10
过半年:/application/nginx-1.20
导致一个问题,工作中,开发等引用/application/nginx-1.10路径。
安装软件:/application/nginx-1.10===>/application/nginx(让开发用)
过半年:/application/nginx-1.20===>/application/nginx(让开发用)
第二个用途:
/etc/对应的分区要满了,没法放很多文件,但是程序还想通过/etc/目录访问文件。
此时,我们可以把文件放入/opt/oldboy下,然后做一个到/etc/oldboy的软链接。
软链接和硬链接的区别?
Linux文件删除原理:
1、静态文件:没有进程或程序正在访问的文件。
所有的硬链接数为0(i_link),即所有硬链接都被干掉了,包括自身。
硬链接的数量的代表变量符号i_link
rm -f oldboy.txt oldboy_hard_link
执行完其实文件也没删,关机停止运行。
a.系统定时清理没有文件名的inode。
b.磁盘检查会清理。
c.增加新文件时优先占用没有文件名的inode。
恢复的工具:debugfs,ext3grep等等。
2、动态文件:有程序或进程访问的文件
删除原理:
a.所有硬链接删除。i_link为0.
b..i_count是进程调用文件的数量(引用计数)。所有进程调用都要停止取消。i_count为0
3、实践文件删除原理
Day14
1、什么是正则表达式?
作用和特殊字符一样。
正则表达式是为处理大量的字符串及文本而定义的一套规则和方法。
假设"@"代表“I am”,"!"代表“oldboy”,
则执行echo "@!"的结果就是输出“I am oldboy”。
3、适用于三剑客命令 grep(egrep),sed,awk
以行为单位处理。
易混淆事项
1、和通配符区别。
2、开发人员正则,一般是Perl兼容正则表达式。
3、Linux系统三剑客正则表达式******。
正则表达式分类:
1、BRE grep
2、ERE egrep
[root@oldboyedu ~/test]# grep "^I" oldboy.txt #以i开头的
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
[root@oldboyedu ~/test]# ls /data
a.txt aa.txt b.txt c.txt f.txt test.txt
[root@oldboyedu ~/test]# mkdir /data/oldboy
[root@oldboyedu ~/test]# ls -l /data
total 0
-rw-r--r--. 1 root root 0 Oct 4 23:28 a.txt
-rw-r--r--. 1 root root 0 Oct 4 23:28 aa.txt
-rw-r--r--. 1 root root 0 Oct 4 23:28 b.txt
-rw-r--r--. 1 root root 0 Oct 4 23:38 c.txt
-rw-r--r--. 1 root root 0 Oct 4 23:38 f.txt
drwxr-xr-x. 2 root root 6 Oct 5 01:08 oldboy
-rw-r--r--. 1 root root 0 Oct 4 23:28 test.txt
[root@oldboyedu ~/test]# ls -l /data|grep "^d" #查找data目录里的文件
drwxr-xr-x. 2 root root 6 Oct 5 01:08 oldboy
代表自身是.代表任意一个字符。
匹配?匹配前一个字符。
es?匹配e es #?查一个
es*匹配e es ess essssss essssssssss 更多s。 # *多个
e*s*和e?s?
e*空 e ee eeee eeeeee
s*空 s ss sss ssssssssssssss
e*s*空 es e s ees essssss
e?s?空 e s es
e?空 e
s?空 s
e+ e ee eee eeeee .........
e*空 e ee eeee eeeeee .........
e?空 e
a{n,m}匹配前一个字符最少n次,最多m次
a{n,}匹配前一个字符最少n次
a{n}匹配前一个字符正好n次
a{,m}匹配前一个字符最多m次
(0)===\1
(0)(0) \1 \2
第一个括号 第二个括号
egrep -o "(e)(s)\1\2" oldboy.txt ===== egrep -o "eses" oldboy.txt
特殊预定义中括号表达式
[root@oldboyedu ~/test]# egrep "[0-9]" oldboy.txt #有数字的行
my qq num is 49000448.
not 4900000448.
[root@oldboyedu ~/test]#
[root@oldboyedu ~/test]# egrep "[[:digit:]]" oldboy.txt
my qq num is 49000448.
not 4900000448.
[root@oldboyedu ~/test]# egrep "[[:lower:]]" oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
not 4900000448.
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu ~/test]# egrep "[[:upper:]]" oldboy.txt
I am oldboy teacher!
I teach linux.
I like badminton ball ,billiard ball and chinese chess!
my god ,i am not oldbey,but OLDBOY!
[root@oldboyedu ~/test]# egrep "\boldboy\b" oldboy.txt
I am oldboy teacher!
[root@oldboyedu ~/test]# egrep "oldboy" oldboy.txt
I am oldboy teacher!
our site is http://www.oldboyedu.com
[root@oldboyedu ~/test]# egrep -w "oldboy" oldboy.txt
I am oldboy teacher!
Linux三剑客
awk sed grep
sed
Sed是操作、过滤和转换文本内容的强大工具。
常用功能有对文件实现快速增删改查(增加、删除、修改、查询),
其中查询的功能中最常用的2大功能是过滤(过滤指定字符串)和取行(取出指定行)。
sed [选项] [sed内置命令字符] [文件]
选项:
-n取消默认sed的输出,常与sed内置命令的p连用※
-i直接修改文件内容,而不是输出到终端。
如果不使用-i选项sed只是修改在内存中的数据,并不会影响磁盘上的文件※
sed的内置命令字符说明
s替换
g全局global
p打印print
d删除delete
考题sed的
环境:
[root@oldboyedu ~/test]# cat oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
问题1:输出oldboy.txt的第2-3行内容※。
sed -n "2,3p" oldgirl.txt
问题2:过滤出含有oldboy字符串的行※。
sed -n "/oldboy/p" oldgirl.txt问题
问题3:删除含有oldboy字符串的行※。
sed "/oldboy/d" oldgirl.txt
问题4:将文件中的oldboy字符串全部替换为oldgirl※。
sed "s#oldboy#oldgirl#g" oldgirl.txt
问题5:将文件中的oldboy字符串全部替换为oldgirl,同时将QQ号码49000448改为31333741。
sed -e "s#oldboy#oldgirl#g" -e "s#49000448#31333741#g" oldgirl.txt
问题6:在oldboy.txt文件的第2行后追加文本。
sed -i '2a sssss' oldgirl.txt #在第二行的下一行加东西
问题7:在oldboy.txt文件的第2行插入文本。
sed -i '2i sssss' oldgirl.txt#在第二行的下上行加东西
删除指定行
sed -i '3d' oldgirl.txt
sed -i '5,8d' oldgirl.txt
详解;环境:
[root@oldboyedu ~/test]# cat oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
问题1:输出oldboy.txt的第2-3行内容※。
问题2:过滤出含有oldboy字符串的行※。
问题3:删除含有oldboy字符串的行※。
问题4:将文件中的oldboy字符串全部替换为oldgirl※。
问题5:将文件中的oldboy字符串全部替换为oldgirl,同时将QQ号码49000448改为31333741。
问题6:在oldboy.txt文件的第2行后追加文本。
问题7:在oldboy.txt文件的第2行插入文本。
删除指定行
sed -i '3d' oldgirl.txt
sed -i '5,8d' oldgirl.txt
环境:
[root@oldboyedu ~/test]# cat oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
问题1:输出oldboy.txt的第2-3行内容※。
[root@oldboyedu ~/test]# sed -n '2,3p' oldgirl.txt
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
[root@oldboyedu ~/test]# head -3 oldgirl.txt |tail -2
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
问题2:过滤出含有oldboy字符串的行※。
[root@oldboyedu ~/test]# sed -n '/oldboy/p' oldgirl.txt
I am oldboy teacher!
our site is http://www.oldboyedu.com
[root@oldboyedu ~/test]# grep oldboy oldgirl.txt
I am oldboy teacher!
our site is http://www.oldboyedu.com
问题3:删除含有oldboy字符串的行※。
[root@oldboyedu ~/test]# sed '/oldboy/d' oldgirl.txt
I like badminton ball ,billiard ball and chinese chess!
my qq num is 49000448.
[root@oldboyedu ~/test]# grep -v "oldboy" oldgirl.txt
I like badminton ball ,billiard ball and chinese chess!
my qq num is 49000448.
问题4:将文件中的oldboy字符串全部替换为oldgirl※。
[root@oldboyedu ~/test]# sed 's#oldboy#oldgirl#g' oldgirl.txt
I am oldgirl teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldgirledu.com
my qq num is 49000448.
问题5:将文件中的oldboy字符串全部替换为oldgirl,同时将QQ号码49000448改为31333741。
[root@oldboyedu ~/test]# sed -e 's#oldboy#oldgirl#2' -e 's#49000448#31333741#g' oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 31333741.
问题6:在oldboy.txt文件的第2行后追加文本。
[root@oldboyedu ~/test]# sed '2a I teacher linux.' oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
I teacher linux.
our site is http://www.oldboyedu.com
my qq num is 49000448.
[root@oldboyedu ~/test]# cat oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
our site is http://www.oldboyedu.com
my qq num is 49000448.
[root@oldboyedu ~/test]# sed -i '2a I teacher linux.' oldgirl.txt
[root@oldboyedu ~/test]# cat oldgirl.txt
I am oldboy teacher!
I like badminton ball ,billiard ball and chinese chess!
I teacher linux.
our site is http://www.oldboyedu.com
my qq num is 49000448.
[root@oldboyedu ~/test]# sed '2i I teacher linux.i' oldgirl.txt
I am oldboy teacher!
I teacher linux.i
I like badminton ball ,billiard ball and chinese chess!
I teacher linux.
our site is http://www.oldboyedu.com
my qq num is 49000448
Day 15
三剑客自身有特长的:grep过滤查找内容 筛子sed取行 替换 删除 追加awk取列
cut按列切割
-d指定分隔符 -f指定哪列,多列用逗号[root@oldboyedu ~]# cat a.txt
1 2 3 4 5 6 7 8 9 10[root@oldboyedu ~]# cut -d" " -f1,3,5 a.txt1 3 5[root@oldboyedu ~]# cut -d" " -f3-5 a.txt
参数:
-F指定分隔符
列:
2第二列
NF最后一列$NF-1倒数第二列 需加()
[^r]非r[r]以非r字符开头的
Day16
Linux基础权限是9个字符。
[root@oldboyedu ~]# ls -lhi
total 36K
33631870 -rw-r--r--. 1 root root 21 Oct 6 22:54 a.txt
33631871 -rw-r--r--. 1 root root 16 Oct 6 23:02 b.txt
33631857 -rw-r--r-- 1 root root 61 Oct 7 00:11 c.txt
rw-r--r--
rw-r--r--
rw-r--r--
分3组:
前三个字符是表示用户(属主)权限位user(用户) u
中三个字符是表示用户组权限位group(用户组) g
后三个字符是其它用户权限位others(其他用户) o
同一组的三个字符权限也是有位置的:
r--第一个字符的位置读的权限位
第二个字符的位置写的权限位
第三个字符的位置是执行的权限位。
r 4
w 2
x 1
- 0
Linux权限有两种表现形式:
1、数字表示法 称为8进制权限
r 4
w 2
x 1
- 0
实际的权限表示就是将每3位相加即可。
rwxr-xr-x 755
rwx 7
r-x 5
r-x 5
2、字符表示法
rw-rw-r-x代表的数字权限为665
--xr-x-wx代表的数字权限为153
-wx--x--x代表的数字权限为311
而以下数字权限表示的字符权限如下:
755代表的字符权限为rwxr-xr-x
644代表的字符权限为rw-r--r--
134代表的字符权限为--x-wxr--
修改文件属性的用户和组
chown用户.用户组 文件 这里的点可以用:替换。
chown用户 文件
chown .用户组 文件 ====chgrp 用户组 文件
安全权限临界点:
文件不想被修改执行:644
目录不想被修改(删除移动创建)被执行(进入):755
当umask中存在奇数位的时候,在计算完毕,奇数位加1
666
011
-------------------
655
11
-----------------
666
基于文件:默认权限规则了解
从666计算
umask都为偶数 默认权限用减法
umask有奇数 默认权限用减法 然后奇数位加1
基于目录:默认权限规则
从777计算
默认权限用减法
Linux系统特殊权限位知识
9位基础权限
还有3位特殊权限位
suid位:
suid(setuid)位通过S字符标识,
存在于基本权限的用户权限位的x权限对应的位置,
如果用户权限位对应的x权限位上有x权限,则suid就用小写的s标识,
suid的s对应的数字权限为4,完整权限用八进制数4000表示。
针对二进制命令
sgid位:
sgid(setgid)位同样是通过S字符来标识,
但是,sgid位存在于基本权限的用户组权限位的x权限对应的位置,
如果用户组权限位对应的x权限位上有x权限,则sgid就用小写的s标识,
suid的s对应的数字权限为2,完整的权限用八进制数2000表示。
sticky(粘滞位)知识简介
sticky(粘滞)位通过字符T标识,存在于基本权限的其他用户位对应的x权限位上,
如果其他用户位的x权限位上有x权限,
则sticky(粘滞)位通过小写的t标识,对应的数字权限是1,
完整的权限用八进制数1000表示。
4 2 1,加和放在基础权限数字的前面。
suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,
拥有和root管理员一样的身份和权限(默认情况)。
Day17
sgid的作用
作用之一:sgid的作用就是让普通用户可以在执行某个设置了sgid位的命令时,
拥有和命令对应用户组(一般为root用户组)一样的身份和权限(默认)。
sgid基于目录的作用:
让不同的人创建文件属于相同的用户组,从而可以互相共享文件的权限。
12.9本章重点
1)Linux基本9位权限之文件和目录权限详细说明。
2)Linux基本9位权限之字符和数字(8进制)权限知识。
3)权限及用户用户组属性修改命令chmod、chown、chgrp。
4)默认权限umask以及系统目录安全案例。
5)特殊权限Suid知识掌握,Sgid和sticky知识了解即可。
3W1H框架
Linux系统定时任务:
1、什么是定时任务?
周期性的执行任务计划的软件,Linux定时任务的常用软件crond。
2、使用定时任务软件,可以每天,每小时按你需求重复的执行一项工作。
例如:备份都是0点以后,2点爬起来备份,4点以后睡觉。
需要写一个程序实现自动备份,然后让定时任务软件帮你执行。
3、怎样用。
(1)系统定时任务计划
1.不用管理员干预,系统自动执行。
2.也可以利用系统任务为管理员服务。
在Linux系统中,
cron是定时任务的软件名,
crond是服务进程名,真正实现定时任务服务。
crontab命令是用来设置定时任务规则的配置命令。
要想配置定时任务,首先启动crond服务。
crontab命令是用来设置定时任务规则的配置命令。
定时任务内容存放的位置/var/spool/cron/
编写定时任务
共六列:
第一列:分minute (0 - 59)
第二列:时hour (0 - 23)
第三列:日day of month (1 - 31)
第四列:月month (1 - 12) OR jan,feb,mar,apr ...
第五列:周day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
第六列:要执行的任务命令或程序
特殊符号:
*表示的 每或每一 的意思
00 23 * * * cmd
-连续区间 1-10
00 8-23 * * * cmd
,列举 1,2,3,4,8
00 1,2,3,4,8 * * * cmd
/n n是数字。
n代表自然数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成*/10 * * * * cmd
生产环境下的定时Cron书写要领
要领1:为定时任务规则加必要的注释
要领2:所有的定时任务尽量都以脚本的形式执行
要领3:在执行的Shell脚本前加上/bin/sh
要领4:定时任务中命令或脚本的结尾加>/dev/null 2>&1
要领5:在指定用户下执行相关定时任务
要领6:生产任务计划程序中不要随意打印输出信息,有输出的想法去掉。
要领7:定时任务执行的脚本要存放到规范路径下
要领8:配置定时任务要规范操作过程,减少出错
要领9:定时任务脚本中程序命令及路径尽量用全路径
要领10:时间变量%号要用反斜线转义(只有定时任务里是命令时需要)
要领11:若脚本中调用了系统环境变量,要重新定义
要领12:出错或无法执行,就检查/var/log/cron日志