9个好玩但有点危险的Bash Shell命令

Posted mickjoust

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了9个好玩但有点危险的Bash Shell命令相关的知识,希望对你有一定的参考价值。

前言

前段时间重感冒,状态低迷,各项任务进度拖延严重,Blog更新更是非常滞后。

一个感悟:生病时人会有种无力感,想要做但真的很容易放弃。

所以,身体很重要,要花时间锻炼身体,花时间休息非常有必要。

回归正题,今天无意中看到一篇有趣的文章《9 Evil Bash Commands Explained 》,突然想到每年都频发的多起“删库跑路事件“”,有的命令虽然好玩,但异常危险!千万不要让你的好奇心变成潜在危险。

1.

alias cd='rm -rf'

这里发生了什么?

  • alias:是声明bash命令的别名/快捷方式。
  • cd:是指定的别名的名称。
  • rm -rf:是实际运行的命令。不用说我们都知道是干什么的。

终于明白,为什么每一家公司都会强制要求离职时要格式化电脑,因为不知道是不是就有这样的别名设置。

2.

:():|: &;:

这里发生了什么?

简单说就是,无终止的条件递归。如果执行此操作,它将快速复制自己,从而消耗完所有的内存和CPU资源(也称为fork bomb)。它可以冻结您的整个系统,因此是拒绝服务攻击的一个示例。令人惊讶的是,仅用12个字节的命令就能执行这种攻击!
翻看耗子叔的文章时发现,他介绍过这个经典的命令:FORK 系统炸弹

3.

dd if=/dev/zero of=/dev/sda

这里发生了什么?

  • dd:是将数据从一个文件设备复制到另一文件设备的命令。
  • if=指定源:/dev/zero 是零字节的无限源。
  • of=指定目标:/dev/sda 是磁盘驱动器。

dd 常用来做磁盘读写测试,但同时也是擦除磁盘的危险命令。

我曾经就犯过这样的错误,当时是刚装完一台Oracle RAC的新Linux系统,没有业务数据,想着插入USB后格式化,usb本来应该是sdc,而我看成了sdb,dd后就后悔了,reboot后,果然系统就起不来了,只能边骂自己边重装。

4.

for i in 1..10;do dd if=/dev/urandom of=/dev/sda;done

这里发生了什么?

这里是上面dd命令的变种,使用随机字节十次覆盖整个磁盘。

5.

git reset --hard

这里发生了什么?

  • git reset:是将git代码库的当前HEAD重置为最后一个提交(或指定)状态。
  • --hard:是重置索引和工作树。自上次提交以来,对工作树中跟踪文件的任何更改都将被丢弃。

换句话说,命令会丢弃所有未提交的更改。由于这些不是git跟踪的,因此无法还原它们。

6.

tar -czvf /path/to/file archive.tgz
# 替换为
tar -czvf archive.tgz /path/to/file

这里发生了什么?

  • tar -czvf:c是创建新文档,z是使用gzip,v是现实执行过程,f是指定到文件。
  • archive.tgz:要创建的压缩文件的名称。
  • /path/to/file:要压缩的文件的路径。

这里的文件顺序至关重要!!!如果第一个文件是你要压缩的文件,则它会被完全销毁,因为它tar是通过覆盖第一个给定文件开始创建存档的,直到事后才意识到第二个给定文件不存在。如果要备份文件并使用错误的参数顺序,崩溃只在一瞬间。

7.

chmod -R 777 /
# 替换为
chmod -R 777 ./

这里发生了什么?

  • chmod -R:递归应用文件权限
  • 777:设置权限模式(允许所有内容)
  • ./:应更改的目录或文件

如果您不注意要定位的目录,而无意中选择了根目录而不是当前目录的娿,那么你将弄乱整个系统的所有权限,从而无法使用。

8.

chown -R root:root /
# 替换为
chown -R root:root ./

这里发生了什么?

  • chown -R:递归地应用新所有者
  • root:root owner:要设置的组
  • ./ 应更改的目录或文件

这将以最可能需要重新安装系统的类似方式弄乱所有文件权限。

9.

fsck -y /dev/sda

这里发生了什么?

  • fsck:是知执行文件系统的检查,而-y 始终尝试自动修复任何检测到的文件系统损坏的标志。
  • /dev/sda:是要检查的卷。

这通常是一件好事,但您的卷已加密。在这种情况下,fsck修复它的尝试将完全破坏它。文件系统只有在解锁后才能检查。

小结

看来,作者写文章的目的真的只是闲来无事而已,不过,倒是给我们提了醒:

  • 通过输入一个简单的命令,就能很容易的销毁一个系统的数据。
  • 输入bash命令尤其要检查是否有拼写错误,比如,rm -rf *你敢乱写吗?!
  • 永远不要只会复制和粘贴代码,别人很可能给你埋了一个雷。
  • 大多数错误都是在root权限下犯的,小心使得万年船!

所以,一定要记住:手握系统权限操作越大,责任也就越大。

最后

如果你知道其他好玩但危险的命令,欢迎留言分享。

免责声明:对于你通过尝试上述命令对系统造成任何的损害,我不承担任何责任。请使用虚拟机等安全环境进行测试。

以上是关于9个好玩但有点危险的Bash Shell命令的主要内容,如果未能解决你的问题,请参考以下文章

转帖Linux Bash 提示符的好玩操作

第9章 Shell基础_Bash基本功能

bash内部命令变量

这9个Linux命令太过危险 请慎用

什么是Bash Shell的内建(build in)命令

关于Linux shell,还有bash