Linux 安装 safe-rm 工具

前言

safe-rm 是一款用来替代不安全 rm 的开源软件,可以在 /etc/safe-rm.conf 文件中配置保护名单,定义哪些文件不能被 rm 删除,可用于防止执行 rm -rf 命令导致文件被误删的发生。

安装 safe-rm 工具

1
2
3
4
5
6
7
8
9
10
11
12
# 下载文件
# wget https://launchpadlibrarian.net/188958703/safe-rm-0.12.tar.gz

# 解压文件
# tar -xvf safe-rm-0.12.tar.gz

# 拷贝可执行文件
# cd safe-rm
# cp safe-rm /usr/local/bin/

# 建立软链接
# ln -s /usr/local/bin/safe-rm /usr/local/bin/rm

配置 PATH 环境变量(按需配置)

1
2
3
4
5
6
7
8
9
10
11
# 确保PATH环境变量中,存在/usr/local/bin路径,且/usr/local/bin路径排在/usr/bin路径前面
# 一些脚本中使用完全路径/bin/rm或者/usr/bin/rm则不会受safe-rm影响
# echo $PATH
.. /usr/local/bin:/usr/local/sbin:/usr/bin ...

# 如果PATH环境变量不符合上面说的要求,则手动配置PATH环境变量
# vim /etc/profile
export PATH=/usr/local/bin:/usr/local/sbin:/usr/bin:$PATH

# 如果修改了PATH环境变量,执行命令使修改生效
# source /etc/profile

创建 safe-rm 配置文件,添加保护名单

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# 默认的safe-rm配置文件有以下两个,需要自行创建
全局配置:/etc/safe-rm.conf
用户配置:~/.safe-rm

# 创建全局配置文件
# touch /etc/safe-rm.conf

# 添加保护名单
# vim /etc/safe-rm.conf
/
/bin
/boot
/dev
/etc
/home
/initrd
/lib
/lib32
/lib64
/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
/etc/safe-rm.conf

测试 save-rm 是否生效

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 创建测试文件
# touch /home/test.txt

# 追加需要保护的文件路径到配置文件中
# vim /etc/safe-rm.conf
/home/test.txt

# 测试删除受保护的文件路径,如果输出skipping日志代表safe-rm生效
# rm /home/test.txt
# rm -rf /home/test.txt
safe-rm: skipping /home/test.txt

# 注意:
# 配置文件里面的/etc只能保证执行"rm -rf /etc"命令的时候不能删除,但是如果执行"rm -rf /etc/app",还是可以删除app文件的
# 如果想保证某个目录下面的所有文件都不被删除,则配置文件里可以写成/etc/*,但使用通配符的方式无法避免/etc目录下链接文件被删除
# 例如/lib或/lib64这种目录,下面会有很多库文件对应的链接文件,使用safe-rm并不能保护链接文件被删除
# 建议将/etc/safe-rm.conf加入到保护名单中,防止/etc/safe-rm.conf被删后配置失效

使用系统默认的删除命令

1
2
# 使用系统默认的删除命令,此时safe-rm的保护作用将失效
# /usr/bin/rm -rf /etc/app