safe-rm防止删除重要的文件
很多时候,服务器管理不是一个人在管理,不知道你是否也曾遇到过被同事或者好友执行
sudo rm -rf /
那种痛苦的感觉无言以对,其实这都是可以避免的,有 软件 (opens new window)可以为我们解决这种问题,我们只需要把禁止删除的文件或者目录即可,下面介绍一下这个 软件 (opens new window)
# 安装 safe-rm 工具
# 下载文件
# 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
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# 配置 PATH 环境变量(按需配置)
# 确保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
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
# 创建 safe-rm 配置文件,添加保护名单
# 默认的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
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
38
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
38
# 测试 save-rm 是否生效
# 创建测试文件
# 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
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 使用系统默认的删除命令
1
上次更新: 2024/11/08, 12:33:03