一、需求背景
rm -rf / 命令在 Linux 系统中有极大的破坏力,它是一个极度危险的命令。一旦执行成功,将会删除服务器上的所有文件。它的作用是递归删除指定目录及其所有内容,无论其中是否包含重要的系统文件。
可以采取一些措施来降低风险,比如重写某些危险命令(如rm、reboot、shutdown、fdisk等),或者使用safe-rm命令替代rm命令。safe-rm具有rm命令的所有功能,但可以设置路径黑名单,黑名单中的目录或文件将不会被删除。
二、屏蔽高危rm命令(两种方法)
1、一键脚本执行安装
wget http://www.dwhd.org/script/securityremove.shbash securityremove.sh
2、通过safe-rm实现屏蔽指定路径(0.12版本)
1)安装safe-rm
wget https://launchpad.net/safe-rm/trunk/0.12/+download/safe-rm-0.12.tar.gz# 解压tar -zxvf safe-rm-0.12.tar.gz# 将safe-rm命令复制到系统的/usr/local/bin目录cp safe-rm-0.12/safe-rm /usr/local/bin/# 创建链接,将safe-rm替换rmln -s /usr/local/bin/safe-rm /usr/local/bin/rm
2)配置环境变量
vim /etc/profilePATH=/usr/local/bin:$PATHsource /etc/profile
3)设置过滤路径
vim /etc/safe-rm.conf
/root/root/*/root/test//*/bin/boot/dev/etc/etc/*/etc/safe-rm.conf/home/initrd/lib/proc/root/sbin/sys/usr/usr/bin/usr/include/usr/lib/usr/local/usr/local/bin/usr/local/include/usr/local/sbin/usr/local/share/usr/sbin/usr/share/usr/src/var
针对rm -rf /*无法屏蔽依然会误删的问题,可采用chattr +i / 进行屏蔽。
实测效果:
[root@JQNode1 ~]# safe-rm -rf /*safe-rm: skipping /bootsafe-rm: skipping /datasafe-rm: skipping /devsafe-rm: skipping /dockersafe-rm: skipping /etcsafe-rm: skipping /homesafe-rm: skipping /mediasafe-rm: skipping /mntsafe-rm: skipping /mysqlsafe-rm: skipping /nginxsafe-rm: skipping /opssafe-rm: skipping /optsafe-rm: skipping /procsafe-rm: skipping /rootsafe-rm: skipping /runsafe-rm: skipping /srvsafe-rm: skipping /syssafe-rm: skipping /tempsafe-rm: skipping /tmpsafe-rm: skipping /usrsafe-rm: skipping /var/bin/rm: 无法删除"/bin": 权限不够/bin/rm: 无法删除"/lib": 权限不够/bin/rm: 无法删除"/lib64": 权限不够/bin/rm: 无法删除"/sbin": 权限不够
三、效果验证
实现效果:
[Why run this command[Why run this command


