9个好玩但有点危险的bashshell命令(代码片段)

mickjoust mickjoust     2022-12-10     465

关键词:

前言

前段时间重感冒,状态低迷,各项任务进度拖延严重,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权限下犯的,小心使得万年船!

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

最后

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

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

php危险函数(23个)暂时记录

...:输出PHP环境信息以及相关的模块、WEB环境等信息。  危险等级:中  2.passthru()  功能描述:允许执行一个外部程序并回显输出,类似于exec()。  危险等级:高  3.exec()  功能描述:允许执行一个外部程序(如UNIXShe... 查看详情

bashshell命令(代码片段)

3.BashShell命令3.1基础常识1lijunbo@lijunbo-virtual-machine:~/Desktop$用户名@机器名:当前所在目录$等待用户输入~代表当前用户home目录/代表根目录man[命令]:显示该命令的用法Windows盘符,文件目录\\反斜线,Linux一切皆文件,文件目录/正... 查看详情

了解基本的bashshell命令(代码片段)

  本节内容主要介绍如何使用bashshell提供的基本命令处理Linux文件和目录;1、启动shell  shell是一个可以交互访问的Linux系统程序,它的运行与普通程序相同,系统启动的shell取决于用户ID的配置;  bash命令常用的参数: ... 查看详情

bashshell相关特性(代码片段)

bash基础特性之:命令历史命令历史:shell进程会在会话中保存此前用户提交执行过的命令;查看历史命令:~]#history定制history的功能,可通过环境变量来实现;HISISIZE:shell进程可保留的命令历史条数;HISIFILE:持久保存命令历史... 查看详情

:更多的bashshell命令·

4.1监测程序4.1.1探查程序ps命令默认情况下,ps命令只会显示运行在当前控制台下的属于当前用户进程的进程显示的当前进程的项目进程号运行在哪个终端(tty)进程占用的CPU时间Linux系统支持的GNUps命令支持3个不同的... 查看详情

bashshell参数展开(shellparameterexpansion):替换变量(variable)中的字符串(代码片段)

在写bashshell脚本时,如果遇到要替换变量中的字符串,首先想到的就是用sed命令,比如下面的示例将变量str中的数字123替换成UUU:$str=hello,word,123$echo$str|sed-E-e's/[0-9]/U/g'hello,word,UUUU上面的例子中用到echo,sed两个... 查看详情

你可能不知道的20个git命令,但真的很实用(代码片段)

...这些命令都非常强大,可以让你的生活更轻松(其他命令有点小众,但仍然很高兴知道)。 这篇文章概述了我最喜欢的20个未充分使用的git功能,您可以使用它们来提升您的开发过程,给您的同事留下深刻印象,帮助您回答g... 查看详情

[linux]基础bashshell命令(代码片段)

[Linux]基础操作命令参考书本《Linux命令行与shell脚本大全》复习和查询用,别的用到了在慢慢补充遍历目录目录路径绝对路径cd/usr/bin相对路径cdDocuments返回主目录cd其他实用命令显示当前目录pwd当前目录的父目录…单点表示当前目... 查看详情

text编辑bashshell的配置文件以启用颜色,别名和新命令行提示等附加功能!(代码片段)

查看详情

bashshell实用快捷键

Ctrl-D相当于Del键,即删除光标所在处的字符Ctrl-E相当于End键,即将光标移动到本行末尾Ctrl-K用于删除从光标处开始到结尾处的所有字符Ctrl-L清屏,相当于clear命令Ctrl-R进入历史命令查找状态,然后你输入几个关键字符,就可以找... 查看详情

sh简单的bashshell脚本模板。有两个版本:1)简单的基于envvar的选项,以及2)添加了命令行参数解析(代码片段)

查看详情

基本bashshell命令

以下列举一些常用的bashshell命令,在使用时方便查找。访问Linux系统上的手册:man命令。例:manps   手册是由分页程序来显示的,可以通过点击空格,回车,向上和向下箭头进行翻页查看。浏览文件系统:附一张常见Li... 查看详情

阅读和思考(代码片段)

关于当初我选这个专业,只是为了好玩。我记得第一次接触计算机是在小学的时候,家里买了第一台计算机。有一次搬机箱,不小心摔了一下,机箱撞在地上,当时大脑一片空白,爸妈也不在家。怀着忐忑的心情,我装好之后按... 查看详情

超硬核!分享9个功能强大却鲜为人知的python工具包!(代码片段)

欢迎关注,专注Python、数据分析、数据挖掘、好玩工具!我们知道Python编程简单明了,并且有很多很酷的库和函数,它可以使我们的工作变得更简单。在本文中,我将分享9个鲜为人知但你可能会非常感兴趣的P... 查看详情

那些危险的docker删除命令(代码片段)

文章目录杀死所有正在运行的容器删除所有已经停止的容器删除所有未打dangling标签的镜删除所有镜像强制删除无法删除的镜像杀死所有正在运行的容器dockerkill$(dockerps-a-q)删除所有已经停止的容器dockerrm$(dockerps-a-q)删除所有未打d... 查看详情

:处理用户输入

...在运行脚本时向命令行添加数据值$./addem103013.1.1读取参数bashshell会将一些称为位置参数的特殊变量分配给命令行输入的所有参数,者甚至包括shell执行的程序的名字位置参数变量是标准的数字$0:程序名$1:第一个参数... 查看详情

linux基础之bashshell介绍及基本特性

今天继续讲Linux基础知识,内容是关于bashshell的。分享以下bashshell的相关知识,例如基本特性等。 1.8)bashshell的介绍1.8.1)什么是bashshell  概括地讲就是bashshell是一个命令解释器,与内核进行交互。  bashshell是一个命令... 查看详情

linux学习笔记基本的bashshell命令

...默认的工作目录:用户默认的shell程序 默认情况下,bashshell启动时会自动处理用户主目录下.bashrc文件中的命令。它经常设置各种应用程序中用到的环境变量。 “~”是主目录的缩略表示 PS1:控制默认命令行提示... 查看详情