Linux强行禁用掉rm高危命令、增加删除二次确认、过滤指定目录不可被删除【测试成功】

艺帆风顺 发布于 2025-04-03 21 次阅读


一、需求背景

    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": 权限不够

            三、效果验证

            实现效果:

              [root@JQNode1 ops]# rm -rf /Why run this command[root@JQNode1 ops]# rm -rf /*Why run this command