震惊, 当我运行了这条 Linux 命令后, 服务器竟然...
0X00 写在前面
大家都听说过删库命令 rm -rf /*, 但是谁又真正实践过呢? 但作为一个程序员, 不看看这条命令执行后会发生什么, 怎么能甘心呢. 今天就带大家看看, 服务器运行了这条命令是什么样子.
(注意请勿随意模仿! 如果真的想试试, 可以自己搭一个虚拟机, 自行尝试. 后附: Linux 的删除命令详解)
0x01 删库之前
服务器是前段时间白嫖阿里云的小. 首先用 VNC 远程连接,
在这之前, 我们发现机子没有任何的问题.
0x02 删库 rm -rf /*
他来了, 他来了,
- rm -rf /*
- ![https://img2020.cnblogs.com/blog/1941900/202003/1941900-20200306231330430-175616721.png)
回车之后会这个样子, 你品, 你细品.
之后, 嗯? 出现了点小差错
劳资, 玩浏览器这么多年第一次遇到这样的情况.
第一个, 显示内存不足的是用 VNC 远程连接的网页. 我可以理解. 那第二个, 服务器管理页面为啥也崩啊.
害, 可能是我的电脑太垃圾了.
好在刷新了一下好了.
现在我们重新通过 VNC 远程连接.
现在是这样的一个情况.
0x03 删库后
可以最后报出来这样一条:
[ 661.704409] systemd-journald[410]:Failed to creat new system journal:eNO such file or directory
这句话是指无法创建新的系统日志.
那么现在的系统是否可用呢, 我们来测试一下.
Ctrl+L 清屏快捷键依然可以用.
现在看起来跟没删差不多.
那么我们去运行些其他的命令试试.
出错了, 我们显示根目录下的文件竟然没有显示.
help 可以
最后, 我们尝试, 除了最基本的 cd ,pwd, 以及 echo. 其他的都不能运行 (包括关机和重启命令).
只能从服务器管理端强制关机了
至此删库演示结束, 我也该跑路了.
0x04 后话
回复服务器的话, 我们可以强制关机.
停止的时间有点长啊, 不过好在停止了.
停止了, 之后我们就可以重新部署系统里. 不过, 之前的东西都不复存在.
总之, 我们一定不要随便尝试这条命令! 切记, 特别是别人的电脑上. 这也给我们提一个响钟, 一般不要使用 root 用户登录. 使用 rm 命令时一定要记得备份!
附录
Linux 里的删除操作
rm 命令
rm 命令可以删除一个目录中的一个或多个文件或目录, 也可以将某个目录及其下属的所有文件及其子目录均删除掉. 但对于链接文件, 只是删除整个链接文件, 而原有文件保持不变.
食用方式:
rm [选项](参数)
其中选项可以时:
-d.................. 删除一个空目录;
-f:................. 强制删除文件或目录;
-i:................. 删除已有文件或目录之前先询问用户;
-r 或 - R:............. 递归处理, 将指定目录下的所有文件与子目录一并处理;
--preserve-root:... 不对根目录进行递归操作;
--no-preserve-root:. 不将 "/" 看做根目录.
--preserve-root...... 不能对根目录执行递归操作.
-v:................. 显示指令的详细执行过程.
参数是指文件或文件夹: 指定被删除的文件列表, 如果参数中含有目录, 则必须加上 - r 或者 - R 选项.
实例操作:
.
├── 1 // 文件
├── kongmulu // 空目录
└── test
├── 1.txt
├── 2.txt
└── test
├── 1.txt
└── test // 目录
删除一个文件
我们删除当前目录下的文件 1
- rm 1
- root@kali:/tmp/rmtest# rm 1
- root@kali:/tmp/rmtest# ls
- singlemulu test
这时已经删除成功了, 但是却没有交互式的提示.
但如果加上可选项 - r, 情况是这个样子
- rm -i 1
- root@kali:/tmp/rmtest# rm -i 1
- rm: remove regular empty file '1'? n
- root@kali:/tmp/rmtest# ls
- 1 singlemulu test
- root@kali:/tmp/rmtest# rm -i 1
- rm: remove regular empty file '1'? y
- root@kali:/tmp/rmtest# ls
- singlemulu test
- root@kali:/tmp/rmtest#
在删除之前会向你询问是否要删除.
删除一个目录
空目录
- rm -d kongmulu
- root@kali:/tmp/rmtest# rm -d kongmulu/
- root@kali:/tmp/rmtest# rm -d test/
- rm: cannot remove 'test/': Directory not empty
- root@kali:/tmp/rmtest#
这个命令可以删除空目录, 但是不可以山粗非空目录.
递归删除目录
- rm -r test
- root@kali:/tmp/rmtest# rm -dr test/
- root@kali:/tmp/rmtest# ls
这样会删除目录下的多有文件和子目录. 风险很大.
注意: 不同的选项可以组合在一起.
比如:
rm -rf 参数
强制删除文件和目录.
显然这样的操作十分危险.
所以我们进行强制递归删除的时候, 一定要想起添上
- --preserve-root
- --no-preserve-root
比如:
rm -rf --preserve-root /
或
rm -rf --no-preserve-root /
虽然可能系统也可能会损坏. 但是比不加强.
备份备份 备份
切记要备份! 备份才是王道! 我们总会有疏忽的时候! 所以重要数据一定要备份!
来源: https://www.cnblogs.com/delongzhang/p/12431650.html