Shopify Free Trial Apply
Shopify 60天试用
Shopify 14天试用

“小故事,大事故”这个程序员一行代码就把整个公司都删没了

这个程序员叫做:Marco Marsala,他运营一家小型的主机托管公司,已经为1500多个客户提供服务器和网站托管业务,对于一个程序员兼系统管理员来说,还算运营的不错。

不过他最近遇到了一个天大的麻烦,不小心运行了一行代码,把客户所有数据都删完了,并且运行这个命令的时候,那个备份硬盘和他操作的服务器是联通状态,所以顺利实现双杀,备份文件也都消失了,这样他就一行代码就把整个公司都删没了。
 

jacky-chan.jpg

wtf
 
他运营的代码脚本一个 Bash 脚本,里面有一行“rm -rf {foo}/{bar}”命令,我们来解释一下这个命令的意思,让你来了解一下Marco Marsala悲剧的来源:

rm是Linux系统的删除命令,这里用到两个参数:

-r是recursive(递归),意思是如果要删除文件夹里面还有文件夹,就会先删除文件夹,就是说要删除的东西里面有文件夹必须要使用-r。
-f是force(强制),意思是直接删除,不用返回确认删除的信息。

然后 {foo}/{bar} 是用来指定要删除的文件夹和文件,问题就是出现这里,因为这 {foo}/{bar}  是脚本中动态传递的两个变量,正常情况下,如果脚本传递成功,就只是删除 {foo}/{bar}  这个文件夹或者文件。

但是由于变量处理出错,所以最终指令就变成了可怕的“rm -rf /”,“rm -rf/”意味着无需确认删除服务器根目录“/”下的所有内容。
1
2018-03-26

2 个评论

谢谢分享。
这是一条足以让LINUX运维工程师颤抖的命令行,哈哈。

要回复文章请先登录注册