Linux 强行禁用掉 rm 高危命令、增加删除二次确认、过滤指定目录不可被删除
转载自:巴韭特锁螺丝
转载日期: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": 权限不够
三、效果验证
实现效果:
本文是转载文章,版权归原作者所有。建议访问原文,转载本文请联系原作者。
评论
匿名评论
隐私政策
你无需删除空行,直接评论以获取最佳展示效果