在使用rm命令,一不小心使用rm -rf /*就要删库跑路了,所以为了避免发生误删除操作,可以使用safe-rm来禁止对某些文件或目录使用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 \
cp safe-rm-0.12/safe-rm /usr/local/bin/
貌似可以直接使用sudo apt install safe-rm
安装
配置环境变量
在/etc/profile或/etc/bashrc或~/.bashrc中添加export PATH=/usr/local/bin:$PATH
,然后使用source /etc/profile
使得环境变量生效
(/usr/local/bin要放在前面,因为搜索可执行文件路径的时候,会先从PATH变量前面的目录中开始查找,这样/usr/local/bin目录中的rm会比/usr/bin目录中的rm先被找到)
重命名 || 创建软连接 || 使用别名
这一步只需要使用三种方法中的其中一种就行,只要保证rm最终执行的是/usr/local/bin/safe-rm而不是/usr/bin/rm就行了
1.重命名
cd /usr/local/bin \
mv safe-rm rm
虽然/usr/local/bin中已经配置到PATH中了,但是这个目录下只有safe-rm,没有rm,可以把safe-rm重命名为rm
2.创建软连接
ln -s /usr/local/bin/safe-rm /usr/local/bin/rm
虽然/usr/local/bin中已经配置到PATH中了,但是这个目录下只有safe-rm,没有rm,所以可以创建一个名为rm的软连接连接到safe-rm,这样调用rm的时候就会使用safe-rm来执行命令了,这时使用which rm
来查看,结果是/usr/local/bin/safe-rm
3.使用别名
执行alias rm="safe-rm -i"
,这时使用which rm
来查看,结果是safe-rm -i
为了使得别名在下次启动的时候依然生效,可以在/etc/profile或/etc/bashrc或~/.bashrc中添加配置alias rm="safe-rm -i"
配置禁删目录
在/etc/safe-rm.conf 或~/.safe-rm中配置
/
/*
/home/px
/home/px/*
/home/px/Code/*
这里需要同时配置被保护目录的父目录和祖先目录,不然用户可以直接删除父目录从而删除被保护的目录
测试
这里我现在/home/px目录下创建一个test目录
cd ~/
sudo mkdir test
然后删除
rm -rf ~/test
safe-rm: skipping /home/px/test/
如果想要删除这些被保护的目录或文件,可以使用可视化界面来把它们放到回收站中