Day13-17课堂笔记

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日志

你可能感兴趣的:(Day13-17课堂笔记)