关于 rm -rf /有感

2019-12-21 00:50:40 +08:00
 CatCode

刚刚看到了这个帖子 就在刚刚,rm -rf 删软连接的时候后面多加了个 /,现在杯具了 ,又想起了我在 你们平时用 Linux 时喜欢用 root 用户吗 里回复的

我大 root 敢死队什么时候怕过?

结合最近发生的一件事情说一下:
某些发行版的 rm 是默认--preserve-root 的,所以rm -rf /并没有什么卵效果。当然我不确定指定了多个路径的情况。我用过的发行版不多,作死也不多,这一条如果有知道的更多的,欢迎指正。

然后,在讨论rm这个问题的时候,总有人会说alias rm to mv。我想说,其实这样并不能挡住误操作。 这里举一个就前不久在我这里发生的真实例子:
(背景:高校非计算机科学相关专业的科研机群) 在一台节点机上,给新人“练手”:用 root 编译安装一个软件。新人打算备份一下某些数据,但是误操作mv /* bak/(通配符前多打了一个斜杠)新人还真“新”,没搞懂乍回事儿,觉得怎么突然这么慢,也没按 Ctrl +C。等了好久才反应过来,叫来前辈看情况。
此时,各种 bin 已经都被移走了,所有命令都是各种command not found,然后新人居然一个 Ctrl+D 退掉了 SSH——当时那台机器最后一个 SSH 连接。
最后,迫于那台机器上没啥值得抢救的数据,直接重装了,省事儿。

可以看到,rm是有一些重要路径的保护措施的,而mv没有。而总所周知mv是不会丢失数据内容,而rm是可能导致数据丢失的(数据恢复不是 100%保证成功)。

起一个别名并不能解决问题。

然而,删掉了系统,真的有那么可怕吗?我觉得不是,重装系统太简单了。
真正可怕的是删掉、系统上产生的还有价值的数据、删掉部署在系统之上的技术栈、以及机器掉线带来的其他负面影响。
并没有系统命令可以帮你保护这些内容

那我们能做什么呢?老生常谈了:
在敲下回车之前,留个心,多看一眼,仔细一点。
勤备份:不仅仅是备份数据,还有软件架构的冗余、人员的冗余等等。

最后,感谢大家深夜听我逼逼这么多。

10384 次点击
所在节点    Linux
45 条回复
MadHouse
2019-12-22 19:38:36 +08:00
@KentY 批量操作当然用 sh 脚本,不过我是 emacs 重度用户,习惯用 dired 模式
nnnToTnnn
2019-12-23 10:35:15 +08:00
话说执行 rm -rf 这个命令的时候你们都不检查一下的吗?

每当执行以下命令我至少都会看三遍以上进行确认。

1. rm -rf xxxx (linux 命令)
2. delete from xxxxxx where xxx=xxx (sql 命令)

这些命令我至少在按下回车之前检查三遍以上,以前同事会经常看见我写完一句 sql 或者 linux 命令就盯着屏幕看好久,然后我问为啥不执行 =。=
nnnToTnnn
2019-12-23 10:39:45 +08:00
其次,还有就是为什么在 linux 用户下,用个 sudo 切换一下身份就这么难么? 假如你用的是 sudo 而非 root 身份。

起码在报一堆的 xxx 无权限的时候 ctrl +c 还能解决问题。

这让我又想到了之前一个 v2 的帖子,非要用 root 用户去操作服务器。

1. 权利太大,容易误删数据
2. root 身份启动的软件是具有 root 权限的。稍微一个漏洞整个系统全玩完
no1xsyzy
2019-12-23 14:25:19 +08:00
@nnnToTnnn 一个笑话:
在 rm 之前先要沐浴更衣,点上一支沉香,呼吸,感受,敲入命令,闭眼,再睁开,回忆一下参数的含义,想象 shell 参数展开的结果,确认无误,按下回车。
TynMh
2019-12-26 09:06:12 +08:00
既然知道是新手练手,为啥还要给 root 权限呢。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/630972

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX