㈠ linux篇:从rm -rf 引发的脚本安全闲聊(set 命令)
上周刚经历了一个“删库跑路”的惨重事件,不知哪位无邪的童鞋把Confluence 的数据存储目录 /var 清空了,结果群众的怒火燃烧上了天空
这次结合自己的一些思考来记录一些有关脚本安全的点
先来看一个简单的案例
在用户主目录下创建safe目录及相关文件用于测试演示
假如写一段脚本删除safe目录下所有文件:
这段是不是看起来没有问题,但如果由于有些大心脏的同学粗心,写成下面这样
最终,脚本都变成了rm -rf * ,可怕至极
其实在shell脚本当中,为了防止这种现象,我们可以借助set 命令来实现相关控制
关于set 命令有较多参数,这里介绍最常用的几个
我们以刚才图4那段有问题的脚本说事
为保证不错删东西 ,我们加一个set -u 选项 ,判断变量是否存在
我们执行一下,看看效果
看,报错啦,dir这个变量没有声明,ls 查看一下文件,发现都还存在
set -e 与set -u 通常搭配在一起使用
一个是遇到错误退出,一个是发现空变量报错
这两个搭配在一起放在脚本里可以防止一些变量为空导致文件全被清空的问题
拓展一下:
如果只想应用在脚本的某一段中,那么
开始段落前加set -e 表示范围开始
结束段落后加 set +e 表示范围结束
set -x 与set + x同理。
1、删文件其实不用rm -rf ,不是受迫性需要,不要使用rm -rf
2、修改、删除系统文件或其他重要的东西,先备份一份
3、非特殊需要,不建议在root下操作,普通用户即可
4、脚本加上set -e 与set -u保证安全
㈡ Linux下rm -rf删除文件夹报错
在终端执行 lsof +D 再加上无法删除文件的目录,把显示的process都kill掉,然后再rm就可以了。
㈢ linux rm rf 什么命令都无法使用
rm -rf * 删除当前目录下的所有文件
这个命令很危险,应避免使用。
所删除的文件,一般都不能恢复!
所以文件的都没有了,命令也就都没有了
㈣ 请教大神,linux 下 rm -rf 无法删除 directory not empty
lsattr 查看文件夹特殊权限设置,应该是设置了i了,chattr去掉了再试,这个世界连root都删不掉的只有这个可能了。
㈤ rm-rf无法删除文件夹
1、首先是因为文件带有i属性,去除掉此属性,然后我们再执行删除,就可以顺利删除掉了。
2、其次正常情况下,Linux系统中,切换到某个目录然后执行 rm -rf 命令是可以删除该目录下所有文件的,但是以下文件也是无法直接删除的。
3、最后开头的隐藏文件,点(.)开头的隐藏目录需要手动删除一下。
㈥ linux系统rm -rf/*怎么恢复可以重做系统么
1、执行删除命令前,系统运行良好,且操作正常,如下图所示:
4、强制关机后,重新启动系统,如下图所示已经报异常了,无法正常进入系统,此时只有进行重装系统了。
总结:
1.有点遗憾删除结束后没法再使用df、ls这些命令,所以没办法看出还剩哪些文件。不过从上面的结果来看,连基础命令都执行不了,所以用户数据(如安装的软件、部署的网站、数据库等)肯定也都全删没了。
2.因此平时操作的过程中要养成良好的习惯,尽量不要用rm命令,可以用mv命令来代替。比如要删掉a.txt,可以执行mv a.txt /mytemp ,然后再写个脚本定时清除/mytemp目录下的文件,这样会安全很多。