21 December 2013

标题是为了哗众取宠。本文实际要讲的是某程序中的一个巨大bug,它足以损坏你的操作系统。嗯,bug原意就是虫子,所以其实标题也没什么错。

关于这个GIANT BUG的原始资料在这里:https://github.com/MrMEEE/bumblebee-Old-and-abbandoned/commit/a047be85247755cdbe0acce6f1dafc8beb84f2ac#L1L351。 读者诸君莫要错过!

简单来说,在一个Linux程序的安装脚本里,原本应该是这样的一句代码:

rm -rf /usr/lib/nvidia-current/xorg/xorg

被写成了这样:

rm -rf /usr/ lib/nvidia-current/xorg/xorg

差别不过一个空格,但结果却大不相同。

首先,rm -rf是个很危险的命令,可以在不给用户任何提示的情况下递归(-r)、强制(-f)的删除指定文件夹下的所有数据。

其次,程序的安装脚本是在root权限下执行的,因此不会有任何障碍。

最后,也是产生破坏性的一点,/usr/是一个重要的系统文件夹,删了就只能后悔莫及了。

于是,上面的代码本来是要在不烦扰用户的情况下删除位于/usr/lib/nvidia-current/xorg/xorg的(已经没用的)文件, 却由于多写了一个空格,变成了删除系统目录/usr/下的所有数据!

悲剧啊!

在本文开始给出的链接页面上,关于这个bug有很多吐槽,其中不乏欢乐的图片。上面只是其中一张中文的,其他的自行去围观吧。