转载自:巴韭特锁螺丝

转载日期:2024-04-15 陕西

一、需求背景

rm -rf / 命令在 Linux 系统中有极大的破坏力,它是一个极度危险的命令。一旦执行成功,将会删除服务器上的所有文件。它的作用是递归删除指定目录及其所有内容,无论其中是否包含重要的系统文件。

    可以采取一些措施来降低风险,比如重写某些危险命令(如rm、reboot、shutdown、fdisk等),或者使用safe-rm命令替代rm命令。safe-rm具有rm命令的所有功能,但可以设置路径黑名单,黑名单中的目录或文件将不会被删除。

二、屏蔽高危rm命令(两种方法)

1、一键脚本执行安装

wget http://www.dwhd.org/script/securityremove.sh
bash 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替换rm
ln -s /usr/local/bin/safe-rm /usr/local/bin/rm

2)配置环境变量

vim /etc/profile
PATH=/usr/local/bin:$PATH
source /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 /boot
safe-rm: skipping /data
safe-rm: skipping /dev
safe-rm: skipping /docker
safe-rm: skipping /etc
safe-rm: skipping /home
safe-rm: skipping /media
safe-rm: skipping /mnt
safe-rm: skipping /mysql
safe-rm: skipping /nginx
safe-rm: skipping /ops
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 /temp
safe-rm: skipping /tmp
safe-rm: skipping /usr
safe-rm: skipping /var
/bin/rm: 无法删除"/bin": 权限不够
/bin/rm: 无法删除"/lib": 权限不够
/bin/rm: 无法删除"/lib64": 权限不够
/bin/rm: 无法删除"/sbin": 权限不够

三、效果验证

实现效果: