首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

程序员亲手把一家公司弄垮是一种怎样的体验!

程序员亲手把一家公司弄垮是一种怎样的体验

而还真有个程序员还真就这么做了

它弄错了一行小小的代码

却毁了整个公司

这行小小的代码静悄悄的

把他整个公司

删个精光

个精光

精光

……

事情是这样的Marco Marsala 是一家小型主机托管公司的老板,他的业务就是给客户提供主机托管。但他最近遇到了一个天大的麻烦:由于脚本错误,他不慎删光了所有客户的数据。更糟糕的是,由于 Bash 脚本代码中包含了一行变量未定义的“rm -rf /”,连备份也没有了!

在谈这个问题前

我们先来科普一下

rm -rf 命令

到底是什么鬼

???

rm 是 linux系统下删除文件的命令

-r 代表删除这个下面的一切

一切的一切,all的all

f 表示不需要用户确认,是直接执行的那种

通常这个命令都是指定文件夹用的

举个例子来说明

rm -rf /home/test/

就是指删除

/home/test/这个文件夹下面的所有东西

但是如果后面的文件夹路径

没有加对......... rm -rf /的后缀

那么就意味着

整个服务器会

没错

BOOM的一声

灰飞烟灭,全部消失

这个小哥当然不会傻到

直接去执行这个变态的命令

小哥表示

当时他正在运行一个BASH脚本

但是脚本里似乎有一个问题

导致执行这个删除命令的时候

删除指定文件夹的那个参数

没有传递过去

结果就

……

不明白呀

??? 那我给你举个简单的例子

我现在让张三在电脑上删除

一个名叫“game”的文件夹中的内容

我=那个倒霉的程序小哥

张三=一个程序脚本

我原本给张三下的指令是

把电脑上名叫game的文件夹中的内容删除

结果张三可能是没明白我的意思

或者

漏掉我所下的指令

给我吧整个电脑上所有的文件夹都删除了

很遗憾

小哥再次表示

当时为了执行维护

他把远程的备份的驱动器也挂在了这个服务器上

于是所有的东西也就顺带这么一起删掉了

你以为事情就这样完了

还没有

还有后续

这一错误源自 Ansible 上糟糕的代码设计

这款 Linux 实用工具被用于

在多台不同服务器上自动执行脚本

开发者又进一步解释道

实际参数应该是“rm -rf /”

foo 和 bar 是脚本中动态传递的两个变量

然而由于变量处理出错

通用语法未能成功在 bash 命令中插值

所以最终指令就变成了可怕的

“rm -rf /”。 “rm -rf/”

意味着擦除根路径“/”下挂载的所有内容

且而无需询问

原本这些数据是可以恢复的

(只是时间长短的问题)

但由于

未能妥善实现生产环境和备份环境的隔离

备份文档也就上了天堂或者下了地狱

全没了

不得已之下,他只能上网发帖求救

然而没人能救得了他了

另外俗话说得好

手下一行码,余生两行泪

程序员们一定要谨慎呀

!!!

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180302A0IHIX00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券