crontab定时任务是LINUX上最常用的一个功能,不过使用不当很容易受到提权。使用crontab时请注意以下两点:crontab任务千万不要写到/etc/crontab文件里,这是很危险的。通过crontab -e去创建,让他写到默认的/var/spool/cron下;
能不用 root 去创建尽量不用,如果一定要用root,请保存到一个其他用户进不去、改不了、看不了的位置(最好能用chattr处理下)。
为什么有这样的警告,请看下面的示例。
一、位置不当引发的提权
假设当前我们用 root 用户创建了如下一个任务:*/2 * * * * root sh /home/elk/test.sh
具体内容如下:echo www.361way.com > /tmp/test
/home/elk/test.sh文件的权限我们设置为600,属主和属组都设为root,感觉上应该还挺安全的吧,实际呢?看下图:
root并且为600权限,看起来确实不错,我们切换到elk用户时,使用echo确实发现无法正常写入(chown和chmod也不会成功的)。但由于文件存放的位置在elk的家目录下,所以elk用户实际上是有修改文件的权限的。使用vim编辑文件时,实际是可以强制修改的,而且修改后文件的属主也会变掉,当然也可以使用上面截图里的方法,mv走以后,