序言
Linux正在茁壮成长! Red Hat总是处于Linux革命的最前沿。这一切得益于Red Hat认证系统管理员考试(Red Hat Certified System Administrators, RHCSA)和Red Hat认证工程师考试(Red Hat Certified Engineers, RHCE)。
在当前经济复苏时期,商业、教育和政府等机构都怀有强烈的成本意识。他们都希望能够控制自己的操作系统。Linux——甚至Red Hat企业版的Linux(Red Hat Enterprise Linux)——都有助于节省成本。Linux的开源特性允许用户控制和定制自己的操作系统,其定制程度要高于其他系统。虽然购买Red Hat企业版Linux需要付费,但是其成本还包括以后的更新和支持。有了KVM,能在单台物理计算机上安装多个虚拟的、相互独立的RHEL系统(及其他操作系统)。许多公司已把众多塞满各种物理系统的房间转换为只包含有限几个系统的小机柜。在每个系统里都安装了许多虚拟机。作为Red Hat认证的系统管理员和工程师(RHCSA和RHCE),我们也可以投身到这场变革中。
虽然RHEL的支持版本也需要成本,但是用户可以不需要为这个成本付费。正如后面将要指出的,可使用试用版或开发订阅版,或者由相同源代码构建的、免费使用的RHEL重构版本。
实际经验
重构版本是由第三方根据相同的源代码生成得到的软件。另一方面,克隆版本是由不同源代码生成得到的软件。
安全是许多公司选择Linux的另一个理由。美国国家安全局已经开发出自己的Linux内核版本,它在名为安全增强型Linux(Security-Enhanced Linux, SELinux)的系统里提供了基于上下文的安全。RHEL已经把SELinux当作分层安全策略的一个重要组成部分。
通过RHCSA和RHCE认证考试并不容易。根据现有的数据,不到50%的考生在第一次参加RHCE考试时能够通过。但是读者不要被这个统计数字吓跑。虽然无法保证,但是本书可以帮助读者准备并通过RHCSA和RHCE认证考试。本书介绍的技术同样可以应用到读者日常的系统管理工作中。需要记住,本书无意取代后面将要介绍的Red Hat培训课程(Red Hat Prep Courses)。
为准备Red Hat认证考试,需要准备一个至少由3台Linux计算机组成的网络。由于RHCSA考试的重点是虚拟机,因此建议读者把其中两台Linux计算机用作KVM系统。配置了网络服务后,可通过另一台计算机检查操作结果。
如何获得Red Hat企业版Linux操作系统
Red Hat考试测验考生对Red Hat企业版Linux操作系统的知识。但是现在有一个重要的变化,RHCSA认证目标规定了几个与虚拟机有关的考试目标。RHEL 7使用基于内核的虚拟机(Kernel-based Virtual Machine, KVM)。Red Hat只支持64位CPU物理计算机上的KVM虚拟主机。因此,为掌握RHCSA认证中与KVM有关的内容,读者需要一个能够处理RHEL 7的64位版本的硬件系统(但是,这应该不会是一个问题,除非读者在10年前的Pentium CPU上运行RHEL)。
读者可能需要在此64位硬件系统上安装两个或两个以上的虚拟机。虚拟机在多CPU系统或多核CPU系统上运行起来可能更好。因此,为避免因硬件缘故而影响读者的学习,建议读者的64位硬件系统至少要有8GB的RAM,16GB的RAM也许会更好(我们是在8GB RAM的64位硬件系统上撰写本书的)。因为RHCSA认证目标要求掌握从Red Hat网络和其他系统执行安装和更新,所以可能需要购买RHEL订阅版。但是,对于学习其他所有目标,重构发行版就足够了。如果读者希望获得一个完整的订阅版(它可以帮助读者测试与Red Hat网络有关的功能),则它的价格取决于硬件技术和技术支持的级别。
对于Red Hat企业版Linux 7, Red Hat修改为以下几个不同的版本:
● RHEL服务器版本为3种不同类型的CPU架构提供了不同级别的技术支持:
• 基于AMD和Intel CPU的32位和64位系统。其价格取决于CPU插槽数和支持虚拟访客的数量。
• IBM POWER7系统,其价格取决于CPU插槽数。
• IBM z系统。
● RHEL桌面(RHEL Desktop)系统,它为工作站提供了各个级别的技术支持。
● RHEL开发人员套件提供了RHEL 7和几个增件软件的下载访问,但只能将这些软件用于开发目的。
● RHEL增件可用于高可用性、弹性存储和负载均衡及其他领域。
本书是在RHEL 7服务器上完成的。RHEL 7开发人员套件是一个价格适中的选项,包含了准备RHCSA和RHCE考试所需的服务器程序包。虽然RHEL是根据开源许可协议发布的,但这只是指开源代码而已。访问二进制程序包需要购买一个订阅服务。
企业级操作系统的一个优点是它的稳定性。当一个企业把自己的操作系统升级到RHEL 7时,就是利用了这种稳定性,只需要一次性更新整个系统的配置。之后的安全升级和bug修正都可以自动完成。为此,Red Hat采取各种措施,避免强制出现这样的情形:企业只是为了一个修改版本(如RHEL 7.1)而更新自己的系统。如果一个企业对每个修改版本都要修订自己的配置文件,则Red Hat企业版操作系统的成本会大大增加。
出于同样的理由,修改版本也不会影响Red Hat考试目标。虽然RHEL 7.2包含了bug修改程序,集成了安全的更新程序,并提供了新功能,但是并没有改变配置文件的任何默认参数(本书后面将要介绍)。
即使在未来几个月里,Red Hat不断推出RHEL 7.3、RHEL 7.4等修改版本,我们预料情况还是一样。我们在近10年里一直监测RHEL版本,发现没有迹象表明认证目标因修改版本而发生变化。如果读者对此感到怀疑,则可以仔细分析www.redhat.com/en/services/ certification/rhcsa和www.redhat.com/en/services/certification/rhce网页上的考试目标。
如果读者学习本书只是为了参加Red Hat认证考试,则Linux的产品网站上提供了试用版的订阅服务。例如在www.redhat.com/rhel/server网页里有一个“Free Evaluation Software”(免费评估软件)链接。但是,它要求用户必须使用Red Hat Customer Portal账户。虽然试用订阅版只支持30天的更新,但是利用重构发行版本的镜像储存库也可以测试更新内容。在试用期内,从这里还可以像付费Red Hat用户那样下载由相同源代码生成的操作系统。
如果读者是学生或培训机构的成员,也就是使用.edu电子邮件地址的用户,则可以使用学术订阅版本。还可以使用RHEL开发人员套件,它包含RHEL 7和几个增件软件。在撰写本书时,RHEL开发人员套件的订阅价格为99美元(没有技术支持),相比标准的RHEL服务器订阅(349美元),折扣力度很大。
如果读者没有.edu电子邮件地址,也没有购买RHEL开发人员套件,那么可以考虑Red Hat企业版Linux的“重构”项目。几乎所有RHEL RPM程序包的源代码都是基于Linux通用公共许可证(Linux General Public License, GPL)或其他相关开源许可证发布的。这给任何用户提供了从Red Hat发布的源代码重构Red Hat企业版Linux的权利。
Linux的源代码是以Source RPM程序包格式发布的。这意味着,RPM程序包可以用rpmbuild命令生成。重构版本的所有开发人员都会修改源代码,删除其中的Red Hat商标。有些发行版本,如CentOS 7和Scientific Linux 7,免费供大众使用。另一些发行版本,如Oracle Linux,需要先注册,并且必须遵从美国出口控制法律等规定。
读者可以选择并下载最符合自己需要的重构版本。我们曾试用过好几个重构版本,包括Scientific Linux版本和社区企业操作系统(Community Enterprise Operating System, CentOS)。
RHEL的重构版本可以免费使用。虽然这些重构版本总是对RHEL源代码做微小修改(主要是删除Red Hat商标,用自己的商标取而代之),但是我们并没有发现这些修改可能会影响读者通过Red Hat认证考试。
● Scientific Linux 由费米国家加速器实验室和欧洲粒子物理研究所(CERN)的许多知识精英开发。万维网最重要的发明人之一,即Tim Berners-Lee,就是欧洲粒子物理研究所的成员之一。
● 社区企业版Linux 由www.centos.org小组开发的社区企业操作系统(Community Enterprise Operating System, CentOS)重构版本。这个小组可能拥有重构版本里最庞大的社区。CentOS项目在2014年加入了Red Hat社区,目前由Red Hat维护。
对于以Red Hat企业版Linux 7为基础的Red Hat认证考试,建议读者不要使用Fedora Linux。尽管RHEL 7基本上是建立在Fedora 19和Fedora 20之上的,但是这些发行版本有不少差别,可能引起考试内容的混乱。也不要使用Linux的其他发行版本,因为Red Hat认证考试是以Red Hat企业版Linux为基础的。在许多情况下,即使某种更改在其他Linux发行版里是标准的修改,也可能会给RHEL 7带来麻烦。
给使用本书的培训老师及其他人的建议
我希望每位读者仔细阅读本节内容。本书的组织形式便于一次只参加一门考试的读者学习。RHCSA和RHCE是两门不同的认证考试,本书的结构既允许学习其中任何一门考试,也允许同时学习两门考试。如果读者只是想参加RHCSA认证考试,则只需要阅读第1~第9章的内容。如果读者只想准备RHCE考试,则只需要阅读第1章、第2章和第10~第17章的内容。
许多考生(也许是绝大多数考生)要在规定的时间内完成RHCSA和RHCE考试操作可能会有困难。节省考试时间的方法之一是把事情简单化。虽然认真阅读考试题目是非常有必要的,但也不要做得太过头。例如,在RHCSA考试里不需要配置虚拟服务器。RHCE考试的一个目标是这样要求的:“只需要能够配置完成基本操作的服务”。
每一章都包含一些填空题。虽然Red Hat考试没有选择题或填空题,但是这些题目可以测验读者对各章内容的掌握程度。这些自测题强调读者的实践操作经验,因为这就是RHCSA考试所要求的。
同理,对于RHCE考试,也要尽量把事情简单化,除非有特殊要求。例如,只要求配置一个防火墙,允许某个指定的服务通过。简单的防火墙很快就能配置完毕。许多安全专家认为,越是简单的防火墙就越可靠。
有几个服务既属于RHCSA考试目标,也在RHCE目标里提到,因此这几个服务需要在多个章节里进行论述。例如,第4章讨论RHCSA中关于防火墙的考试目标,第10章则讨论了与这个主题相关的RHCE认证目标。
第1章和第2章专门为读者建立一个学习RHCSA和RHCE认证考试所需要的基本系统。这两章也会比较详细地介绍有关这两个认证考试的经验。一方面,这两章介绍了FTP服务器和HTTP服务器的配置;另一方面,也说明了如何从RHEL 7 DVD(作为安装服务器)配置文件。利用第7章提供的操作指示,读者应该能够把这个安装服务器设置为基于yum的储存库,安装与RHCE相关的服务的软件程序包。
如果读者正在准备RHCE认证考试,那么可能需要了解RHCSA某些方面的内容。事实上,RHCE部分的内容假定读者已按照第2章的操作指示建立起基于KVM的虚拟机,按第1章实验题2的要求建立起网络上的网络储存库,以及第7章介绍的储存库。
考试之前的准备
对于Red Hat考试,没办法临时抱佛脚。但是正如运动员在比赛之前需要做热身活动一样,读者也可在考试之前做“热身”活动。重温选定考试的每一个认证考试目标。复习每章末尾的“故障情景与解决方案”表。思考哪些软件需要安装,哪些文件需要配置,哪些命令比较难记。
记住,Red Hat的RHCSA和RHCE考试专门用来测试考生是否具有Linux系统管理员和工程师的能力。如果读者通过了其中一门考试,这并不是因为你死记硬背了一组答案,而是因为你具有Linux系统管理员的一套技能,以及在压力下(不管是考试压力还是来自于现实世界的压力)知道如何运用这些技能。
资料下载
本书的某些重要组成部分只出现在配书网站上;网址为http://www.tupwk.com.cn/downpage,进入该页面后输入中文书名或ISBN即可下载。另外,也可扫描封底的二维码下载资料。从第2章(实验题2)开始,实验题内容只能在配书网站上找到,而且实验题的格式允许读者在测试系统上读取它们。实验题的答案仍然出现在每章的末尾。在下载资料的/media/Chapter2、/media/Chapter3和/media/Chapter4等目录中可以找到这些实验题。
本书内容简介
RHCSA和RHCE是两门不同的认证考试。如果读者打算同时参加这两门考试,本书可以帮助读者掌握这两门考试之间的差别。例如,在第2章和第4章里会看到,作为客户端的Secure shell(SSH)是RHCSA的一个认证目标。另一方面,在第11章里我们会看到,作为服务器的Secure shell属于RHCE考试的一个目标。
虽然本书的组织方便了有经验的Linux和Unix专业人士深入学习RHCSA和RHCE考试内容,但是本书无意取代Red Hat培训课程。需要指出的是,本书无法取代实际的操作实践。尽管如此,本书的每一章讨论考试的某个重要专题,既强调系统管理员使用和维护RHEL的“原因”,也强调管理和维护的过程。由于RHCSA和RHCE目标(www.redhat.com/en/services/certification/rhcsa和www.redhat.com/en/services/certification/rhce)随RHEL新版本的推出(甚至有时在两个版本之间)而变化,因此读者要想了解最新信息,可以访问前面提到的URL。
Red Hat认为,要通过他们的考试,必须具有实际的操作经验,这种说法很正确!但是,对于RHCSA和RHCE考试,他们确实把重点放在Linux系统管理员的一套技能上,这可以由相应的认证目标看出。本书的目的是帮助读者充分发挥自己已掌握的技能——更重要的是,帮助读者掌握某些不熟悉的技能。
本书包括有关Red Hat企业版Linux 7(RHEL 7)的内容。RHEL 7在某些方面与RHEL 6相比有明显改进。两者之间的主要区别有:
● 新的服务管理器systemd提供了新功能,并且相比Upstart和原来的SysVinit系统,引导速度更快。
● RHEL 7的默认文件系统是XFS文件系统,支持最高500TB的文件系统。
● firewalld守护进程配置一个基于区域的防火墙。
● GNOME 3是默认的桌面环境。
● 可从RHEL 6直接升级。
还有更多的重要功能。本书也包括一些我们认为与RHCSA和RHCE考试有关的内容,这些内容也出现在Red Hat公开的教程或考试培训课程里。
在生产系统上,以root用户账户身份登录到系统是一个非常危险的做法,但是在考试期间,它是管理RHEL的最快捷方法。命令提示假定用户使用root用户账户。当登录到root账户时,则会看到如下所示的命令行提示:
[root@server1 root]#
由于这个提示的长度可能会导致本书里的代码换行或断行,因此本书把这个root账户的提示简化为:
#
特别需要注意,哈希标记(#)在Linux脚本和程序里用作注释字符。当我们以普通用户登录到Linux系统时,就会看到稍微不同的提示。假设采用michael用户登录到系统,则通常情形下系统的提示如下所示:
[michael@server1 michael]$
同样,我们把上面的提示简化为
$
书中有些命令会超出一行的长度,例如:
# virt-install -n outsider1.example.org -r 1024--disk path=/var/lib/libvirt/images/outsider1.example.org.img, size=16 -l ftp://192.168.122.1/pub/inst -x ks=ftp://192.168.122.1/pub/ks1.cfg
除非这个命令经过精心排列,否则换行符可能会出现在错误的位置,如出现在--disk开关前面的两个短划线之间。解决这个问题的方法之一是使用反斜杠符号(\),它转义表示其后的回车符(反斜杠也可以转义空格,因此可以方便地使用长文件名)。这样,虽然下面的内容看起来在4个不同的行里,但是根据反斜杠符号的作用,Linux会把它当作一个命令来处理。
# virt-install -n outsider1.example.org -r 1024--disk \ > path=/var/lib/libvirt/images/outsider1.example.org.img, size=16 \ > -l ftp://192.168.122.1/pub/inst \ > -x ks=ftp://192.168.122.1/pub/ks1.cfg
在一些代码段中,我们无法使用反斜杠把输出拆分到多行中。这种情况下,我们使用续行箭头,如下所示:
5 2 * * 6 root /usr/bin/tar --selinux -czf /tmp/etc-backup-\$(/bin/date ↲ +\%m\%d).tar.gz /etc > /dev/null
有时需要实际输入一个命令,或者在命令行里响应一个请求。在这种情形中,会看到“type y”这样的指示。或者,有些菜单要求按下一个键。例如,为进入口令提示,需要按下P键。这种情形下,当我们按下这个键时,屏幕上不会出现字母p。另外,尽管字母A看起来是大写,但实际是小写。相反,A表示大写A。
令有些出版商感到麻烦的是双短划线。有些排版软件把双短划线改为破折号。但是这会带来问题。双短划线经常出现在Linux的许多命令里。例如,下面的命令列出所有已安装在本地系统上的程序包:
# rpm --query --all
当我们在自己的RHEL 7系统上执行这个命令时,它列出了1300个程序包。
相反,下面的命令列出本地系统上所有程序包里的文件:
# rpm --query -all
当我们在自己的RHEL 7系统里执行上述命令时,它列出143000个文件。这个结果完全不同于前一个命令的结果。因此,读者必须注意书中的短划线。
备考知识点检查表
“前言”的最后列出备考知识点检查表(Exam Readiness Checklist)。这些表是为了方便读者交叉参考官方的考试目标而设计的。同时,这些检查表也可以帮助读者评估自己在开始学习时的专业水平。这样有利于读者检查自己的学习进展,确保在某些不熟悉或比较难的方面花较多的时间。检查表列出官方的考试目标、本书介绍这些考试目标的学习专题以及相关内容所在的章。
每章内容简介
为撰写好本书,我们专门建立了一套章节组成部分,目的是引起读者对书中重要内容的注意,强化重要的知识点,提供有用的考试提示。读者在每章里都会遇到以下符号:
● 每一章都以认证目标(Certification Objectives)开始——读者为了通过认证考试而需要在本章掌握的技能。在“目标”标题下确定该章的主要目标。因此只要读者看到这个标题,就知道它是一个考试目标。
● 考试提示(Exam Watch)用于引起读者对考试有关的信息以及可能存在的陷阱的注意。这些有用的提示信息都是由参加考试并获得认证的作者提供的——还有谁比他们更适合告诉你们考试的注意事项?他们经历了读者将要经历的一切过程。
● 每章都有实践练习题(Practice Exercises)。这些逐个步骤的练习让读者获得考试所需要的实际操作经验。它们也有助于读者掌握考试要点。不要只是看看这些题目而已,而是要动手完成这些操作题。实践是提高技能掌握水平最好的方法。记住,Red Hat考试完全是实践型考试,这些考试没有多选题。
● 实际经验(On the Job)栏说明了在实际情形中经常遇到的问题。“实际经验”栏提供了与认证考试和实际产品有关的、十分有用的经验,它们指出了常见的错误和工作中经常讨论和经历的问题。
● 考试内幕(Inside the Exam)栏突出了在实际考试过程中经常遇到的和最容易混淆的问题。这个栏目是专为预测未来考试的重点内容而设计的,它帮助读者切实理解通过考试需要掌握的要点。如果读者多注意这些栏目里的内容,并且完成那些比较难理解的实验题,就会比其他考生更有优势。
● 故障情景与解决方案(Scenario & Solution)栏以便于阅读的表的形式列出了可能存在的问题及解决方案。
● 认证小结(Certification Summary)总结了本章的内容,复习本章中与考试有关的重要技能。
● 每章末尾的应试要点(Two-minute Drill)是本章重要知识点的检查表。可以在考试前的最后时刻做这些练习。
● 自测题(Self Test)帮助读者测评自己对与认证考试有关的实用知识的掌握程度。这些自测题的答案以及说明都在每章的末尾给出。在阅读每章之后做这些自测题可以巩固你在每章学到的知识。本书并不打算提供多选题,因为Red Hat考试并没有这样的题目。
● 自测题之后的实验题(Lab Question)提供了独一无二的和具有挑战性的操作练习。要回答这些题目,读者需要综合利用本章的知识。这些问题比较复杂,而且综合性较强,它们用来测试读者对本章全部内容的掌握程度以及把它们应用于复杂的真实情形的能力。从第2章的实验题2开始,所有实验题都只出现在配书网站上,采用与Red Hat考试相一致的电子格式。记住,Red Hat考试只有实验题!如果读者能够完成这些实验题,则说明读者已经掌握相关主题。
附加资源
有些读者可能还想深入研究Linux。深入研究Linux的最佳方法是阅读Red Hat的帮助文档。我们有关RHEL 7的很多知识都来自https://access.redhat.com/documentation/en/red-hat-enterprise-linux/上的帮助文档。对于读者,以下也许是比较有用的指南:
● 安装指南 虽然Red Hat考试使用预先配置好的系统,但是安装指南还是包含了有关Kickstart的详细信息。
● 系统管理指南 系统管理指南包含Red Hat给出的如何为完成基本操作配置服务的建议。
● SELinux用户和管理员指南 安全增强型Linux指南详细介绍了帮助进一步提高SELinux策略安全的各种选项。
几点建议
当读者读完本书之后,最好花点时间对本书内容做全面总结。读者可能以后经常需要翻看本书,应用本书提供的很多方法:
● 重读书中的全部“考试提示” 记住由参加并通过考试的作者们提供的注意事项。他们知道你们所需要的知识——以及应该注意哪些问题。
● 复习所有的故障情景与解决方案 找到快速解决问题的方法。
● 重做自测题 重点是实验题,因为Red Hat考试没有多选题(或填空题)。本书提供的自测题只是为了测验读者是否掌握了每一章的实践性知识。
● 完成练习 读者是否读完每章后就立刻做后面的练习呢?如果没有,则必须这样做。这些练习包括了考试的主要内容。掌握这些内容的最好方法莫过于实践操作。对于每个练习里的每一步操作,都要问为什么。如果发现自己对某个问题还没有弄清楚,则重读该章相应的内容。