在服务器维护过程中,为了防止误执行类似 rm -rf /
的命令,最好在服务器上加上safe-rm
下面就一步一步来安装safe-rm
由于safe-rm
的最新版本是采用rust开发的,所以我们要先安装rust,如果你已经安装了rust可以跳过这个步骤。
使用rustup
来安装rust是很快捷的方式,
# 设置 rustup 镜像源
export RUSTUP_DIST_SERVER=https://mirrors.ustc.edu.cn/rust-static
export RUSTUP_UPDATE_ROOT=https://mirrors.ustc.edu.cn/rust-static/rustup
# 安装rust
curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh
# 添加环境变量
source "$HOME/.cargo/env"
测试是否安装成功
cargo --help # 看到 Rust's package manager ... 表示安装成功
# 下载代码包
wget https://launchpad.net/safe-rm/trunk/1.1.0/+download/safe-rm-1.1.0.tar.gz
# 解压
tar -zxvf safe-rm-1.1.0.tar.gz
# 编译
cd safe-rm-1.1.0
cargo build -r # 看到 Finished release [optimized] target(s) in 30.67s 编译成功
编译成功后,我们会在./target/release
看到safe-rm
# 创建safe-rm执行目录
mkdir -p /usr/local/safe-rm
# 复制safe-rm到目录下
cp ./target/release/safe-rm /usr/local/safe-rm/
# 设置执行权限
cd /usr/local/safe-rm
chmod 755 safe-rm
# 重命名safe-rm并添加到PATH中
mv safe-rm rm
echo 'PATH="/usr/local/safe-rm:$PATH"' >> /etc/profile # 添加到全局
source /etc/profile
safe-rm
可以排除存在于/etc/safe-rm.conf
(或/usr/local/etc/safe-rm.conf
)配置的路径
你可以在配置文件中添加像如下的路径:
/
/usr
/usr/lib
/var
!!!重要提示:请不要再你的生产环境中做 /
与 /*
路径的测试,如果配置不正确会导致不可还原的灾难!!!
你可以在
Docker
中创建一个容器在做以下测试
在 /etc/safe-rm.conf
中添加如下测试路径,
/home/test
/
/*
执行并且看到以下的提示信息表示成功
rm -rf /home/test
# safe-rm: Skipping /home/test.
rm -rf /
# safe-rm: Skipping /.
rm -rf /*
# safe-rm: Skipping /bin.
# ...
# safe-rm: Skipping /var.