且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

《Web测试囧事》——1.10 多余的空格造成服务器被删除

更新时间:2022-10-01 10:30:15

本节书摘来自华章计算机《Web测试囧事》一书中的第1章,第1.10节,作者 黄勇 雷辉 徐潇 杨雪敏,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

1.10 多余的空格造成服务器被删除

在敏捷测试中,测试工作不仅包括设计和执行测试用例、编写测试报告,以及测试计划和策略的制定,还有测试部署脚本等工作。这次小蔡在执行部署脚本的测试过程中发现了一个严重的问题,这个Bug会导致整个测试服务器被删除,事情的缘由是这样的。

小蔡根据开发人员提交的部署脚本和执行步骤,一步步在测试环境中进行部署,同时去验证部署脚本中是否有遗漏和错误。当执行完部署脚本中删除临时文件的步骤后,小蔡发现后续步骤都不能执行了!经过调查发现原因是测试服务器已经被格式化了。

虽然测试服务器都是虚拟化的,可以很快在测试环境重新建立一台测试服务器,但是,如果这个Bug 出现在生产环境,那将会是非常大的灾难!

小蔡找到了刚才执行过程中出现问题的语句,是“rm -rf / tmp”。她仔细检查了整个语句,发现测试服务器被格式化的原因是在tmp前面多了一个空格,这个空格不仔细看还看不出来(业内也有同样的知名例子:Bumblebee误删用户文件夹,如图1-20所示,在最后一行的/usr /lib…语句中在usr后就被多写了一个空格)。

《Web测试囧事》——1.10 多余的空格造成服务器被删除

不过在Linux系统中,即使输入了灾难性的操作语句,但如果没有管理员的权限也是无法执行的,因为在执行这条语句的时候,只会出现权限不足,无法操作的提示, 不会把服务器整个删除。如图1-21所示,执行删除语句的用户由于没有管理员权限而被拒绝执行了。

《Web测试囧事》——1.10 多余的空格造成服务器被删除

所以小蔡下一步需要在脚本中找出是哪里赋予了管理员权限,导致后来删除语句被允许执行的。再仔细查找之前的部署脚本,果然不出所料,之前有一个操作步骤需要用管理员权限来复制几个不同的文件到管理员文件夹。通常做此类操作时,会只针对这条语句赋予权限,例如使用sudo命令的这条语句:“sudo cp xxx.zip /var/xxx/xxx/”,但开发人员在这里为了简化脚本的书写,把每一句最开始的sudo转换成单独的一条“su – root”,这种改变造成之后执行的所有语句都被赋予管理员权限进行执行,最终导致格式化测试服务器的命令也被执行了。

小蔡把这一发现告诉了开发人员后,开发人员修改了两处代码:一是删除“su –root”命令,改为针对每次执行需要特定权限的语句时单独添加sudo的方式,确保脚本执行的权限是正确的;第二是删除了导致测试服务器被格式化的那个空格。

《Web测试囧事》——1.10 多余的空格造成服务器被删除