怎样阻止Linux服务器执行rm -rf /*命令

自己在Debian 9.9上测试成功,请结合您操作系统的环境,谨慎操作,在进行测试时候尽量先使用一个临时目录,若由于你的不正确操作造成的后果与本人无关

众所周知,Linux中的rm -rf /*命令是一条灾难性的命令.因此有的运维人员想一些办法来禁止这条命令的执行,今天演示一个简单的

今天我们使用的是替换rm命令的方法,然后做一个简单的配置,让系统不能执行rm -rf /*

1.下载safe-rm

实际上有这一个工具,也就是safe-rm命令,我们用来替换rm就行了,实际上safe-rm就是一个删除命令,只不过呢它可以通过配置文件来做一些过滤.
官网下载https://launchpad.net/safe-rm/+download
我直接下载0.12版本

wget https://launchpad.net/safe-rm/trunk/0.12/+download/safe-rm-0.12.tar.gz
2.替换系统的rm命令
# 解压
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

此时已经替换掉rm命令,为了确保环境变量有效,我们将/usr/local/bin目录设置在所有PATH环境变量之前.先更改/etc/profile文件,在文件末尾追加以下代码

PATH=/usr/local/bin:$PATH

编辑完毕之后,为了让环境变量在整个系统全局生效,我们重启操作系统.重启之后执行rm命令就相当于执行safe-rm了

3.设置过滤目录

过滤目录将不被删除,编写 /etc/safe-rm.conf 文件,添加自己需要过滤的目录,以下是配置示例,实际上要根据你的需求来

/
/*
/etc
/etc/*
/data
/data/mysql
/data/mysql/datadir
/data/mysql/datadir/*
/usr
/usr/local
/usr/local/bin
/usr/local/bin/*

/ 代表过滤 /
/* 代表过滤 / 下面的所有文件

在以上代码中,我过滤掉safe-rm所在目录和其链接所在目录,除此之外,还过滤其配置文件,这样的话可以一定程度上做到安全防护了

如果配置文件中,有 /root/test/123 这样一条规则,那么删除/root/test/123文件时会被过滤掉,但是删除/root/test时能成功删除,因此不支持递归的规则,那么配置文件我们应该写成以下格式

/
/root
/root/test
/root/test/123
4.测试

接下来就是见证奇迹的时刻了,执行测试之前请确保你的配置文件编写正确,其次,你出错可与我无关!!!哈哈哈
如下图:
在这里插入图片描述

文章原创首发自微信订阅号:极客开发者up,禁止转载

  • 12
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 9
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

极客开发者

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值