• 35648

    文章

  • 23

    评论

  • 20

    友链

  • 最近新加了很多技术文章,大家多来逛逛吧~~~~
  • 喜欢这个网站的朋友可以加一下QQ群,我们一起交流技术。

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

欢迎来到阿八个人博客网站。本 阿八个人博客 网站提供最新的站长新闻,各种互联网资讯。 喜欢本站的朋友可以收藏本站,或者加QQ:我们大家一起来交流技术! URL链接:https://www.abboke.com/jsh/2019/0701/4211.html

>>>

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

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

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

删库跑路……失败

 

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

safe-rm

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

以下是具体的操作步骤:

❶ cd 到下载目录(本次实验为 /data 目录),到官网下载 safe-rm 安装包(到 2019.6.29 最新版本为 0.12.8,其实 2014 年就停止更新了 ):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 命令或者给文件夹加权限吧!╮(╯▽╰)╭

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

相关文章

暂住......别动,不想说点什么吗?
  • 全部评论(0
    还没有评论,快来抢沙发吧!