3月18日
selinux是什么?
安全规则,让Linux系统更安全的一套规则。
这个规则太严格了,一般的情况下都会关闭selinux。
自己开启防火墙,用其他手段来实现同样的安全目的。
查看方法:getenforce
临时关闭:setenforce
永久关闭:vim /etc/selinux/config
改为 selinux=disabled
linux里防火墙centos6 是 iptables
centos7 是 firewalld
作用:防护计算机,防止被入侵
让firewalld开机自启动 systemctl enablefirewalld.service
什么是硬链接?
具有相同inode节点号的文件互为硬链接。
创建硬链接 ln 源文件 硬链接
不支持人工创建硬链接
linux文件删除原理:
静态文件:
没有进程或程序正在访问的文件。
所有的硬链接为0,即所有的硬链接都被干掉了,包括自身
硬链接的数量的代表符号i_link
rm -f oldboy.txt old hard_link 执行完其实文件也没删
系统定时清理没有文件名的inode
磁盘检查会清理
增加新文件时优先占有文件名的inode
恢复工具:debugfs,ext3grep等等。
多备份,操作前备份,异服务器和异地备份。
动态文件:
有程序或进程访问的文件
删除:
i_link为o
i_count为0,i_count是进程调用文件的数量(引用计数)。所有进程调用都要停止取消。
软链接:
本质是快捷方式,指向源文件实体,本身和源文件是不同的文件:
目录:工作中的重点
面试必会题:软链接和硬链接的区别
通配符与特殊符号
范围通配符的适用范围是命令行中普通命令或脚本编程中
* 匹配所有
? 表示单个字符
[abcd] 匹配里面任意一个字符
~ 用户家目录
- 上次所在的目录
. 当前目录
.. 上一级目录
‘’单引号 所见即所得
"" 双引号 引用字符串 解析变量、命令,推荐使用
``反引号 引用命令,解析命令
;命令分隔符
# 1.管理员提示符 2.注释符号
$ 1.普通用户提示符 2.调用变量使用
| 管道 前面的数据流交给后面处理
\ 转义字符 让字符还原本义
{} 1.生成序列 2.引用变量 让变量成为一个整体
! 1.取反 2.在vim中强制 3.调用最近符合字符开头的命令
&& 并且 前面正确后面才输出
|| 或者 前面错误后面才输出
>或> 输出重定向 输出重定向到文件,会清空文件
>>或>> 输出追加重定向将内容追加到文件底部,不清空内容
<或0<输入重定向 清空内容,数据流向处理的命令
<<或0<< 追加输入重定向 追加内容到文件底部,数据流向处理的命令
3月19日
学习方法 :3W1H
what什么是正则表达式?作用和特殊字符一样。正则表达式是为处理大量的字符串及文本而定义的一套规则和方法
why 为什么用?
提高效率,快速获取到想要的内容
where 在哪用?
适用于三剑客grep(egrep),sed,awk
how 怎么用?
实践来讲解易混淆事项
- 和通配符区别
- 开发正则,一般是Perl兼容正则表达式。
Linux系统三剑客正则表达式
分类
BRE 基本正则表达式
例:
^ 尖角号 以…开头,^oldboy 以oldboy开头
$ 美元符 以…结尾,oldboy$ 以oldboy结尾
^$ 空行
. 匹配任意一个且只有一个字符,和通配符?一样
\ 让有意义的字符还原本义
* 重复前面字符0次或多次
.* 所有内容
^.* 以任意字符开头
.*$ 以任意0个或多个字符结尾
[abc] 匹配[]内任意一个字符
[^abc] 匹配不包含^后的任意一个字符
ERE 扩展的正则表达式
例:
+ 匹配前一个字符1次或1次以上
[:/]+ 匹配:或/ 一次或一次以上
?匹配一个字符0次或一次
a{n,m} 匹配前一个字符最少n次,最多m次
a{n,} 匹配前一个字符最少n次
a{n} 匹配前一个字符正好n次
a{,m} 匹配前一个字符最多m次
元字符表达式
\b 匹配单词边界 类似grep -w
\d 匹配单个数字字符 需用grep -P
三剑客sed 流编辑器
-n取消命令的默认输出
-i直接修改文件内容,而不是输出到终端
sed 的内置命令字符
s 替换
g 全局
p 打印
d 删除
元字符:
\b匹配单词边界 类似grep -w
\d匹配单个数字字符 需用grep -p
3月20日
1、什么是正则表达式?作用和特殊字符一样。正则表达式是为处理大量的字符串及文本而定义的一套规则和方法。
2、提高效率,快速获取到想要的内容。
3、适用于三剑客命令 grep(egrep),sed,awk
以行为单位处理。
4、实践来讲解
易混淆事项
1、和通配符区别。
2、开发人员正则,一般是Perl兼容正则表达式。
3、Linux系统三剑客正则表达式******。
分类:
1、BRE grep
2、ERE egrep
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
Linux三剑客awk sed grep
Sed是操作、过滤和转换文本内容的强大工具。
常用功能有对文件实现快速增删改查(增加、删除、修改、查询),其中查询的功能中最常用的2大功能是过滤(过滤指定字符串)和取行(取出指定行)。
sed [选项] [sed内置命令字符] [文件]选项:
-n 取消默认sed的输出,常与sed内置命令的p连用※
-i 直接修改文件内容,而不是输出到终端。
如果不使用-i选项sed只是修改在内存中的数据,并不会影响磁盘上的文件※
sed的内置命令字符说明
s 替换
g 全局global
p 打印print
d 删除delete
正则是贪婪匹配模式,人性是贪婪的。
cut 按列切割
-d 指定分隔符
-f指定哪列,多列用逗号
awk语法:
awk [option] 'pattern{action}' file ...
awk [参数] '条件{动作}' 文件...参数:
-F 指定分隔符
$1第一列 $2第二列以此类推....
$0 整行
$NF 最后一列 倒数第一列
$(NF-1) 倒数第二列
cut 按列切割
-d 指定分隔符
-f指定列多列用逗号分隔
三剑客自身特长
grep 过滤查找内容,筛子
sed 取行,替换,删除,追加
awk 取列
awk参数
-F 指定分隔符
$1第一列
$2第二列
$0 整行
$NF 最后一列
~匹配
3月21日
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
【文件】权限详细说明:****
【目录】权限详细说明:****
权限修改:
777 +x -x u=w g-x
Linux权限有两种表现形式:
1、数字表示法 称为8进制权限
r 4
w 2
x 1
- 0
实际的权限表示就是将每3位相加即可。
rwxr-xr-x 755
rwx 7r-x 5r-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
[root@oldboyedu /oldboy]# umask
022
创建文件默认最大的权限为666 (-rw-rw-rw-),其默认创建的文件没有可执行权限x位。
当umask中存在奇数位的时候,在计算完毕,奇数位加1
基于文件:默认权限规则 了解
从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的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,拥有和root管理员一样的身份和权限(默认情况)。
[oldgirl@oldboyedu /]$ ll -ld oldboy/
dr-x-wxrw-. 2 oldboy incahome 6 Oct 7 22:15 oldboy/
oldgirl属于incahome,增加一个用户属于incahome,是不是也和oldgirl有同样权限。
oldboy 给一个新用户设置suid,这个新用户的权限就和oldboy一样。
文件属性
chmod 修改文件权限
-R 递归修改
chown 改变文件用户和组
-R 递归修改
chgrp 修改用户组
-l 列表定时任务用户管理
id 查看用户身份
whoami 查看当前用户
usermod 修改用户属性
groupadd 添加用户组
stat 查看文件属性
-c 获取文件属性的一部分
%A 显示字符权限
3月22日
sgid属组
sgid的作用就是让普通用户可以在执行某个设置了sgid位的命令时,
拥有和命令对应用户组(一般为root用户组)一样的身份和权限(默认)。
locate 搜索内容
locate搜索内容,默认从updatedb对应的数据库中查找
updatedb 更新locate查找内容对应的数据库。
sgid基于目录的作用:让不同的人创建文件属于相同的用户组,从而可以互相共享文件的权限。
Linux系统定时任务:
1、什么是定时任务?
周期性的执行任务计划的软件,Linux定时任务的常用软件crond。
2、使用定时任务软件,可以每天,每小时按你需求重复的执行一项工作。
例如:备份 都是0点以后,2点爬起来备份,4点以后睡觉。需要写一个程序实现自动备份,然后让定时任务软件帮你执行。
3、怎样用。
系统定时任务计划不用管理员干,系统自动执行。也可以利用任务为管理员服务
用户定时任务
cron是定时任务的软件名
crond是服务进程名,真正实现定时任务服务
crontab命令式用来设置定时任务规则的配置命令
要想配置定时任务,首先启动crond服务
systemctl startcrond.service
systemctl stop crond.service
systemctl statuscrond.service
开启自启动:
systemctl disablecrond.service
systemctl enablecrond.service
crontab命令是用来设置定时任务规则的配置命令
内容存放哪里了。定时任务内容存放的位置/var/spool/cron/
以当前用户名作为文件名
-l 列表查看已经设置的定时任务
-e 编辑定时任务
-u 查看特定用户下的定时任务
编写定时任务的语法:
# Example of jobdefinition:#.---------------- minute (0 - 59)
# | .------------- hour (0 - 23)# | | .---------- day of month (1 - 31)
# | | | .------- month (1 - 12) ORjan,feb,mar,apr ...
# | | | | .---- day of week (0 - 6) (Sunday=0 or 7) ORsun,mon,tue,wed,thu,fri,sat
# | | | | |
# * * * * * (command to be executed)
共六列:
第一列:分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) ORsun,mon,tue,wed,thu,fri,sat
第六列:要执行的任务命令或程序
定时任务的特殊符号
* 表示的 每 或每一的意思
- 连续区间1-10, 列举1,2,3,4,8
/n n是自然数字数字,即“每隔n单位时间”,例如:每10分钟执行一次任务可以写成
13.5生产环境下的定时Cron书写要领
要领1:为定时任务规则加必要的注释
要领2:所有的定时任务尽量都以脚本的形式执行
要领3:在执行的Shell脚本前加上/bin/sh
要领4:定时任务中命令或脚本的结尾加>/dev/null 2>&1
要领5:在指定用户下执行相关定时任务
要领6:生产任务计划程序中不要随意打印输出信息,有输出的想法去掉。
要领7:定时任务执行的脚本要存放到规范路径下
要领8:配置定时任务要规范操作过程,减少出错
要领9:定时任务脚本中程序命令及路径尽量用全路径
要领10:时间变量%号要用反斜线转义(只有定时任务里是命令时需要)
要领11:若脚本中调用了系统环境变量,要重新定义
要领12:出错或无法执行,就检查/var/log/cron日志命令笔记
定时任务的命令
crontab的参数
-l 列表定时任务
-e 编辑定时任务
-u 查看特定用户下的定时任务