Linux 计划任务与系统安全
1 什么是计划任务?
简单来说,就是某些我们需要定时执行的任务,可以是某条命令,也可以是某个脚本。
例如:
每天早上的起床闹钟
日历中女朋友生日提醒
手机中事件提醒功能
2 计划任务使用场景
1.按天进行日志切割
2.定时同步互联网时间
3.每天备份数据库数据
4.定时删除不需要的日志文件或临时文件
5.定时获取系统的状态信息
......
3 计划任务设置
3.1 计划任务配置文件
Linux中最常用的计划任务服务为crond服务,该服务可以设置计划周期性的定时运行某些命令或脚本。
计划任务配置文件:
/etc/crontab #crond计划任务列表配置文件
/etc/cron.deny #该文件中所写用户无法使用crond计划任务
/var/spool/cron/* #用户计划任务文件都存放此目录,文件以用户名命名
/var/log/cron #定时任务执行后的日志文件
3.2 计划任务配置
crond计划任务服务提供了crontab命令来创建和管理计划任务。
crontab [选项]
-e #编辑当前用户计划任务文件
-l #查看当前用户计划任务文件内容
-r #删除当前用户计划任务文件内容
-u #管理其他用户的计划任务
注意: crontab命令实际上就是在操作/var/spool/cron/username。
计划任务书写格式:参考/etc/crontab配置文件中的格式
.---------------- 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 //星期
| | | | |
* * * * * user-name command to be executed
分 时 日 月 周
分钟:从0到59之间的整数
小时:从0到23之间的整数
日期:从1到31之间的整数
月份:从1到12之间的整数
星期:0~6之间的整数,0代表周日
* #表示每,任意(分、时、日、月、周)时间都执行
*/ #表示每隔;例如:*/10 每隔10分钟
- #表示时间范围段;例如:5-7点 5点到7点
, #表示和, 例如:4,6,0 周四、周六和周日
3.3 计划任务练习案例
#每周5凌晨2点执行一个任务
00 2 * * 5 xx命令
#每天凌晨2点30分执行一个任务
30 2 * * * xx命令
#日期跟星期不能同时定义,发生矛盾(没有这么定义的!)
30 2 1 * 2 xx命令
#每月1号23:30分执行一个任务
30 23 1 * * xx命令
#每月1、3、5号23:30执行一个任务
30 23 1,3,5 * * xx命令
#每周1、3、5凌晨3点执行一个任务
00 3 * * 1,3,5 xx命令
#每月2-5号凌晨3:30分执行一个任务
30 3 2-5 * * xx命令
#每两小时执行一个任务
00 */2 * * * xx命令
#每两分钟执行一个任务
*/2 * * * * xx命令
3.4 编写计划任务注意事项
#编写计划任务时务必添加该计划任务的注释信息
[root@localhost ~]# crontab -e
#print string "hello world"
*/5 * * * * /usr/bin/echo "hello world"
#在计划任务中执行命令,命令最好用绝对路径
#写入计划任务中的命令先拿到命令行执行一遍,看结果是否成功
[root@localhost ~]# crontab -e
#print string "hello world"
*/5 * * * * /usr/bin/echo "hello world"
#计划任务输出结果可用">"重定向到指定文件
[root@localhost ~]# crontab -e
#print string "hello world"
*/5 * * * * /usr/bin/echo "hello world" &> /dev/null
计划任务流程规范:
流程规范:
1.先在测试环境中实践,千万不要上来就用生产服务器;
2.先理解需求;
3.写入计划任务中的命令先拿到命令行执行一遍;
4.脚本需要先进行测试,测试脚本是否可以正常执行;
5.写入计划任务里的任务,可以先将任务时间间隔缩短,方便测试;
6.执行过程如果需要,强烈建议写进日志。
4 SELinux系统内核安全机制
Security-Enhanced Linux 美国NSA国家安全局主导开发,一套增强Linux系统安全的强制访问控制体系(内核防火墙)
集成到Linux内核(2.6及以上)针对用户、进程、目录和文件提供了预设的保护策略,以及管理工具
SELinux运行模式
enforcing #强制模式
permissive #宽松模式
disabled #禁用模式
SELinux运行模式切换
查看当前运行模式:getenforce
临时切换运行模式:setenforce 1|0 #1强制模式,0宽松模式
#查看当前运行模式
[root@localhost ~]# getenforce
Enforcing #默认为强制模式
#切换运行模式为宽松模式
[root@localhost ~]# setenforce 0
[root@localhost ~]# getenforce
Permissive
#切换运行模式为强制模式
[root@localhost ~]# setenforce 1
[root@localhost ~]# getenforce
Enforcing
SELinux配置文件:/etc/selinux/config
#永久修改运行模式
[root@localhost ~]# vim /etc/selinux/config
...
SELINUX=disabled
5 常见协议及端口
http:超文本传输协议(明文协议) 默认端口:80
https:安全的超文本传输协议(加密协议) 默认端口:443
ftp:文件传输协议 默认端口:20(数据端口(21(命令端口)
tftp:简单的文件传输协议 默认端口:69
DNS:域名解析协议 默认端口:53
telnet:远程管理协议 默认端口:23
smtp:用户发邮件协议 默认端口:25
pop3:用户收邮件协议 默认端口:110
ssh:远程连接协议 默认端口:22
/etc/services 文件记录协议及端口信息
环境准备
#安装httpd与vsftpd服务
[root@localhost ~]# rpm -q httpd
#启动服务
[root@localhost ~]# systemctl start httpd
#查看运行状态
[root@localhost ~]# systemctl status httpd
评论区