DAY13
df命令 默认查看block信息的
ls -lhi命令 文件第二列后面的 “.”
表示selinux是开着的状态
selinux:安全规则 可以让Linux系统更安全的一套规则,
这个规则太严格了 一般情况下都会关闭,我们一般会用防火墙等来实现同样的安全目的
用getenforce命令查看是否开启
setenforce 1或者0命令可以临时开关
vim /etc/selinux/config
设置永久关闭 disabled 完全关闭
思想:1.优秀的运维习惯 :内容尽量复制 减少错误
2.操作前备份,操作后检查
3.使用中记忆
4.眼睛里不要放过输出的英文
5.工作中永远不要重启linux
linux里面防火墙有两类
centos6. iptables
centos7 firewalld
防火墙的作用 防护计算机 防止被人入侵
systemctl status firewalled.service 查看防火墙服务
/etc/rc.local 把开机自启动的文件放进去
或 systemctl enable firewalld.service
来让防火墙开机自启动
开机不启动 disabled
CentOS6
查看防火墙状态:service iptables status ,记得在CentOS6.9中是输入iptables,网上有些教程使用service iptable status 命令并不可行。或/etc/init.d/iptables/status
centos6关防火墙的方法:dchkonfig iptables off或者是/etc/init.d/iptables stop(这是临时关闭,关闭的是当前运行的防火墙,重启之后防火墙又会启动,因为它是开机自启动的)
6开启的方法:service iptables start
永久开启防火墙(自启动): chkconfig iptables on
查看状态:chkconfig --list iptables
ls -lhi 命令下
33631870 -rw-r--r--. 1 root root 4Mar 13 2019 a.txt
第三列的1 :硬链接数
1 表示该文件只有一个硬链接
硬链接的概念 :具有相同inode节点号的文件互为硬链接
找出硬链接的方法:ls -ldi test
创建硬链接 ln
硬链接的原理
一间房子的前后门 都通往一个inode 再找到同一个block
作用:备份 防止误删
新加命令
ls -r :反转排序
ls -t :按修改时间排序
ls -lrt :查最新创建的文件
mv的原理:只是改了路径的名字 inode指向并没有变 所以速度很快
cp的原理:重新生成inode ,生成block block很大 占文件几乎全部 所以很慢
目录硬链接
不支持人工创建目录硬链接
所以ln 目录 xx_link 不允许
原理:目录可能对应一个分区 另一个目录对应另一个分区
不能把两个分区变成一个 这样两个磁盘下的inode就重复了 :老男孩
文件删除的原理:(静态文件:没有进程或程序访问的文件)让所有的硬链接数为0,即所有硬链接都没了 包括自身
rm -f 之后 其实文件也没删 但是系统会定时清理没有名字的inode 磁盘检查也会清理 增加新文件的时候 优先占用没有文件名的inode
执行rm-f之后如果想恢复文件 关机停止运行
恢复工具(debugfs,ext3grep等等)
动态文件:有进程或程序访问的文件
a 所有硬链接删除 ilink为0
b..i_count是进程调用文件的数量 所有进程调用都要停止取消 i——count为0
要先CTRL+C 停止进程再删除
多备份 操作前备份 异服务器异地备份
软链接:本质是快捷方式 是指向源文件实体的 本身和源文件是不同的文件
ln-s 软链接
做软链接的时候 让开发引用新的软链接
但是名字不变 (更新之后 再做的软链接名字不改变)
Linux通配符与特殊符号实践
定义:通配符就是键盘上的特殊字符 可以实现某些特殊的功能
比如 可以使用*来代表所有,来模糊搜索系统中的文件
通配符的适用范围是 命令行 普通命令 或脚本编程中
特殊字符集合:
*:模糊匹配 代表所有
?:表示单个字符 例ls ???.txt 只能出现aaa.txt
00000000000000000000000000000000
【!a-d】:取反 取不包含a-d的文件
与路径位置有关的
~:用户家目录,超级用户为/root,普通用户为/home
-:代表上一次目录
. :代表当前目录
.. :代表上一级目录
通配符引用字符串命令相关
' ' 单引号,所见即所得
"" 双引号,打印变量值或解析用反引号或$()括起的命令
空 与双引号类似
``:反引号,用于引用命令,执行时命令会被执行,相当于$()
其它
; 一个命令的结束,也是命令间的分隔符
# 注释内容及root用户的提示符
$ 字符串变量内容及普通用户命令提示符
|:管道,将一个命令处理后的结果给下一个命令继续处理
\:让原本有含义的字符还原本意,例如\$仅代表美元符
{} :生成序列及变量作为变量与普通字符分隔
& :将程序放入后台运行
||:前面的错误了 才输出后面的
&&:前面的正确 才输出后面的
重定向系列
0<或< 标准输入重定向
0<<或<< 标准追加输入重定向
1>或> 标准输出重定向
1>>或>> 标准输出追加重定向
2> 标准错误输出重定向
2>> 标准错误输出追加重定向
..
DAY14
Linux正则表达式 和三剑客知识应用实践
1.正则表达式:处理大量的字符串和文本而定义一套规则和方法,
假设说@代表iam !代表oldboy 则执行echo“@!”的结果就是iam oldboy
2.作用:提高效率 快速获取到想要的内容
3.可以为三剑客命令提供服务:grep(egrep)、sed、awk 这三个命令
工作时以行为单位,一次处理一行
4.怎么用 实践:
易混淆的事项
1.和通配符区别
2.和开发正则有区别,开发人员正则一般是perl语言兼容正则表达式。
3.Linux三剑客正则表达式
环境准备 export LC_ALL=C <== 配置后操作不会出现异常匹配的情况
基础正则表达式(BRE basic regular expression)(一般用 grep ):
^ XX · 以XX开头
XX $ 以XX结尾 例 grep “\!$”oldboy.txt 应用 "\!$" 来实现对 !结尾的文档的grep (\的作用参见上周)
^$ 空行 例:grep -vn “^$”oldboy.txt 这条命令来实现显示行号并反向过滤除了空行之外的内容 -n(先对过滤的内容显示行号)
\ 转义字符 在字符前面加 让字符回归本身的意义
“.”:匹配任意单个字符,和通配符?一样(不匹配空行)
* 匹配前一个字符0次或多次
.* 任意字符 所有内容
^.* 以任意字符开头
.*$ 以任意字符结尾
[abc] 匹配括号内任意一个字符 可以写成[a-c]
[^abc] 不匹配括号内任意一个字符 相当于取反
拓展正则表达式(ERE , extended regular expression)(一般 egrep ) :
+ 匹配前一个字符1次或多次(不会匹配空行)
[:/]+ 匹配括号内的字符:和/1次或多次
? 匹配前一个字符0次或1次
| 同时过滤多个字符串
() 分组用于后向引用及分隔变量与字符
\n 引用()小括号里内容,如:(aa)\2,匹配aaaaaa
a{n,m} 匹配前一个字符n次到m次
a{n} 匹配前一个字符正好n次
a{n,} 匹配前一个字符至少n次
a{,m} 匹配前一个字符最多m次
元字符egrep
\b 匹配一个单词边界 类似grep -w
\B 只能匹配前后边界有字 \Boldboy ---123oldboy 中的oldboy 单独oldbay不匹配
grep -P 用于过滤perl正则 开发使用
\d 匹配单个数字
三剑客老二 sed(流编辑器)同时做到增删改查
-n 取消命令的默认输出
-i 直接修改文件内容 不输出到终端
sed内置命令字符说明
s 替换 // 过滤
g 全局替换 s#x#x#g
p 打印 print
d 删除delete
-e 多次编辑
sed -e ‘命令’ -e ‘命令’
DAY15
三剑客自身有特长的。
grep 过滤查找内容。筛子
sed 取行,替换,删除,追加
awk 取列
cut 按列切割
-d指定分隔符 -f指定哪列,多列用逗号
awk语法
awk 参数 条件 '{动作}' 文件
参数-F 指定分隔符 多个用[ ] 重复的用+
动作暂时基本只用print输出
列数用$表示 $1 $2等 要在前面或者后面加符号或固定语句用""在前后加
$0标识整行输出 $NF最后一列 NF-1倒数第二 以此类推
条件用~表示匹配 / /条件用框起来 NR标识行 &&和||或
DAY16
Linux基础权限是9个字符。
ls lhi 查看
rw-r--r-- 默认权限
前三组 属主权限 u(user)
中三 用户组权限 g (group)
后三组 其他用户权限 o(other)
r 读 w写 x执行
4 2 1 0
对于可读r的说明:没有可读r配合 vi编辑文件时 会提示无法编辑 但可以强行编辑(echo等重定向)
删除文件创建文件的权限是受上一级目录的权限控制的 和文件本身权限无关 (文件名不在inode里面 在上级目录的BLOCK)
因此文件本身的可写W权限和文件是否能被改名和删除无关
首先文件本身要能执行
如果是普通用户,同时还要具备可读r的权限才能执行文件
root用户只要有可执行X的权限就能执行文件
Linux权限有两种表现形式:
1、数字表示法 称为8进制权限
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
企业真实案例:网站文件被恶意修改了。。。。打开网站后有弹窗广告(不是你网站的)
用户打开网站,报警。
原因:权限设置不到位。chmod -R 777 目录 开发人员习惯
解决方案:
1、备份
tar zcvf /opt/oldboy_$(date +%F).tar.gz ./oldboy/
2、找到被修改的文件
[root@oldboyedu /]# find /oldboy -type f |xargs grep 'ddddddddddddd'
/oldboy/oldboy.txt:
/oldboy/test.sh:
3、批量删除
[root@oldboyedu /]# find /oldboy -type f |xargs sed -i '/ddddddddddddd/d'
[root@oldboyedu /]# find /oldboy -type f |xargs grep 'ddddddddddddd'
4、找到文件被篡改来源,并优化调整。
亡羊补牢。
5、写总结 故障报告。
控制默认权限umask
创建文件默认权限最大为666
基于文件:默认权限规则 了解
从666计算
umask都为偶数 默认权限用减法
umask有奇数 默认权限用减法 然后奇数位加1
还有3位特殊权限位
suid位:
suid(setuid)位通过S字符标识,
简单地说,suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,
拥有和root管理员一样的身份和权限(默认情况)。
存在于基本权限的用户权限位的x权限对应的位置,
如果用户权限位对应的x权限位上有x权限,则suid就用小写的s标识,
suid的s对应的数字权限为4,完整权限用八进制数4000表示。
sgid位:
让不同的人创建文件属于相同的用户组,从而可以互相共享文件的权限。
sgid(setgid)位同样是通过S字符来标识,
sgid的作用就是让普通用户可以在执行某个设置了sgid位的命令时,
拥有和命令对应用户组(一般为root用户组)一样的身份和权限(默认)。
但是,sgid位存在于基本权限的用户组权限位的x权限对应的位置,
如果用户组权限位对应的x权限位上有x权限,则sgid就用小写的s标识,
suid的s对应的数字权限为2,完整的权限用八进制数2000表示。
sticky(粘滞位)知识简介
sticky(粘滞)位通过字符T标识,存在于基本权限的其他用户位对应的x权限位上,
如果其他用户位的x权限位上有x权限,
则sticky(粘滞)位通过小写的t标识,对应的数字权限是1,
完整的权限用八进制数1000表示。
DAY17
Linux定时任务
Linux定时任务常用软件crnod
使用定时任务软件 可以每天每小时按需求重读执行工作
3W1H 框架
Linux系统定时任务:
1、什么是定时任务?
周期性的执行任务计划的软件,Linux定时任务的常用软件crond。
2、使用定时任务软件,可以每天,每小时按你需求重复的执行一项工作。
例如:备份 都是0点以后,2点爬起来备份,4点以后睡觉。
需要写一个程序实现自动备份,然后让定时任务软件帮你执行。
闹钟。。。。可以追女朋友。。。
3、怎样用。
1.用户定时任务
2.系统定时任务
不需要管理员干预,系统自动指定的任务
也可以利用系统任务为管理员服务
cron 定时任务软件名
crond是服务进程名、crond.service
要想配置定时任务,首先启动crond服务。
systemctl start crond.service
systemctl stop crond.service
systemctl status crond.service
开启自启动:
systemctl disable crond.service
systemctl enable crond.service
crontab命令是用来设置定时任务规则的配置命令。
内容存放哪里了。定时任务内容存放的位置/var/spool/cron/
以当前用户名作为文件名
crontab -l 列表 查看已经设置的定时任务
-e 编辑定时任务
-u 指定用户查看定时任务
定时任务的编写
第一列 分 minute
第二列 时 hour
第三列 日 day of month
第四列 月 month
第五列 周 day of week
第六列 要执行的任务命令或程序
特殊符号
*每 -连续区间 x-y 从x到y
,列举 /n 标识间隔 每隔
***** echo 'oldboy'>>/tmp/oldboy/log
要领
1.为定时任务规则加血必要的注释
2.所有的定时任务尽量以脚本的形式执行
3.在执行的shell脚本前加上 /bin/sh
4.定时任务的命令或脚本结尾处加 &>dev/null
5.在指定的用户下执行相关定时任务
6.不要随意打印输出
7.定时任务执行的脚本要存放在固定路径下
8.规范操作过程 减少出错
9.定时任务要用全路径
10.时间变量要用反斜转义
11.若调用了系统环境变量 要重新定义
12.出错或无法执行 查看/var/log/cron