对linux的理解

你没用过Windows,没接触过UNIX,只知道拖个文件到处跑,只知道硬盘是C: D: E:,却没研究过分区表。也许你会用VC写一个程序,习惯它的集成环境...有一天,不管什么原因,也许是报纸上记者分不清内存和硬盘的吹嘘,或者是老板让你当项目用。要么是同学有了你也不觉得很老套,要么是听说你找工作更有希望...无论如何,你想在你的机器上安装一个Linux。好了,这篇文章是写给你的,因为从现在开始,你会有很多疑问,你会觉得你从windows中获得的电脑经验好像完全没有用。你会想“为什么Linux这么麻烦?”。你会觉得自己从来没开过车,却要拆开来修。我为什么要学Linux?其实不需要学习Linux。如果你只是想用电脑让你的工作,比如打字,排版,统计,更有效率,Linux做不到。Windows,或者我推荐windows XP,是你最好的选择。很好的支持中文,非常稳定。上面有无数的应用,如果自担风险,还可以免费使用盗版。Linux会给你带来很多麻烦,比如安装时系统数据丢失,无法驱动网卡/声卡/显卡/显示器,无法配置中文,图形界面慢等等。以前在windows上很容易做到的事情,比如修改显示频率或者安装新的网卡驱动,在Linux下已经变得和不得不重新上一次大一计算机原理课一样烦人了。呵呵,Linux有什么好处?你会问。其实Linux没有什么好处。从使用的角度来说,它唯一的好处就是它是我们自己的,windows再好也是微软的。“我能怎么办?”你可能又会问区别在于Linux允许你去研究它。通过使用Linux,你可以更深入地了解计算机——而不仅仅是一个全自动的盒子。电脑是一个神奇的东西。你可能会佩服写windows的程序员(我就是),或者能发明更好的算法和更安全的操作系统的黑客(抱歉,不是远程攻击系统的黑客)。那么你应该知道,坐在一台windows机器前,整天用鼠标拖着它,也许能给你一份不错的打字员的薪水。但是永远不能让你进入真正的计算机世界也没什么不好——做一个思想自由的黑客,或者说,你永远只能做一个windows用户——而且很多领导还不会电脑——自己也不可能写一个windows。一个不好的结果是,当世界上到处都是windows的奴隶时,我们不得不花更多的钱从微软那里获得这样的技术。在一些社会中,我们称之为剥削。说这么多无非是说胡萝卜不能两头切,至少目前是这样。想让别人帮你做所有的事情,系统安装一路输入,硬件配置两次点击鼠标。对不起,请使用windows xp。如果你已经准备好了,那就继续看下去。

好,你的第一个问题是:什么是Linux,它和UNIX有什么区别?之所以问这个问题,多半是因为你大一的时候,有一次去实验室,看到一个上了年纪的学生在大屏幕的机器上做题。你羡慕地看着他,问:“这是什么电脑,这么先进?”他自豪地说,“这是UNIX。”后来你了解了很多,知道那是一个SUN工作站,上面运行的是Solaris,也就是UNIX。现在你听说Linux也是UNIX。发生了什么事?

简答:去看书吧。街上很多Linux书的第一章都是讲他们的历史和血缘关系的。

长回答:UNIX是二三十年前几个研究生在实验室里开始做,然后被一个大公司商业化的操作系统。一来二去,它壮大了,占领了市场。在那个时候,它只是在昂贵的机器上运行,只有大学才能负担得起一台或两台。后来机器多了,公司多了,有见识的人多了,就分了。因为法律关系,谁也不能说自己的操作系统是UNIX,只能说是兼容UNIX的系统。所以“UNIX”系统现在并不存在,只是一个遥远的传说存在。那么现在那些Solaris,AIX,iris是什么呢?那些是由公司在其硬件平台上制造的商业Unixes,这些系统都遵循一个奇怪的标准,叫做POSIX。顺便说一下,这个标准是一个我们不能坐下来讨论的协议,因为Unixes太多了,编程接口甚至命令都不一样。

那么什么是Linux呢?Linux是基于PC(其他平台支持)的UNIX兼容系统,它与UNIX的关系与其他任何UNIX兼容系统并不遥远。所以如果你有Solaris是正统UNIX,Linux只是兼容的想法,很抱歉你错了。至少你要打败支持AIX的人。他们仍然认为AIX是正统的UNIX。所以你可以用Linux来学习UNIX,这些知识大部分可以用在其他商业UNIX上。当然,它的核心思想是绝对一致的。所以三年前,只有你的博士生导师才有机会在实验室里学到宝贵的太阳里的知识,现在你可以在PC上实践。这难道不是一件好事吗?

