防止 rm -rf / 删根跑路——使用 safe-rm 替代 rm

最近看了一篇文章,讲的是 rm -rf / 酿成的一系列惨案……

惨!rm -rf /* 又新增一起「血案」

有个程序猿很忧桑:一个命令rm -rf/ ,他把整个公司删没了

然后还配了世界名画,呃(⊙o⊙)…

删库跑路……失败

 

鉴于自己是个小白,再联系到之前在虚拟机上也曾犯过这个噩梦般的失误,所以上网找了下如何避免使用 rm -f 命令失误,然后看到了这个神器:safe-rm

safe-rm

safe-rm 替代 rm 命令:safe-rm 工具可以添加保护名单,被添加到保护名单的文件和文件夹不能被删除,以此保命~_~。

以下是具体的操作步骤:

❶ cd 到下载目录(本次实验为 CentOS7 系统下的 /data 目录),到官网下载 safe-rm 安装包(到 2019.6.29 最新版本为 0.12.8,其实 2014 年就停止更新了。话说还有就是 GitHub 上也有个名字很相似的项目 saferm ——对吧~真的很像:https://github.com/lagerspetz/linux-stuff/blob/master/scripts/saferm.sh ,不要把二者搞混了):wget -c https://launchpadlibrarian.net/188958703/safe-rm-0.12.tar.gz (-c 的作用是可以断点续传)。

wget -c https://launchpadlibrarian.net/188958703/safe-rm-0.12.tar.gz

❷ 解压安装包:

tar -xvf safe-rm-0.12

解压安装包

❸ 将解压目录 safe-rm-0.12 下的 safe-rm 文件拷贝到 /usr/local/bin 下:

cp /data/safe-rm-0.12/safe-rm /usr/local/bin

拷贝

    查看拷贝结果

查看拷贝结果

❹ 建立 /usr/local/bin/safe-rm 的软链接 /usr/local/bin/rm:

ln -s /usr/local/bin/safe-rm /usr/local/bin/rm

❺ CentOS7 自带的 rm 命令在 /usr/bin/rm,所以在 /etc/profile 中更改 $PATH,让 safe-rm 所在的文件夹(在此即 /usr/local/bin)排在第一位:

更改 PATH 变量

❻ 新建 safe-rm 的配置文件 /etc/safe-rm.conf,添加想要保护的文件夹和文件到该配置文件中:

添加过滤列表

    每条过保护名单以回车分隔

过滤列表以回车分隔

    另外,safe-rm 自身已经定义了一些不可删除的名单:

 14 my %default_protected_dirs = (
 15     '/bin'               => 1,
 16     '/boot'              => 1,
 17     '/dev'               => 1,
 18     '/etc'               => 1,
 19     '/home'              => 1,
 20     '/initrd'            => 1,
 21     '/lib'               => 1,
 22     '/lib32'             => 1,
 23     '/lib64'             => 1,
 24     '/proc'              => 1,
 25     '/root'              => 1,
 26     '/sbin'              => 1,
 27     '/sys'               => 1,
 28     '/usr'               => 1,
 29     '/usr/bin'           => 1,
 30     '/usr/include'       => 1,
 31     '/usr/lib'           => 1,
 32     '/usr/local'         => 1,
 33     '/usr/local/bin'     => 1,
 34     '/usr/local/include' => 1,
 35     '/usr/local/sbin'    => 1,
 36     '/usr/local/share'   => 1,
 37     '/usr/sbin'          => 1,
 38     '/usr/share'         => 1,
 39     '/usr/src'           => 1,
 40     '/var'               => 1,
 41 );

    我们也可以直接编辑 /usr/local/bin/safe-rm 文件添加保护名单,如下:

 43 my %protected_dirs = (
 44     '/usr/local/bin/safe-rm' =>1
 45 );

直接编辑 safe-rm

❼ 重启电脑,或者使用 source /etc/profile 让 /etc/profile 配置文件生效。

使 profile 文件生效

❽ 尝试删除文件 /data/dollar01.sh,发现不能删除:

尝试删除文件

❾ 实验成功!

红红火火恍恍惚惚

等等!后面两行什么鬼!?

/bin/rm: missing operand 
Try '/bin/rm --help' for more information. 

我感觉步骤没有什么大差错啊,这个报错困扰了我整整一个晚上,然后在 safe-rm 文件结尾找到了如下截图。

官方 bug

合着官方知道有 bug 但是还没修复?然后我尝试着把 /usr/lib 从保护名单中删除,然而还是没卵用。

扎心不老铁

算了,不会编程,我投降。各位大佬有知道怎么解决的留个言吧。

鉴于这个碍眼的 bug,强迫症的我可能不会用这个软件了,还是用 mv 命令或者给文件夹加权限吧!╮(╯▽╰)╭

实验到此结束,希望此次试验能给各位看官带来一点价值。好了,全文完!

转载于:https://my.oschina.net/u/4097128/blog/3067950

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值