linux服务器如何避免使用rm -rf /*

1.下载安装safe-rm:

yum -y install wget tree
wget https://launchpadlibrarian.net/188958703/safe-rm-0.12.tar.gz
tar xf safe-rm-0.12.tar.gz -C /usr/local/
mv /usr/local/safe-rm-0.12/{safe-rm,rm}    #改名

2.配置环境变量:

cat >/etc/profile.d/rm.sh <<EOF
#safe-rm
export RM_HOME=/usr/local/safe-rm-0.12
export PATH=\$RM_HOME:\$PATH
EOF
source /etc/profile.d/rm.sh

3.查看系统默认rm命令

[root@localhost]# which rm
alias rm='rm -i'
	/usr/local/safe-rm-0.12/bin/rm

此时可以看到rm命令已经是我们安装的safe-rm了

4.配置我们需要避免删除的文件:

vim /etc/safe-rm.conf
/*
/tmp/1.txt
/tmp/aaa
/tmp/aaa/1.txt
/tmp/bbb/a.txt
/tmp/ccc
/tmp/ddd/a.txt
/tmp/eee/fff
/tmp/eee/fff/jjj/a.txt

5.创建这些测试文件:

rm -rf /tmp/*
mkdir /tmp/{aaa,bbb,ccc,ddd,eee}
touch /tmp/{1,2}.txt
touch /tmp/aaa/{1,2}.txt
touch /tmp/bbb/{a,b}.txt
touch /tmp/ccc/{a,b}.txt
touch /tmp/ddd/{a,b}.txt
mkdir -p /tmp/eee/fff/jjj/
touch /tmp/eee/fff/jjj/a.txt

6.查看文件

[root@hub safe-rm-0.12]# tree /tmp/
/tmp/
├── 1.txt
├── 2.txt
├── aaa
│   ├── 1.txt
│   └── 2.txt
├── bbb
│   ├── a.txt
│   └── b.txt
├── ccc
│   ├── a.txt
│   └── b.txt
└── ddd
│   ├── a.txt
│   └── b.txt
├── eee
│   └── fff
│       └── jjj
│           └── a.txt    

7…测试删除操作:

[root@hub ~]# rm -rf /tmp/1.txt 
safe-rm: skipping /tmp/1.txt
[root@hub ~]# rm -rf /tmp/2.txt 
[root@hub ~]# rm -rf /tmp/aaa
safe-rm: skipping /tmp/aaa
[root@hub ~]# rm -rf /tmp/aaa/1.txt 
safe-rm: skipping /tmp/aaa/1.txt
[root@hub ~]# rm -rf /tmp/aaa/2.txt 
[root@hub ~]# rm -rf /tmp/bbb/a.txt 
safe-rm: skipping /tmp/bbb/a.txt
[root@hub ~]# rm -rf /tmp/bbb/b.txt 
[root@hub ~]# rm -rf /tmp/ccc
safe-rm: skipping /tmp/ccc
[root@hub ~]# rm -rf /tmp/ccc/a.txt
[root@hub ~]# rm -rf /tmp/ddd/a.txt 
safe-rm: skipping /tmp/ddd/a.txt
[root@hub ~]# rm -rf /tmp/ddd
[root@hub ~]# rm -rf /tmp/eee/fff/jjj/a.txt
safe-rm: skipping /tmp/eee/fff/jjj/a.txt
[root@hub ~]# rm -rf /tmp/eee/fff
safe-rm: skipping /tmp/eee/fff
[root@hub ~]# rm -rf /tmp/eee/fff/jjj/
[root@hub ~]# rm -rf /*
safe-rm: skipping /boot
safe-rm: skipping /data
safe-rm: skipping /dev
safe-rm: skipping /etc
safe-rm: skipping /home
safe-rm: skipping /media
safe-rm: skipping /mnt
safe-rm: skipping /nfs
safe-rm: skipping /nfs1
safe-rm: skipping /nfs2
safe-rm: skipping /nfs3
safe-rm: skipping /opt
safe-rm: skipping /proc
safe-rm: skipping /root
safe-rm: skipping /run
safe-rm: skipping /srv
safe-rm: skipping /sys
safe-rm: skipping /tmp
safe-rm: skipping /usr
safe-rm: skipping /var
[root@hub ~]# ll
-bash: /usr/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: 没有那个文件或目录
[root@hub ~]# ls
-bash: /usr/bin/ls: /lib64/ld-linux-x86-64.so.2: bad ELF interpreter: 没有那个文件或目录
[root@hub ~]#

8.总结:可以看到只有我们加进/etc/safe-rm.conf的带绝对路劲的文件或者目录不会被删除,未加进的文件依旧可以正常删除。包括定义了/tmp/ddd/a.txt不能删除,但是/tmp/ddd依然可以被删除,所以如果定义到某个文件不能删除,那么一定要分别定义他的所在目录的每一层目录都不能删除,否则该文件依然有被删除的风险。就如同上面的rm -rf /* ,虽然加进去了,但是依旧可以执行rm -rf /* ,只是根下层的目录不能删除而已,这也算是缺陷吧,所以在/etc/safe-rm.conf里面需要加多层限制

vim /etc/safe-rm.conf
/*
/*/*
/*/*/*
/*/*/*/*
/tmp/eee
/tmp/eee/fff
/tmp/eee/fff/jjj
/tmp/eee/fff/jjj/a.txt

9.说明:
如果加进了/etc/safe-rm.conf的文件路径,我们依然想删除他怎么办,那就直接使用/bin/rm -rf /tmp/1.txt ,但是删除前一定要三思,毕竟数据恢复比较麻烦。
/lib64/ld-linux-x86-64.so.2这个链接文件会被删除,在虚拟机上测试的,加了/*/*/*/*/*/*后这个文件还是被删除,系统依旧无法正常使用,物理机上没有测试过

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值