第二个问题:我想装一个Linux。最新版本是什么?听说过国内某公司推出的xxxlinux,yylinux,zzzlinux。哪个更好?首先你需要明白,Linux不是windows,它不是一个商业公司维护的软件,只是一个包。Linux是可以随意打包和配置的东西。任何人和公司都可以按照自己的想法做一个Linux,比如增加一些功能和中文支持。虽然这些Linux的核心部分是一样的,但是它们带来的各类软件的默认配置都是不一样的。不同的是用一个Linux发行版(不同的Linux叫不同的发行版)可能硬件配置好,各种软件容易安装,用另一个可能更快,另一个可能更好支持中文。总之,天下没有免费的午餐。你在windows下想当然的东西,在linux下可能需要你熬夜。所以一开始选择发行的时候一定要非常小心,不然因为刚拿到一个带杂志的Linux发行版就开始安装,等到硬盘数据被破坏或者网络哭闹就来不及了。我没开玩笑。我知道在windows下安装一个驱动只是点几下鼠标,但在Linux下,通宵折腾开个网卡也不足为奇——当然我觉得值得。那么,面对这么多的Linux发行版,你应该选择哪一个呢?比较著名的Linux发行版有:RedHat:最新版本6.2,7.0beta .因为RedHat已经上市,获得了很多商业上的支持,所以在软硬件兼容性上非常好。其实已经是Linux的工业标准了。想象一下,如果你是甲骨文这样的厂商的老板,你需要为提供服务。

Linux开发一个版本,不同的Linux dist需要分别开发和维护。出于成本考虑,你自然只会找一个Linux。休闲服(7.1).Linux存在很久了,有很多老忠实用户,但是现在越来越差了。德国人做的SuSe Linux在欧洲很受欢迎,在驾驶方面有一些优势。还有Debian,CorelLinux等dist,就不一一介绍了。和Linux一样,Windows系列是一个完整的多任务操作系统。它们支持相同的用户界面、网络和安全性。但是,Linux和Windows真正的区别在于,Linux实际上是Unix的一个版本,来自Unix的贡献非常大。是什么让Unix如此重要?Unix不仅是多用户机器上最流行的操作系统,而且也是自由软件的基础。在互联网上,很多免费软件都是为Unix系统编写的。因为Unix厂商多,所以Unix的实现方式也多。没有一个单独的组织负责Unix的发布。现在,有一股巨大的力量以开放系统的形式推动着Unix社区的标准化。另一方面,Windows系列是一个特殊的系统,界面和设计都由开发操作系统的公司掌控。从这个意义上说,这类公司是很赚钱的,因为它在编程和用户界面设计上建立了严格的标准,和那些开放系统的社团完全不同。一些组织正试图完成标准化Unix编程接口的任务。特别是Linux完全兼容POSIX.1标准。

IT管理员需要长期关注安全问题。高管需要一个框架来合理评估操作系统的安全性,包括:基础安全、网络安全和协议、应用协议、发布和运行、确定性、可信计算、开放标准。在本文中,我们将根据这七个类别来比较微软Windows和Linux的安全性。最后定性的结论是,到目前为止,Linux提供了比Windows更好的安全性能,除了一个方面(确定性)。

无论用什么标准来评价Windows和Linux,都存在一定的问题:每个操作系统都有不止一个版本。微软的操作系统包括Windows98、Windows NT、Windows 2000、Windows 2003 Server和Windows CE,而Linux的发行版由于内核(基于2.2、2.4和2.6)和软件包的差异,差别很大。我们在本文中使用的操作系统都是当前的技术,而不是那些“旧”的解决方案。

用户需要记住,Linux和Windows在设计上有哲学上的差异。Windows操作系统倾向于将更多的功能集成到操作系统中,将程序与内核结合起来;与Windows不同,Linux在内核空间和用户空间之间有明确的界限。根据设计架构的不同,两者都可以使操作系统更加安全。

Linux和Windows安全性的基本变化

对于用户来说,Linux和Windows的不断更新引发了它们之间的竞争。用户可以有自己喜欢的系统,也可以关注竞争的发展。微软的主动性似乎更高一些——这得益于业界的“冷嘲热讽”和Linux的不断发展。微软将在未来几个月内提高Windows安全性,届时微软将发布Windows XP Service Pack 2 for Windows XP。这个服务包增强了Windows的安全性,关闭了很多原本默认开启的服务,还提供了新的补丁管理工具。比如为了避免接收太多无用信息,关闭了警告服务和信使服务。在大多数情况下,关闭这些功能有利于增强系统安全性,但很难在安全性与软件功能和灵活性之间做出妥协。

最显著的表现就是微软更注重提高可用性,增强系统的安全性。比如2003年,很多针对微软的漏洞攻击程序都是用可执行文件作为邮件附件(比如MyDoom)。Service Pack2包括附件执行服务,它为Outlook/Exchange、Windows Messenger和Internet Explorer提供了一个统一的环境。这可以减少用户运行可执行文件时病毒或蠕虫感染的威胁。此外,禁止数据页的可执行性也将限制潜在缓冲区溢出的威胁。但在WindowsXP Service Pack 2中,微软并没有修改Windows有问题的架构和安全传输,而是把这部分负担交给了用户。

微软的重点显然是支持应用程序的安全性。WindowsXP Service Pack 2中许多方面的增强都是针对Outlook/Exchange和Internet Explorer的。例如,Internet Explorer中有一个智能的MIME类型检查,它会检查目标的内容类型,用户可以知道内容中是否有潜在的有害程序。但是这个软件能从同事的电子表格中分辨出病毒吗?

