任务一 查找Linux系统的基本概况
基本历史简介
系统现况
UNIX System V Release 4发布后不久,AT&T就将其所有UNIX权利出售给了Novell。Novell期望以此来对抗微软的Windows NT,但其核心市场受到了严重伤害,最终Novell将SVR4的权利出售给了X/OPEN Consortium,后者是定义UNIX标准的产业团体。最后X/OPEN和OSF/1合并,创建了国际开放标准组织。由它定义的多个标准定义着什么是以及什么不是UNIX。
实际的UNIX代码则辗转到了Santa Cruz Operation,这家公司后来出售给了Caldera Systems。Caldera原来也出售Linux系统,交易完成后,新公司又被重命名为SCO Group。
任务二 总结Linux系统的最初十年
Linux本身并不是一个安全的操作系统。这是因为Linux是在UNIX的结构设计基础之上进行开发的,而UNIX的开发者对于安全问题并没有十分关心——毕竟那是在1969年。
“首先要面对的是事实是,UNIX的开发者并没有考虑安全问题。单单这一点就会引发大量的漏洞,”Dennis Ritchie在1979年他《关于UNIX的安全》的论文中写道。
上周二在波士顿的LinuxCon上,红帽公司Linux内核开发者的James Morris谈论了Linux在过去十年里是如何演变来克服自身安全模型的不足。
Morris指出,问题是在UNIX诞生的60年代末,每个人都以为我们现在能拥有会飞的汽车,但事实是我们有了Facebook。我们今天用计算机在做的事情可能是40多年前人们的梦想,尽管我们仍旧依赖于数十年前设计的操作系统。
这就是Linux开发人员所面临的挑战。Morris说,为了确保Linux的安全,软件工程师必须在Linux内核周围插入安全组件。Linux最早的安全机制是UNIX DAC,后来陆续出现了POSIX、访问控制列表、私有和PID命名空间、加密、Linux安全模块、SELinux、Smack、TOMOYO、AppArmor,类似的名单仍在继续。
但是拥有这么多选择,用户们反而会觉得茫然。这有点像进入了一个“酷圣石”冰激凌店,然后你会被一长串配方和冰激凌口味弄得无所适从。不如老老实实地按照自己预定的食谱来选,或者更简单,直接从附近的杂货店挑一品脱樱桃加西亚。
眼花缭乱的Linux安全选项
Linux无数的安全选项不仅阻碍了安全技术的发展,同时也为建立安全的Linux服务器和工作站制造了困难。例如,一个用户或者系统管理员不得不去决定是否要开启Smack、TOMOYO、SELinux还是AppArmor。做这样的决定并不像想象的那么简单,因为这些技术中的很多都解决类似的问题,只是它们的处理方式略有不同。比如说,Novell为它的SUSE Linux企业服务器开发了AppArmor,它是SELinux的竞争对手。Novell在其AppArmor网站上发布了两种技术的比较。结果是,AppArmor拥有更简单的配置文件格式(51CTO编辑注:很多用户一直觉得SELinux的安全级别设置十分麻烦,甚至也有报道说SELinux会导致安全问题,因此有很多教程都是教人如何关闭SELinux的)。
我们还没有讨论关于网络安全、存储安全和恶意软件预防。这涉及到为数据包过滤设置防火墙。至于阻止恶意软件,目前有几个处于不同发展阶段的项目,比如fsnotify、TALPA 和DazukoFS。
Morris还说,最大的问题是“让人们认识到安全措施是必要的。”
“这不像系安全带。”Morris说,“我们不能让法律来制约人们设置安全的Linux服务器和工作站。我们必须说服人们,这样做对他们有利。”
Linux安全机制的透明化
因此,我们需要让安全选项尽可能的透明化,而不是让绝大多数Linux用户苦苦挣扎于无数的安全选项中,Morris说。
透明化是AppArmor的既定目标之一。SUSE的Tony Jones说,“AppArmor的目的是对于应用软件实现高度透明:如果你在一个工作系统中添加AppArmor,你需要开发AppArmor配置文件,但是不用改变你的应用程序。如果将AppArmor从一个正在运行的系统中移除,系统仍将完全像之前一样继续运行,只是没有AppArmor安全保护而已。”
虽然SELinux的配置文件比AppArmor的更麻烦,但是透明化也是它的目标之一。红帽称,“SELinux插入Linux安全模块(LSM)能够为多个普通网络面应用程序处理网络核心层访问请求。对于这些应用程序,基于SELinux的安全体系不需要进行额外的管理。此外,对用户和应用程序而言,它是完全透明的。”提高透明度的好处是它可以减少人为的安全威胁。人们就像水一样,喜欢寻找没有阻碍的道路。如果系统管理员需要通过编写繁琐的配置文件和页面来设置一个安全的系统,那么他们中的很多人可能很轻易地就气馁了。
任务三 研究Linux的特点、优势及发行版本
子任务一:阐述Linux系统的特点
人们会经常提及一个问题为什么Linux几乎不崩溃,Linux的稳定性是由于它没有象其它操作系统一样内核如此庞大、漏洞无穷。考察资料表明,Linux与其它Unix系统和大型操作系统如VMS、IBM大型机等一样具有相同的可靠性。原因并不难以得到,系统的稳定性主要取决于系统设计的结构。计算机硬件的结构自从1981设计开始就没有作特别大的改动,而连续向后兼容性使那些编程风格极差的应用软件勉强移植到Windows的最新版本,这种将就的软件开发模式极大地阻碍了系统稳定性的发展。另一种易于崩溃的系统Macintosh,它缺乏内存使用保护和缺乏抢占式多任务的缺点与它友好的使用界面一样闻名于世,令人惊奇的是Macintosh虽然具有如此重大的缺陷但并没有如人们想象的那样频繁死机。
Linux的稳定性并不是一个意外的例外,稳定性是所有大型计算机操作系统所具有的共性。仅仅Windows和苹果机有时会失常。Linux所共享的Unix设计体系是经过长期实践考验的,Linux吸取了Unix系统近1/4世纪发展的经验,Linux操作系统体现了最先现代化操作系统的设计理念和最经得住时间考验的设计方案。最令人注目的是Linux开发源代码的开发模式,这保证了任何系统的漏洞都能被及时发现和改正。就如IBM在其网站上所说的一样,Linux是一个稳定的、功能强大的、值得使用的操作系统。
子任务二:分析Linux系统的优势
Linux 作为服务器的优势是,他目前具有最好的生态系统,服务器端的各种软件都为它而设计,默认都认为你是在 Linux 上跑,你要是整一个非 Linux 的服务器,你得有足够的心理准备,因为出现任何问题,你可能未必能找到能帮你解决问题的人。
这里我想引申说一个例子:
为什么 android 中的一部分软件质量比较差?因为那些公司已经为 iOS 写了个软件,到了 android 就根本不想重新开发,只想把原先的一些资源稍微修补一下弄上去用,所以搞出了一个很糟糕的软件,那些用惯 iOS 的人,到了 android 里面可能首先想找那些 iOS 程序的替代品,结果那些程序往往都很糟糕。
反过来常常也是一样,有些软件,天生是在 android 下诞生的,他们去做 iOS 的时候,也经常是糊弄一下子就解决问题,而那些长期用惯了 android 的人,到 iOS 下,首先去找自己用惯的那些软件在 iOS 里面的对应软件,结果就还是发现这些在 android 下的优秀软件『在 iOS 里面的表现糟透了』。
上面的例子实际上就是所谓『生态系统锁定』的问题。
现在 Linux 就面临这些现状,他本身构建的生态系统,太多的软件本来在 Linux 下开发,也只适合在 Linux 下运行,虽然通常他们可能被移植到了 Windows,可是这些血统来源于 Linux 的软件,在 Windows 下安装部署的用户体验全都糟糕透了,于是乎服务器端开发者越发反感使用 Windows 作为服务器的部署平台。生态系统锁定之势已成。
子任务三:总结Linux系统的发行版本
Redhat,应称为Redhat系列,包括RHEL(Redhat Enterprise Linux,为收费版本)、Fedora Core(由Redhat桌面版本发展而来,免费)、CentOS(RHEL的社区克隆版本,免费)。Redhat可以说是在国内使用最多的Linux版本,甚至有人将Redhat等同于Linux。这个版本的特点就是使用人数多,资源多,而且网上的许多Linux教程也都以Redhat为例进行讲解。
Redhat系列的包管理方式采用的是基于RPM包的YUM包管理方式,包分发方式是编译好的二进制文件。稳定性方面RHEL和CentOS的稳定性非常好,适合于服务器使用,但是Fedora Core的稳定性较差,最好只用于桌面应用。
如果你需要一个比较稳定的服务器系统,而且你不喜欢各种Linux的配置,那么你可以选择CentOS,在安装完成后经过简单的配置就能非常稳定地运行了.
Debian,或者称Debian系列,包括Debian和Ubuntu等。Debian是社区类Linux的典范,也最遵循GNU规范。Debian分为三个分支: stable, testing和unstable。其中,unstable为最新的测试版本,有相对较多的bug,适合桌面用户。testing的版本都经过测试,相对较为稳定。而stable一般只用于服务器,软件包大都比较过时,但是稳定和安全性都很高。Debian最具特色的是apt-get/dpkg包管理方式。
Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以说Ubuntu是一个拥有Debian所有的优点,以及自己所加强的优点的近乎完美的Linux桌面系统。根据选择的桌面系统不同,有三个版本可供选择,基于Gnome的Ubuntu,基于KDE的Kubuntu以及基于Xfc的Xubuntu。特点是界面非常友好,容易上手,对硬件的支持非常全面,是最适合做桌面系统的Linux发行版本。
如果你不需要自己进行定制,不想在系统上浪费太多时间,那么你可以根据自己的爱好在ubuntu、kubuntu以及xubuntu中选一款吧,三者的区别仅仅是桌面程序的不一样。
Gentoo,Gentoo是Linux最年轻的发行版本,因此也吸取之前的发行版本的优点,这也是Gentoo被称为最完美的Linux发行版本的原因之一。Gentoo最初由DanielRobbins(FreeBSD的开发者之一)创建,由于开发者对FreeBSD的熟识,所以Gentoo拥有媲美FreeBSD的广受美誉的ports系统——Portage包管理系统。不同于APT和YUM等二进制文件分发的包管理系统,Portage是基于源代码分发的,必须编译后才能运行,对于大型软件而言比较慢,不过正因为所有软件都是在本地机器编译的,在经过各种定制的编译参数优化后,能将机器的硬件性能发挥到极致。Gentoo是所有Linux发行版本里安装最复杂的,但是又是安装完成后最便于管理的版本,也是在相同硬件环境下运行最快的版本。
如果你需要一个桌面系统,而且还想非常灵活的定制自己的Linux系统,那么你完全可以选择Gentoo。
FreeBSD,FreeBSD并不是一个Linux系统,但FreeBSD与Linux支持的硬件环境比较一致,采用的软件也比较类似,用户也有许多重合。所以可以将FreeBSD视为一个Linux版本来比较。FreeBSD拥有两个分支:stable和current。其中,stable是稳定版,而current则是添加了新技术的测试版。
FreeBSD采用Ports包管理系统,与Gentoo类似,基于源代码分发,必须在本地机器编后后才能运行,但是Ports系统没有Portage系统使用简便,使用起来稍微复杂一些。FreeBSD的最大特点就是稳定和高效,是作为服务器操作系统的最佳选择,但对硬件的支持没有Linux完备,所以并不适合作为桌面系统。
如果你需要的是一个非常非常稳定的服务器系统,那么你的唯一选择就是FreeBSD。
最后,至于linux做嵌入式开发,只要自己用的习惯就好。但在配置时有关开发包支持范围及方便程度来说,现在较常用debian、Fedora、Ubuntu这三种linux做嵌入式开发。
几个比较经典的Linux发行版本的下载地址
Debian ISO 映像文件地址:http://www.debian.org/distrib/。
gentoo镜像文件地址:http://www.gentoo.org/main/en/where.xml。
Ubuntu ISO 映像文件地址:http://www.ubuntu.com/douwnload。
任务四 Linux运维职业生涯规划
云计算和大数据时代的来临,未来对运维人员的要求只能是越来越高,多次看到“学会运维自动化、走遍天下都不怕”给人一种运维不自动化就不是运维,企业不云计算就不叫企业。事实并非如此,很多技术只能说是一个趋势,并未形成大势。只不过作为技术的我们需要关注未来的趋势,在空闲的时间去掌握这些技术。对于高级运维来说,不仅需要丰富的知识体系还需要一线的经验,所以说精通还是很难的,不是我们看到很多刚毕业的学生在简历中写出了各种精通,由于是高级Linux运维,不经过多年的锻炼是达不到较高的境界。所以高级运维是稀缺型人才,对于企业来说也很难找到适合自己的人才。高级运维是一个非常专业职位,高级运维需要掌握相当多的知识,包括但不限于网络技术、系统编程、运维流程及思想、虚拟化、自动化运维体系构建、数据库管理,云计算平台应用,大数据等。