C1imber's Blog

关于ubuntu和centos cron的一些区别

字数统计: 814阅读时长: 2 min
2018/08/18 Share

关于ubuntu和centos cron的一些区别

写这篇文章的目的,源自解决ubuntu任务计划写shell失败的问题这篇文章遗留下来的一个问题:就是在向ubuntu的/var/spool/cron/crontabs目录下创建任务计划文件时,需要修改该文件的权限为600,也就是r------,该任务计划文件才能执行,否则就会报错不能执行,报出(root) INSECURE MODE (mode 0600 expected)这个错误,这个问题当时没有太注意,以为是umask不同的问题。直到今天再次利用ubuntu环境下的redis未授权访问漏洞反弹shell时才发现这样一个问题,就是我们并不能直接利用未授权访问漏洞去修改/var/spool/cron/crontabs目录下我们创建的任务计划文件的权限,所以导致任务计划文件不能执行,于是又研究了一番,偶然发现ubuntu和centos的umask是相同的,都是0022,说明之前自己的想法是错误的,并不是umask不同的问题,而是centos和ubuntu cron的区别,下面就来总结一下其cron的区别

简单来说

ubuntu任务计划有一个目录是/var/spool/cron/crontabs,不过这个目录下的文件权限必须为600任务计划才能执行,这个是和centos的一个区别,但是如果利用redis漏洞的话,不可能直接去修改文件权限为600,而且如果写到/etc/crontab这个文件里的话,会覆盖掉之前的任务计划,所以如果服务器是ubuntu的话,可以写到/etc/cron.d这个任务计划目录下,这个目录下没有要求文件权限是600,并不会报错

下面来总结一下ubuntu和centos的cron

ubuntu的cron

/etc/crontab:该文件中的任务计划写入就能直接执行

/etc/cron.d:该目录下的文件为任务计划文件,只要文件内容格式符合cron的格式,就会执行

/var/spool/cron/crontabs:该目录下的文件为任务计划文件,不过只有当任务计划文件的权限为600这个权限时任务计划才能执行,否则会报出(root) INSECURE MODE (mode 0600 expected)这个问题

centos的cron

/etc/crontab:该文件中的任务计划写入就能直接执行

/etc/cron.d:该目录下的文件为任务计划文件,只要文件内容格式符合cron的格式,就会执行

以上两点和ubuntu的cron没什么区别,唯一的区别是,centos的任务计划文件目录为/var/spool/cron这个目录,而且该目录下的任务计划文件并没有要求权限为600才能执行,这就是ubuntu和centos cron的一个区别,同时也是一个比较坑的地方,值得记录一下,以免以后忘记,至于为什么ubuntu和centos会有这样的区别,我认为和任务计划的目录有关系

centos的/var/spool/cron任务计划目录权限
mark

ubuntu的/var/spool/cron/crontabs任务计划目录
mark

可以看到两个任务计划目录的权限是不一样的,这也是ubuntu和centos cron不同的原因。以后再深入去研究

CATALOG
  1. 1. 关于ubuntu和centos cron的一些区别