WindowsXP Service Pack 2的另一个新功能是能够卸载浏览器的冗余插件,这需要最终用户检查并确定需要卸载哪些插件。Outlook/Exchange可以预览电子邮件,因此用户可以在打开电子邮件之前将其删除。另一个应用程序安全性增强是防火墙在网络协议栈之前启动。对于软件开发人员来说,远程过程调用中权限的改变使得安全性差的代码很难正常工作。

WindowsXP Service Pack 2还为Windows用户提供了许多华丽的新功能,但问题仍然存在:这些功能会给管理员甚至最终用户带来负担吗?是否增加了Windows操作系统代码的安全性,使系统更加复杂?

Linux和Windows的区别

虽然有一些相似之处,但Windows和Linux的工作方式仍然有一些根本的不同。这些区别只有在你熟悉了两者之后才能体会到,但它们是Linux思想的核心。

Linux的应用目标是网络,而不是打印。

Windows刚出现的时候,世界还是一个纸质的世界。Windows的一大成就就是你的作品可以很容易的被看到和打印出来。这样的开端影响了Windows后来的发展。

同样,Linux也受到了其起源的影响。Linux的设计定位于网络操作系统。它的设计灵感来源于Unix操作系统,所以它的命令设计相对简单,或者说简洁。因为纯文本可以很好地跨网络工作,所以Linux配置文件和数据是基于文本的。

对于那些熟悉图形环境的人来说,乍一看,Linux服务器似乎很原始。但是Linux开发更注重其内部功能,而不是表面的东西。即使在纯文本环境中,Linux也具有非常先进的网络、脚本和安全功能。执行某些任务所需的一些看似奇怪的步骤令人费解,除非你意识到Linux期望与网络上的其他Linux系统合作来执行这些任务。Linux还有很强的自动执行能力,系统只需要设计批处理文件就可以自动完成非常细致的任务。Linux的这种能力来自于它基于文本的特性。

可选GUI

Linux有图形化的组件。Linux支持高端图形适配器和显示器,完全胜任与图形相关的工作。现在很多数字效果美工都是在Linux工作站上做设计工作,以前都是用IRIX系统来做。然而,图形环境并没有集成到Linux中,而是运行在系统之上的一个单独的层上。这意味着您只能运行GUI,或者在需要时运行GUI。如果您的系统的主要任务是提供Web应用程序,您可以停止图形界面,并使用其内存和CPU资源为您服务。如果您需要在GUI环境中做一些工作,您可以再次打开它,并在工作完成后关闭它。

Linux有图形管理工具和日常办公工具,如电子邮件、网络浏览器和文档处理工具。然而,在Linux中,图形管理工具通常是控制台(命令行)工具的扩展。换句话说,所有可以用图形工具完成的工作也可以用控制台命令来完成。同样,使用图形工具并不妨碍您手动修改配置文件。它的实际意义可能不是特别明显,但是如果图形管理工具中的任何工作都可以通过命令行来完成,那就意味着那些工作也可以通过一个脚本来实现。脚本命令可以是自动化任务。Linux支持这两种方法,并且不要求您只使用文本或GUI。你可以根据自己的需要选择最好的方法。

Linux中的配置文件是人类可读的文本文件,类似于过去Windows中的INI文件,但与Windows中的注册表机制有本质区别。每个应用程序都有自己的配置文件,通常不与其他配置文件放在一起。但是,大多数配置文件都存储在一个目录树(/etc)下的一个地方,所以看起来它们在逻辑上是在一起的。文本文件的配置使得配置文件的备份、检查和编辑能够在没有特殊系统工具的情况下完成。

文件扩展名

Linux不使用文件扩展名来识别文件的类型。相反,Linux根据文件头的内容来识别文件的类型。为了提高人的可读性,还是可以使用文件扩展名,但是在Linux系统上没有影响。然而,一些应用程序,如Web服务器,可能使用命名约定来标识文件类型,但这只是特定应用程序的要求,而不是Linux系统本身的要求。

Linux通过文件的访问权限来判断文件是否是可执行文件。任何文件都可以被赋予可执行权限,以便程序和脚本的创建者或管理员可以将它们识别为可执行文件。这有利于安全。保存到系统的可执行文件不能自动执行,可以防止很多脚本病毒。

重启是最后的手段。

如果您已经使用Windows很长时间了,您可能会因为各种原因习惯于重新启动系统,从软件安装到纠正服务故障。你这个习惯在Linux思维上需要改变。Linux本质上遵循牛顿运动定律。一旦它开始运行,它将保持运行,直到它受到外部因素的影响,如硬件故障。事实上,Linux系统的设计使得应用程序不会崩溃内核,因此不需要频繁重启(相对于Windows系统的设计)。因此,除了Linux内核,其他软件都可以在不重启系统的情况下安装、启动、停止和重新配置。

如果你真的重启Linux系统,问题很可能得不到解决,反而会变得更糟。学习和掌握Linux服务和运行级别是成功解决问题的关键。学习Linux最难的就是克服重启系统的习惯。