美文网首页
Linux下的防"删库"到"跑路"——重写rm命令

Linux下的防"删库"到"跑路"——重写rm命令

作者: 楍跑的鸟 | 来源:发表于2020-06-02 08:50 被阅读0次
image.png

  在登陆自己或者公司提供的生产服务器时,是不是有时会幻想着,万一自己不小心执行了 rm -rf /* 删库命令,会发生什么?然后自己要怎么办?脑海中是不是想到了,"某某公司程序员删库造成公司大量财富损失后被抓判刑坐牢"的案例和场景。
  为了不让自己或者其他伙伴误操作删库命令,从而造成不可逆的损失。经过我查找资料和手动实践之后,打算写这篇文章,以便能帮助到大家,解决以后误操作删库的问题。

总体思路——重写rm命令,建立Linux下的"回收站"

  总所周知,Windows 系统是有回收站的,即使误删了,也可以在回收站恢复。那么想象一下,如果Linux系统也有"回收站",那我们是不是就可以防止误删了,因此,我们也可以在 Linux 实现"回收站"的机制。

实现思路:

  删除文件时,它并不真正执行删除操作,而是将文件移动到一个特定目录,可以设置定时清除回收站,或者在回收站里面的文件大小达到一定容量时(或者用时间做判断)执行删除操作以腾出空间。

  可以写个 Shell 脚本替换 rm 命令,或者在需要删除文件的时候使用 mv 命令将文件移动到回收站。

① 创建回收站目录

mkdir /home/.trash
image.png

②编写 remove.sh 脚本,内容如下

touch /home/remove.sh

vim /home/remove.sh

TRASH_DIR="/home/.trash"
for i in $*; do
    STAMP=`date +%s`
    fileName=`basename $i`

    # 将对应文件 mv 至 .trash 目录
    mv $i ${TRASH_DIR}/${fileName}.${STAMP}
done

image.png
image.png

③ 修改 ~/.bashrc, 用我们自建的remove.sh 替代 rm 命令

alias rm="sh /home/remove.sh"
image.png

④ 设置 crontab,定期清空垃圾箱,如每天 0 点01分清空垃圾箱:

crontab 基本命令操作如下:

crontab -u //设定某个用户的cron服务
crontab -l //列出某个用户cron服务的详细内容
crontab -r //删除某个用户的cron服务
crontab -e //编辑某个用户的cron服务
crontab -i //打印提示,输入yes等确认信息

/var/spool/cron/root (以用户命名的文件) 是所有默认存放定时任务的文件
/etc/cron.deny 该文件中所列出用户不允许使用crontab命令
/etc/cron.allow 该文件中所列出用户允许使用crontab命令,且优先级高于/etc/cron.deny

/var/log/cron    该文件存放cron服务的日志

设定每天 0 点01分清空垃圾箱 即每天凌晨过一分钟。这是一个恰当的进行备份和清理系统垃圾的时间,因为此时系统负载不大。

crontab -e
1 0 * * * rm -rf /home/.trash/*
image.png

查看定时任务

[root@root ~]# crontab -l
1 0 * * * rm -rf /home/.trash/*

⑤ 最后,执行以下命令,使之生效

source ~/.bashrc 

⑥测验 rm命令

创建一个文件test,然后再执行rm ,最后到我们定制的"回收站" .trash中查看已删除的文件。

[root@root ~]# touch /home/test
[root@root ~]# ls /home/
 remove.sh  test
[root@root ~]# rm /home/test 
[root@root ~]#   
[root@root ~]# 
[root@root ~]# ls /home/
remove.sh
[root@root ~]# 
[root@root ~]# 
[root@root ~]# ls /home/.trash/
test.1591773746

执行过程如下图所示


image.png

总结

  到此《Linux下的防"删库"到"跑路"——重写rm命令》这篇文章就写完了,这样一来就不怕误操作执行了删库命令,因为删除的文件都放在我们自己制定的"回收站"里面了,还有一段时间能挽回的余地,希望这篇文章能帮到你。

相关文章

网友评论

      本文标题:Linux下的防"删库"到"跑路"——重写rm命令

      本文链接:https://www.haomeiwen.com/subject/bpuyzhtx.html