
正如Linux祖先Unix背后的开发人员Terry Lambert曾经说过的,“Unix的工作不是阻止你射脚。如果您选择这样做,那么Unix的工作就是以它所知道的最有效的方式将子弹先生传递给脚先生。”
这正是Linux和Unix的工作原理。
如果您在桌面(如GNOME、KDE或Cinnamon)上使用图形化Linux应用程序,则不必担心这个问题。这些台式电脑配有安全带和肩带。您必须非常努力地尝试从图形用户界面破坏您的Linux机器。
但是,如果您是Linux管理员或高级用户,并且经常使用shell命令和/或编写shell脚本,那么,我的朋友,您可能会在错误的时间使用错误的命令来破坏您的计算机。
记住,永远不要在家里、办公室或生产系统上尝试这些命令。
这是每个Linux管理员都知道(或者应该知道)要避免使用的命令。
rm本身非常方便。它使您能够删除即使是最顽固的文件。但是,当您将rm与这两个标志结合使用时:-r(强制递归删除所有子目录)和-f(强制在没有////confirm/i/i/i/的情况下删除只读文件),您就是在自找麻烦。
如果您对/ root目录运行它,您将擦除整个驱动器上的所有数据。
尽管这被用作关于系统管理员错误的笑话的妙语,但人们在现实生活中仍然这样做。一位用户承认,“我最严重的错误之一就是在输入rm -r /this/is/my/folder/[accidental - space]*时不小心按下了空格键,令人难以置信的是,我甚至在按回车键时都没有意识到这一点。”
在本例中,该目录中的所有内容都被删除了,因为他使用了“*”通配符。再见,文件!外壳里没有回收站来救你。
大多数现代系统在你犯这个错误之前都会用大写字母警告你。然而,如果你在敲击键盘时很忙或心烦意乱,你可以把你的系统输入黑洞。我见过这样做,然后不得不从磁带恢复整个系统(相信我,你永远不想这样做)。
不完全是,但看起来确实是这样。Dd用于在电脑上复制几乎任何东西。使用得当,它是强大的,有用的和快速的。但是如果使用不当,它可以在眨眼之间破坏文件系统。
我听到的dd对驱动器和文件造成严重破坏的例子远比rm多。这是因为dd具有唯一的命令语法。如果手指内存导致您放入错误的标志,您可能会发现自己对文件系统做了可怕的事情。事实上,开源软件的联合创始人和黑客Eric S. Raymond推测,dd的命令语法看起来更像IBM JCL,而不是典型的Unix/Linux命令语法,“显然是一个恶作剧”。
不幸的是,如果这是一个笑话,那就是一个流传下来的坏笑话。因此,例如,命令:
Dd=/dev/ 0=/dev/hda
从特殊文件中提取数据,该文件输出无穷多个零,并将它们倒满硬盘驱动器。
这可能听起来很傻,但/dev/zero确实有实际用途。例如,您可以使用它来清除带有零的分区中的未使用空间。如果需要传输或备份分区,这将使分区映像更小。
它不一定是0。Dd会以各种有趣的方式愉快地用坏数据替换你硬盘上的好数据。这个命令可能很有帮助,但它就像试图用大锤修理手表一样:快速、高效和破坏性。
从固态硬盘(SSD)中清除数据的一种更现代的方法是使用blkdiscard命令,该命令用于丢弃设备扇区以及驱动器上的任何数据。不仅仅是像dd这样的老命令,它已经50岁了,会造成混乱。
我知道它看起来像一个错别字,但这个命令是臭名昭著的Bash分叉炸弹。它是一种拒绝服务(DoS)攻击,将填充Linux的进程表。确切的结果取决于系统限制设置和运行它的人,但通常情况下,它会卡住您的处理器,而恢复的唯一方法是重新启动系统。
通常,您会发现有人在编程课上学习如何使用fork时犯了这个错误。我还见过一些恶意的shell脚本,其中隐藏了这个命令来欺骗别人。在运行一个听起来很有用的shell脚本之前,最好先阅读它并在沙箱中运行它,以确保它没有隐藏任何可疑的东西。
我曾见过一些容易上当受骗的系统管理员用这样的命令抓住一个可能有用的脚本:
wget https://ImSureThisIsASafe/Greatscript.sh - o - | sh
该命令下载脚本并将其发送到shell运行。没有麻烦,没有混乱,对吧?错了。
该脚本可能被恶意软件毒害。当然,默认情况下Linux比大多数操作系统更安全,但是如果您以根用户身份运行未知代码,任何事情都可能发生。危险不仅在于恶意;脚本作者的潜在错误同样有害。您可能会被其他人的未调试代码咬伤,因为您没有花时间彻底检查它。
Chmod -R 777 /的命令相当于在一个高犯罪率的社区大开着你的前门。Chmod用于递归地更改所有文件和目录权限,使每个人都可以读、写和执行对系统上所有内容的访问。这是黑客的梦想,也是系统管理员的噩梦。
更常见的是,这个版本被用来帮助用户运行他们本来无法运行的程序。朋友们,通常有人没有权利运行一个程序是有充分理由的。
我看到这个命令的一个变体在容器化的应用程序中被滥用得最多。默认情况下,Docker容器以有限的权限运行,以降低风险并提高安全性。但是,懒惰的程序员常常在用户是根用户的地方构建容器。就像chmod -R 777命令一样,这意味着一切都是以root身份运行的,这只是在自找安全问题。
最后但同样重要的是,我们有mkfs。ext4 /dev/sda.这个命令将格式化您瞄准的任何驱动器或分区,并创建一个新的ext4文件系统。这就像用火焰喷射器清理你的桌子;这样可以消除混乱,但在这个过程中你可能会丢失一些重要的东西。
当然,有时您想要格式化驱动器。问题是,如果您对目标(比如保存所有主目录的sda2)而不是新的sda3 SSD驱动器进行了fat-finger操作,那么您就删除了您和所有用户的个人文件。
记住,能力越大责任越大。Linux给了您对系统做几乎任何事情的自由——包括意外地破坏它。总是反复检查命令,特别是在处理系统关键操作时。
作为一名从20世纪70年代就开始使用Unix的技术记者,从Linus Torvalds还是一名芬兰大学生的时候就开始报道Linux,我再怎么强调理解您正在使用的命令的重要性也不过分。
当涉及到潜在危险的Linux命令时,这五个命令只是冰山一角。下次当你想从一个粗略的在线论坛上复制和粘贴一个命令时,花点时间研究一下它的实际作用。您的数据、系统和理智都会感谢您。





