禁用crontab -r
一键,使用root用户或者sudu运行命令,将为所有用户增加这个保护
find /home /root -maxdepth 2 -name ".*shrc" -type f -exec sh -c "grep -q 'crontab()' {} && echo {} || (echo >> {} && echo 'crontab(){' >> {} && echo ' [[ \$@ =~ -[iel]*r ]] && echo \"crontab remove command is disabled\" || command crontab \"\$@\"' >> {} && echo '}' >> {})" \;
可以重复执行,不会重复添加
其原理就是在.bashrc
或者.zshrc
等shell的rc文件添加了一个方法覆盖crontab
命令
crontab(){
[[ $@ =~ -[iel]*r ]] && echo "crontab remove command is disabled" || command crontab "$@"
}
你可能会好奇为什么我会写这个,因为手抖将crontab -e
执行成了crontab -r
将生产服务器当前用户的crontab给清空了
以前是使用重命名crontab命令并用一个sh代替他的办法,但这需求修改系统,或是写一个alias来将命令指向一个脚本,这样不优雅,于是尝试寻找更棒的方案,于是写出了这个
如果咩咩的文章对你有帮助,您可以 请我喝牛奶