第十三天笔记
1、selinux
安全规则,让Linux系统更安全的一套规则。
这个规则太严格了,一般的情况下都会关闭selinux。
自己开启防火墙啊,用其他手段来实现同样的安全目的。
getenforce (查看selinux状态)
临时关掉:
setenforce 0
永久关闭:
vim /etc/selinux/config
SELINUX=disabled
2、Linux里防火墙C6 iptables C7 firewalld
作用:防护计算机,防止被入侵。
systemctl status firewalld.service (查看防火墙状态)
开启firewalld(C6 service iptables start 或者/etc/init.d/iptables start)
让firewalld开机自启动
systemctl enable firewalld.service
C6用法:chkconfig iptables off
C7就是一个命令systemctl
3、硬链接
具有相同inode节点号的文件互为硬链接。
一个文件的两个入口。
作用:
备份,防止误删。
4、软链接:
本质是快捷方式,指向源文件实体,本身和源文件是不同的文件。
用途:
1、对软件、服务进行软连接,开发需要引用路径,给开发软连接路径,方便运维进行后期软件更新
2、/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
通配符知识:
1、基本含义
通配符简单说就是键盘上的一些特殊字符,可以实现某些特殊的功能,
例如,可以用*代表所有,来模糊搜索系统中的文件。
2、范围:通配符试用范围是命令行中【普通命令】或脚本编程中。
第十四天笔记
1、正则表达式
作用和特殊字符一样。
正则表达式是为处理大量的字符串及文本而定义的一套规则和方法。
2、提高效率,快速获取到想要的内容。
3、适用于三剑客命令 grep(egrep),sed,awk
以行为单位处理。
易混淆事项
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次
Linux三剑客
awk sed grep
sed
Sed是操作、过滤和转换文本内容的强大工具。
常用功能有对文件实现快速增删改查(增加、删除、修改、查询),
其中查询的功能中最常用的2大功能是过滤(过滤指定字符串)和取行(取出指定行)。
sed [选项] [sed内置命令字符] [文件]
选项:
-n 取消默认sed的输出,常与sed内置命令的p连用※
-i 直接修改文件内容,而不是输出到终端。
如果不使用-i选项sed只是修改在内存中的数据,并不会影响磁盘上的文件※
sed的内置命令字符说明
s 替换
g 全局global
p 打印print
d 删除delete
第十五天笔记
1、正则表达式
作用和特殊字符一样。
正则表达式是为处理大量的字符串及文本而定义的一套规则和方法。
提高效率,快速获取到想要的内容。
适用于三剑客命令 grep(egrep),sed,awk
以行为单位处理。
易混淆事项
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次
2、Linux三剑客
awk sed grep
三剑客自身有特长的。
grep 过滤查找内容。筛子
sed 取行,替换,删除,追加
awk 取列
sed
Sed是操作、过滤和转换文本内容的强大工具。
常用功能有对文件实现快速增删改查(增加、删除、修改、查询),
其中查询的功能中最常用的2大功能是过滤(过滤指定字符串)和取行(取出指定行)。
sed [选项] [sed内置命令字符] [文件]
选项:
-n 取消默认sed的输出,常与sed内置命令的p连用※
-i 直接修改文件内容,而不是输出到终端。
sed的内置命令字符说明
s 替换
g 全局global
p 打印print
d 删除delete
正则是贪婪匹配模式,人性是贪婪的。
awk
awk [option] 'pattern{action}' file ...
awk [参数] '条件{动作}' 文件 ...
参数:
-F 指定分隔符
列:$1第一列 $2第二列 以此类推....
$0 整行
$NF 最后一列 倒数第一列
$(NF-1) 倒数第二列
第十六天笔记
1、Linux基础权限是9个字符。
33631870 -rw-r--r--. 1 root root 21 Oct 6 22:54 a.txt
分3组:
前三个字符是表示用户(属主)权限位 user(用户) u
中三个字符是表示用户组权限位 group(用户组) g
后三个字符是其它用户权限位 others(其他用户) o
同一组的三个字符权限也是有位置的
第一个字符(r)的位置读的权限位 r 4
第二个字符(w)的位置写的权限位 w 2
第三个字符(x)的位置是执行的权限位。 x 1
- 0
groupadd incahome 创建一个用户组(incahome)
useradd oldboy 创建一个用户 (oldboy)
usermod -g incahome oldboy 将用户(oldboy)添加到incahome用户组
id oldboy 查看用户信息
useradd oldboy -g incahome 创建一个用户(oldboy)指定用户组(incahome)
2、Linux权限有两种表现形式:
数字表示法 称为8进制权限
r 4
w 2
x 1
- 0
rw-rw-r-x 代表的数字权限为665
--xr-x-wx 代表的数字权限为153
-wx--x--x 代表的数字权限为311
而以下数字权限表示的字符权限如下:
755 代表的字符权限为rwxr-xr-x
644 代表的字符权限为rw-r--r--
134 代表的字符权限为--x-wxr--
实际的权限表示就是将每3位相加即可。
rwxr-xr-x 755
rwx 7
r-x 5
r-x 5
3、修改文件属性的用户和组
chown 用户.用户组 文件 这里的点可以用:替换。
chown 用户 文件
chown .用户组 文件 ====chgrp 用户组 文件
安全权限临界点:
文件不想被修改被执行:644
4、博客:写博客。。。服务器的博客目录和文件的权限,防止被恶意篡改。
企业真实案例:网站文件被恶意修改了。。。。打开网站后有弹窗广告(不是你网站的)
用户打开网站,报警。
原因:权限设置有漏洞,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、写总结 故障报告。
5、控制默认权限的东西 umask
创建文件默认最大的权限为666 (-rw-rw-rw-),其默认创建的文件没有可执行权限x位。
umask 044 临时更改
当umask中存在奇数位的时候,在计算完毕,奇数位加1
基于文件:默认权限规则 了解
从666计算
umask都为偶数 默认权限用减法
umask有奇数 默认权限用减法 然后奇数位加1
6、特殊权限位
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表示。
修改方法:
chmod 7755 1.txt
-rwsr-sr-t 1 root root 0 Oct 7 23:42 1.txt
7、suidd用处
简单地说,suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,
拥有和root管理员一样的身份和权限(默认情况)。
第十七天笔记
作用之一:
sgid的作用就是让普通用户可以在执行某个设置了sgid位的命令时,
拥有和命令对应用户组(一般为root用户组)一样的身份和权限(默认)。
locate搜索内容,默认从updatedb对应的数据库中查找
updatedb 更新locate查找内容对应的数据库。
sgid基于目录的作用:
让不同的人创建文件属于相同的用户组,从而可以互相共享文件的权限。
1、定时任务
周期性的执行任务计划的软件,Linux定时任务的常用软件crond。
2、使用定时任务软件,可以每天,每小时按你需求重复的执行一项工作。
例如:备份 都是0点以后,2点爬起来备份,4点以后睡觉。
需要写一个程序实现自动备份,然后让定时任务软件帮你执行。
1、系统定时任务计划
1.不用管理员干预,系统自动执行。
2.也可以利用系统任务为管理员服务。
2、用户定时任务计划
在Linux系统中,
cron是定时任务的软件名,
crond是服务进程名,真正实现定时任务服务。
crontab命令是用来设置定时任务规则的配置命令。
要想配置定时任务,首先启动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/
-l l列表 查看已经设置的定时任务*
-e edit 编辑定时任务*
-u user 查看特定用户下定时任务
编写定时任务的语法:
# Example of job definition:
# .---------------- 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
# | | | | |
# * * * * * (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) OR sun,mon,tue,wed,thu,fri,sat
第六列:要执行的任务命令或程序
特殊符号:
- 连续区间 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
定时任务操作步骤
1.命令行执行成功。
2.配置定时任务crontab -e 编辑配置
3.检查
设置思路
1、先输入* * * * *
2、先命令行操作成功。
3、拷贝命令到定时任务编辑里。
运维规范:
脚本位置:/server/scripts
软件位置:/server/tools
编译位置:/application/软件名字-版本,然后要软链接。
生产环境下的定时Cron书写要领
要领1:为定时任务规则加必要的注释
要领2:所有的定时任务尽量都以脚本的形式执行
要领3:在执行的Shell脚本前加上/bin/sh
要领4:定时任务中命令或脚本的结尾加>/dev/null 2>&1
要领5:在指定用户下执行相关定时任务
要领6:生产任务计划程序中不要随意打印输出信息,有输出的想法去掉。
要领7:定时任务执行的脚本要存放到规范路径下
要领8:配置定时任务要规范操作过程,减少出错
要领9:定时任务脚本中程序命令及路径尽量用全路径
要领10:时间变量%号要用反斜线转义(只有定时任务里是命令时需要)
要领11:若脚本中调用了系统环境变量,要重新定义
要领12:出错或无法执行,就检查/var/log/cron日志