命令行和脚本很危险。如果在 rm -rf 中输入一点小错误,你就会陷入困境。如果在运行导入脚本时将数据库名称中的 prod 与 stage 混淆,你就会受到惩罚(如果它们在同一台服务器上,这并不好,但确实会发生)。在执行一些命令后,你太晚才注意到你 ssh 的服务器名称与你想象的不一样,情况也是如此。你必须尊重霍格。
在运行危险命令之前,我会做一些小习惯,比如对我所在的服务器进行三重检查。下面是关于 rm 安全的有趣文章。
有哪些小习惯、工具和技巧可以保证您在命令行上安全?我的意思是客观的事情,比如“首先运行 ls foo*,查看其输出,然后用 rm -rf 替换 ls 以避免运行 rm -rf foo * 或类似的东西”,而不是“确保您知道该命令将做什么”。
答案1
一种效果很好的方法是针对生产/暂存/测试服务器的 shell 使用不同的背景颜色。
答案2
开始之前,在心里想好退出计划。
- 将文件或目录压缩,而不是立即删除
- 将(思科)路由器设置为在“x”分钟内重新启动,而不是立即“wr”
- 确保你更改的接口不是你进入系统的接口。这可能是你通过 telnet 连接到的路由器接口,也可能是 VNC 连接到的以太网端口。
- 永远不要以“root”身份登录
- 进行备份。检查其是否完好。再进行一次。
- 问一个你信任的人“我是不是要在这里做一些愚蠢的事情?”
答案3
对于其中一些问题,我有一个低技术含量的解决方案。
我已经养成了做以下事情的习惯(当计划以 root 身份工作时):
- 首先,以普通用户身份登录,然后使用
sudo su - root
切换到 root。我这样做是为了做好心理准备,提醒自己,我已经在心理上进入了一个非常危险的区域,我应该时刻保持警惕。听起来很有趣,单单是这个小小的仪式就让我省去了很多麻烦,因为它只是强化了这一点我不能粗心大意。 - 输入每个命令,但 [Return] 键绝不按下。 绝不。
- 没有命令曾经未经理解就执行确切地它能做什么。 如果你在不知道它的作用的情况下这样做,那么你就是在玩俄罗斯轮盘赌与您的系统。
- 前按下 [Return] 键,CLI 上敲出的命令会用眼睛仔细检查。如果有任何犹豫,任何潜在问题的迹象,都会再次检查。如果犹豫仍然存在,则将命令留在线上,然后我按 alt-F2 转到另一个控制台以查阅手册页等。如果在图形会话中,我会启动浏览器并进行一些搜索。
sudo
我的系统上从来没有普通用户不是因为我是一名 BOFH但因为没有准备和训练,这就像是把一把上了膛的枪交给猴子。一开始很有趣,很好玩,直到猴子低头看着枪管,然后挤了进去……
使用 rm 时,我总是cd
先进入目录,然后使用前缀./
来确保目录正确,即
cd /usr/some/directory ; rm ./targetfile
或者我指定文件的完整路径
rm /usr/some/directory/targetfile
这是一件很麻烦的事,但是...小心为上。
答案4
我同意以上所有答案,但我必须强调这个非常非常重要的提示:
知道何时避免同时进行多项任务。