Linux就该这么学
上QQ阅读APP看书,第一时间看更新

前言

本书作者刘遄(Liu Chuán)从事于Linux运维技术行业,高中时期便因兴趣的驱使而较早地接触到了Linux系统并开始学习运维技术,并且在2012年获得红帽工程师RHCE 6版本证书,在2015年初又分别获得红帽工程师RHCE 7版本证书与红帽架构师认证RHCA顶级证书。

尽管如此,但依然深知水平有限且技术一般,若不是得益于良师益友的无私帮助,肯定不能如此顺利地取得上述成绩。并且,作为一名普通的技术人,我亲身经历过半夜还在培训班的心酸,体验过拥堵6小时车程的无奈,也翻看过市面上十几本如同嚼蜡般的Linux技术书籍,这让我更加坚定了写作本书的信念。此刻,我正是怀揣着一颗忐忑的心,尽自己最大的努力把有用的知识分享给读者,希望你们能够少走一些弯路,更快地入门Linux系统。

窃以为,一名技术高超的导师不应该仅仅是技术的搬运工,而应该是优质知识的提炼者,所以在写作本书的过程中,我不希望也不会将自己了解掌握的所有技术知识都写到书里,借此来炫技,而是从真正贴近于新人学习特点的角度出发,主动摒弃了不实用的部分,并把重点、难点反复实践,以加深读者对理论基础的理解,并彻底掌握生产环境中用到的技术内容。

本书基于最新的Linux系统RHEL 7编写而成,而且配套软件及资料完全免费,课程面向Linux新手。本书会从零基础带领读者入门Linux系统,然后渐进式地提高内容难度,使其匹配生产环境对运维人员的要求。而且,本书每章都配套有大量的图、表、命令示例以及课后习题,以达到增强读者学习兴趣与加深记忆的效果。最后,本书以及配套资源相较于当前的RHCE培训,至少要多出40%的内容,只要您能每天坚持学习,相信这绝对是您体验最佳、进步最快的一次学习经历。

最后想说的是,我的写作初心其实并不高雅,只是在还债,还十几年来中国有如此多的培训机构赚了那么多钱,但却没有培训机构真正给学员提供一本好教材的债,而这应该是我们的学员早就应该享受的服务,不能再选择性失明了。而到了2017年,我的写作初衷也融入了一点小私心,除了运营好《Linux就该这么学》图书的在线学习网站http://www.linuxprobe.com/,服务更多的学员和读者之外,还要把我们的免费开源图书做到远超其他培训机构收费教材的水平,并坚持做中国开源站点的道德典范,不欺骗,不作恶,保持最纯净的技术交流环境,而我们想要得到的也很简单——如果您认可了刘遄老师的付出并满意我们的服务,还请把本书告诉身边的朋友,让更多的人知道我们在做的这件很酷的事。

学习是件苦差事

我不想回避这个问题——学习是件痛苦的事情。如果说学习Linux真的很简单,那必是骗子的谎言,起码这不能给您带来高薪。在每次起床后的几分钟时间里,大脑都会陷入斗争状态——是该聊会天呢,还是要追个美剧呢,还是打一局英雄联盟呢,还是看一下那该死的刘遄写的那本可怕的Linux教材呢?这个时候,请不要忘记自己最初的梦想。十年后的你,一定会感激现在拼命努力学习的自己。身为作者,我的使命就是让本书对得起你为此花费的时间、精力和金钱,让你每学完一个章节都是一次进步。

稻盛和夫先生在《活法》中有段一直激励着我的话,现在转送给正在阅读本书的你:


“工作马马虎虎,只想在兴趣和游戏中寻觅快活,充其量只能获得一时的快感,绝不能尝到从心底涌出的惊喜和快乐,但来自工作的喜悦并不像糖果那样——放进嘴里就甜味十足,而是需要从苦劳与艰辛中渗出,因此当我们聚精会神,孜孜不倦,克服艰辛后的成就感,世上没有哪种喜悦可以类比”。

“更何况人类生活中工作占据了较大的比重,如果不能从劳动中、工作中获得充实感,那么即使从别的地方找到快乐,最终我们仍然会感到空虚和缺憾”。

开源共享精神

简单来说,开源软件的特点就是把软件程序与源代码文件一起打包提供给用户,让用户在不受限制地使用某个软件功能的基础上还可以按需进行修改,或编制成衍生产品再发布出去。用户具有使用自由、修改自由、重新发布自由以及创建衍生品的自由。这也正好符合了黑客和极客对自由的追求,因此国内外开源社区的根基都很庞大,人气也相当高。

坦白来讲,每位投身于Linux行业的技术人或者程序员只要听到开源项目就会由衷地感到自豪,这是一种从骨子里带有的独特情怀。开源的企业不单纯是为了利益,而是互相扶持,努力服务好更多的用户。开源软件最重要的特性有下面这些。

低风险:使用闭源软件无疑把命运交付给他人,一旦封闭的源代码没有人来维护,你将进退维谷;而且相较于商业软件公司,开源社区很少存在倒闭的问题。

高品质:相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编写、维护、测试的用户量众多,一般的bug还没有等爆发就已经被修补。

低成本:开源工作者都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献一份力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。

更透明:没有哪个笨蛋会把木马、后门等放到开放的源代码中,这样无疑是把自己的罪行暴露在阳光之下。

但是,如果开源软件为了单纯追求“自由”而牺牲程序员的利益,这将会影响程序员的创造激情,因此世界上现在有60多种被开源促进组织(Open Source Initiative)认可的开源许可协议来保证开源工作者的权益。对于那些只知道一味抄袭、篡改、破解或者盗版他人作品的不法之徒,终归会在某一天收到法院的传票。对于准备编写一款开源软件的开发人员,也非常建议先了解一下当前最热门的开源许可协议,选择一个合适的开源许可协议来最大限度保护自己的软件权益。

GNU GPL(GNU General Public License, GNU通用公共许可证):只要软件中包含了遵循GPL协议的产品或代码,该软件就必须也遵循GPL许可协议且开源、免费,因此这个协议并不适合商用软件。遵循该协议的开源软件数量极其庞大,包括Linux系统在内的大多数的开源软件都是基于这个协议的。GPL开源许可协议最大的4个特点如下所示。

复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。

传播自由:允许软件以各种形式进行传播。

收费传播:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲,开源软件都是通过为用户提供有偿服务的形式来盈利的。

修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL许可协议授权。

BSD(Berkeley Software Distribution,伯克利软件发布版)许可协议:用户可以使用、修改和重新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售,前提是需要满足下面3个条件。

◆ 如果再发布的软件中包含源代码,则源代码必须继续遵循BSD许可协议。

◆ 如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了BSD协议。

◆ 不允许用原始软件的名字、作者名字或机构名称进行市场推广。

Apache许可证版本(Apache License Version)许可协议:在为开发人员提供版权及专利许可的同时,允许用户拥有修改代码及再发布的自由。该许可协议适用于商业软件,现在热门的Hadoop、Apache HTTP Server、MongoDB等项目都是基于该许可协议研发的,程序开发人员在开发遵循该协议的软件时,要严格遵守下面的4个条件。

◆ 该软件及其衍生品必须继续使用Apache许可协议。

◆ 如果修改了程序源代码,需要在文档中进行声明。

◆ 若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息。

◆ 如果再发布的软件中有声明文件,则需在此文件中标注Apache许可协议及其他许可协议。

MPL(Mozilla Public License, Mozilla公共许可)许可协议:相较于GPL许可协议,MPL更加注重对开发者的源代码需求和收益之间的平衡。

MIT(Massachusetts Institute of Technology)许可协议:目前限制最少的开源许可协议之一,只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件所使用。

为什么学习Linux系统

早在20世纪70年代,UNIX系统是开源而且免费的。但是在1979年时,AT&T公司宣布了对UNIX系统的商业化计划,随之开源软件业转变成了版权式软件产业,源代码被当作商业机密,成为专利产品,人们再也不能自由地享受科技成果。

于是在1984年,Richard Stallman面对于如此封闭的软件创作环境,发起了GNU源代码开放计划并制定了著名的GPL许可协议。1987年时,GNU计划获得了一项重大突破——gcc编译器发布,这使得程序员可以基于该编译器编写出属于自己的开源软件。随之,在1991年10月,芬兰赫尔辛基大学的在校生Linus Torvalds编写了一款名为Linux的操作系统。该系统因其较高的代码质量且基于GNU GPL许可协议的开放源代码特性,迅速得到了GNU计划和一大批黑客程序员的支持。随后Linux系统便进入了如火如荼的发展阶段。

1994年1月,Bob Young在Linux系统内核的基础之上,集成了众多的源代码和程序软件,发布了红帽系统并开始出售技术服务,这进一步推动了Linux系统的普及。1998年以后,随着GNU源代码开放计划和Linux系统的继续火热,以IBM和Intel为首的多家IT企业巨头开始大力推动开放源代码软件的发展。到了2017年年底,Linux内核已经发展到了4.13版本,并且Linux系统版本也有数百个之多,但它们依然都使用Linus Torvalds开发、维护的Linux系统内核。RedHat公司也成为了开源行业及Linux系统的带头公司。


在讲课时,我经常会问同学们一个问题:“为什么学习Linux系统?”很多学生为了让我高兴,直接就说“因为Linux系统是开源的,所以要去学习”。其实这个想法是完全错误的!开源的操作系统少说有100个,开源的软件至少也有十万个,为什么不去逐个学习?所以上面谈到的开源特性只是一部分优势,并不足以成为您付出精力去努力学习的理由。

对于用户来讲,开源精神仅具备锦上添花的效果,因此正确的学习动力应该源自于:Linux系统是一款优秀的软件产品,具有类似UNIX的程序界面,而且继承了UNIX的稳定性,能够较好地满足工作需求。

大多数读者应该都是从微软的Windows系统开始了解计算机和网络的,因此肯定会有这样的想法“Windows系统很好用啊,而且也可足以满足日常工作需求呀”。客观来讲,Windows系统确实很优秀,但是在安全性、高可用性与高性能方面却难以让人满意。您应该见过下面这张图片。

想必读者现在已经能猜到,为什么要在需要长期稳定运行的网站服务器上、在处理大数据的集群系统中以及需要协同工作的环境中采用Linux系统了。通过下图也可以看出Linux系统相较于Windows系统的具体优势。

常见的Linux系统版本

在介绍常见的Linux系统版本之前,首先需要区分Linux系统内核与Linux发行套件系统的不同。

Linux系统内核指的是一个由Linus Torvalds负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。

Linux发行套件系统是我们常说的Linux操作系统,也即是由Linux内核与各种常用软件的集合产品。

全球大约有数百款的Linux系统版本,每个系统版本都有自己的特性和目标人群,下面将可以从用户的角度选出最热门的几款进行介绍。

注:

本书全篇将以“Linux系统”来替代“Linux发行套件系统”这个词。

红帽企业版Linux(RedHat Enterprise Linux, RHEL):红帽公司是全球最大的开源技术厂商,RHEL是全世界内使用最广泛的Linux系统。RHEL系统具有极强的性能与稳定性,并且在全球范围内拥有完善的技术支持。RHEL系统也是本书、红帽认证以及众多生产环境中使用的系统。

社区企业操作系统(Community Enterprise Operating System, CentOS):通过把RHEL系统重新编译并发布给用户免费使用的Linux系统,具有广泛的使用人群。CentOS当前已被红帽公司“收编”。

Fedora:由红帽公司发布的桌面版系统套件(目前已经不限于桌面版)。用户可免费体验到最新的技术或工具,这些技术或工具在成熟后会被加入到RHEL系统中,因此Fedora也称为RHEL系统的“试验田”。运维人员如果想时刻保持自己的技术领先,就应该多关注此类Linux系统的发展变化及新特性,不断改变自己的学习方向。

openSUSE:源自德国的一款著名的Linux系统,在全球范围内有着不错的声誉及市场占有率。

Gentoo:具有极高的自定制性,操作复杂,因此适合有经验的人员使用。读者可以在学习完本书后尝试一下该系统。

Debian:稳定性、安全性强,提供了免费的基础支持,可以良好地支持各种硬件架构,以及提供近十万种不同的开源软件,在国外拥有很高的认可度和使用率。

Ubuntu:是一款派生自Debian的操作系统,对新款硬件具有极强的兼容能力。Ubuntu与Fedora都是极其出色的Linux桌面系统,而且Ubuntu也可用于服务器领域。

现在国内大多数Linux相关的图书都是围绕CentOS系统编写的,作者大多也会给出围绕CentOS进行写作的一系列理由,但是很多理由都站不住脚,根本没有剖析到CentOS系统与RHEL系统的本质关系。CentOS系统是通过把RHEL系统释放出的程序源代码经过二次编译之后生成的一种Linux系统,其命令操作和服务配置方法与RHEL完全相同,但是去掉了很多收费的服务套件功能,而且还不提供任何形式的技术支持,出现问题后只能由运维人员自己解决。经过这般分析基本上可以判断出,选择CentOS的理由只剩下——免费!当人们大举免费、开源、正义的旗帜来宣扬CentOS系统的时候,殊不知CentOS系统其实早在2014年年初就已经被红帽公司“收编”,当前只是战略性的免费而已。再者说,根据GNU GPL许可协议,我们同样也可以免费使用RHEL系统,甚至是修改其代码创建衍生产品。开源系统在自由程度上没有任何差异,更无关道德问题。

本书是基于最新的RHEL 7系统编写的,书中内容及实验完全通用于CentOS、Fedora等系统。也就是说,当您学完本书后,即便公司内的生产环境部署的是CentOS系统,也照样可以搞得定。更重要的是,本书配套资料中的ISO镜像与红帽RHCSA及RHCE考试基本保持一致,因此更适合备考红帽认证的考生使用。

随书配备的ISO镜像文件下载地址:http://www.linuxprobe.com/tools

深度评解红帽RHCSA、RHCE、RHCA认证:http://www.linuxprobe.com/redhat-certificate

优秀的RHEL 7系统

注:

本小节的内容是我在2015年写给学员的一篇文章,现在RHEL 7系统已经经过近三年的迭代更新,此时再回看这篇文章,发现我的预测还是很准确吧。当前,国内大多数机房都已经部署了RHEL 7系统,国内外多家银行机构、保险公司系统也纷纷上线CentOS 7或RHEL 7系统,但我依然想引用这篇文章来帮助读者了解RHEL 7系统,而且我也深信这篇文章同样也会适用于未来的RHEL 8系统。

2014年年末,RedHat公司推出了当前最新的企业版Linux系统——RHEL 7,彼时国内外各大媒体都给了不少特写镜头,行业也给予了硕大的期待。但是,时至今日RHEL 7系统的市场占有率却一直不温不火,于是有人开始对RHEL 7系统的未来表示担心,甚至有人还拿出各种论调来唱衰Linux系统,觉得开源厂商已经过了事业最高点,要在服务器领域让步于Windows系统了。这些话其实并没必要去反驳,任何一个产品都会有其拥趸和黑粉,时间会向所有人证明一切。我们现在只是来单纯地聊一聊这个RHEL 7系统。

在正式开聊之前,希望读者对Linux系统特性和运维领域有基本的了解,知道Linux系统在服务器领域中占据着不可小觑的市场份额,认识到RedHat厂商对Linux系统及整个开源行业的重要影响,更知道CentOS系统其实是RHEL系统的衍生品。如果以前使用过一段时间的RHEL 7系统,我们就更能顺畅地讨论“红帽Linux系统是否是一个失败的产品”这个问题。

我们先来看一个烫手的热议问题:“为什么半年过去了,RHEL 7系统的市场份额依然不温不火?要不要返回去学习老版本的Linux系统?”甚至有阴谋论说美国在使用新版本的Linux系统来搜集全球信息,告诫我们千万不要去碰。这个问题必须要回应,否则更多的阴谋论会层出不穷,甚至会让国内某些认知能力欠缺的媒体对开源行业产生误解甚至曲解。

基于前面提到的与读者共有的经验共识和篇幅限制,下面的论证速度会比较快,也会很有意思。首先,RHEL是企业版的服务器系统而不是用来玩耍折腾的桌面机系统,更何况作为桌面操作系统的Windows 7在2009年7月14日发布之后,整整用了3年才开始真正普及,难道在2009年到2013年间,Windows 7就是失败的产品吗?再者,RHEL 7系统创新式地集成了Docker虚拟化技术,支持XFS文件系统,兼容微软的身份管理,并采用systemd作为系统初始化进程,其性能和兼容性相较于之前版本都有了很大的改善,很明显是一款非常优秀的操作系统。最后,其实单从纳入OpenStack和Docker的决策上来讲,就应该相信红帽的开发团队不是在闭门造车。因此应该重新考虑到底是哪里出了问题。

运维人员在心里经常会想:“现在的环境跑得好好的,为什么要换呢?”重新部署生产环境不是说装上操作系统万事大吉,也不是把软件随便安装上就能拍屁股走人的,还要考虑升级带来的风险。

日后的生产环境出了问题,谁来负责?

旧的软件依然能否与新系统兼容?

新的系统或软件是否有bug?

安全性如何,审计怎么做?

之前购买的第三方技术支持是否可以具备相应的能力?

升级后是否会影响到某些软件的版权,是否需要重新付费?

不习惯新系统带来的变化怎么办?

费力升级后对自己有什么好处?

……

客观来讲,这次RHEL 7系统的改变实在太大,最重要的是它采用了systemd作为初始化进程。这样一来,几乎之前所有的运维自动化脚本都需要修改。那么,到底还要不要升级到RHEL 7?当然,也不是说服务器机房中的生产环境从不更新换代,当工作需求超过了当前版本的能力范围时,就必须要进行升级。比如,rsyslogd日志记录服务在RHEL 6系统中的版本是5.8,而现在最新的版本已经是8.1。这两个版本之间差了3个大的主版本号,其功能就有了很大的差距,您觉得会一直用旧的版本吗?

早在2014年年初,Fedora系统首次采用了systemd系统初始化进程,当时我就断言RHEL 7系统也会使用systemd,所以当即更新了自己的培训课程。这也让身在其他培训机构还在学习init参数的用户新生艳羡。所以,不论是学习Linux还是编程语言,都应该选择当前稳定且最新的版本作为学习环境。

稳定:无论是进行开发还是运维,稳定压到一切。

最新:老版本可能会有更大的概率存在安全漏洞或者功能缺陷,而新版本不仅出现漏洞的概率小,而且即便出现漏洞,也会快速得到众多开源社区和企业的响应并更快地修复。

我每次在公开场合讲座时都会表达这样一个观点:“我们并不是因为开源而喜欢Linux,而是因为Linux系统真的非常优秀,开源精神仅仅是锦上添花而已。”我们在前文中已经狠狠地肯定了Linux系统对运维行业甚至是对世界的影响。大家要做的就是去相信我对运维行业未来发展的判断,然后放手来学习吧。

了解红帽认证

红帽公司成立于1993年,是全球首家收入超10亿美元的开源公司,总部位于美国,分支机构遍布全球。红帽公司作为全球领先的开源和Linux系统提供商,其产品已被业界广泛认可并使用,尤其是RHEL系统在业内拥有超高的Linux系统市场占有率。红帽公司除了提供操作系统之外,还提供了虚拟化、中间件、应用程序、管理和面向服务架构的解决方案。

红帽认证是由红帽公司推出的Linux认证,该认证被认为是Linux行业乃至整个IT领域价值最高的认证之一。红帽认证考试全部采用上机形式,在考察学生基础理论能力的同时还考察了实践动手操作以及排错能力。红帽公司针对红帽认证制定了完善的专业评估与认证标准,其认证主要包括红帽认证系统管理员(RHCSA)、红帽认证工程师(RHCE)与红帽认证架构师(RHCA)。

2014年6月10日,红帽公司在发布新版红帽企业版系统(RHEL 7)的当天即在红帽英文官网更新了其对RHCSA与RHCE培训政策的调整,考生只有先通过红帽RHCSA认证后才能考取红帽RHCE认证。

红帽认证进阶等级图

红帽认证系统管理员(Red Hat Certified System Administrator, RHCSA)属于Linux系统的初级认证,比较适合Linux爱好者。该认证要求考生对Linux系统有一定的了解,并且能够熟练使用Linux命令来完成以下任务:

管理文件、目录、文档以及命令行环境;

使用分区、LVM逻辑卷管理本地存储;

安装、更新、维护、配置系统与核心服务;

熟练创建、修改、删除用户与用户组,并使用LDAP进行集中目录身份认证;

熟练配置防火墙以及SELinux来保障系统安全。

红帽认证管理员(RHCSA)证书示例

红帽认证工程师(Red Hat Certified Engineer, RHCE)属于Linux系统的中级水平认证,难度相对RHCSA认证来讲更大,而且要求考生必须已获得RHCSA认证。该认证适合有基础的Linux运维管理员,主要考察对下列服务的管理与配置能力:

熟练配置防火墙规则链与SElinux安全上下文;

配置iSCSI(互联网小型计算机系统接口)服务;

编写Shell脚本来批量创建用户、自动完成系统的维护任务;

配置HTTP/HTTPS网络服务;

配置FTP服务;

配置NFS服务;

配置SMB服务;

配置SMTP服务;

配置SSH服务;

配置NTP服务。

红帽认证工程师(RHCE)证书示例

红帽认证架构师(Red Hat Certified Architect, RHCA)属于Linux系统的最高级别认证,是公认的Linux操作系统顶级认证,目前中国仅有不到1000人(2017年更新数据)持有该认证。考生需要在获得RHCSA与RHCE认证后再完成5门课程的考试才能获得RHCA认证,因此难度最大,备考时间最长,费用也最高(考试费约在1.8万元~2.1万元人民币)。该认证考察的是考生对红帽卫星服务、红帽系统集群、红帽虚拟化、系统性能调优以及红帽云系统的安装搭建与维护能力。

红帽认证架构师(RHCA)证书示例

RHCA高分技巧

红帽RHEL 7版本的RHCA认证需要完成至少5门考试。这5门考试的时间不同,但均为210分合格(70%)。而且红帽公司非常注重RHCA架构师认证的实用性,所以课程总是在随行业趋势而不断调整。

下表为2017年最新版的考试课程。欲取得红帽RHCA认证,您必须通过以下任意5门认证考试。

本书组织结构

第1章,部署虚拟环境安装Linux系统:从零基础详细讲解了虚拟机软件与红帽Linux系统,完整演示了VM虚拟机的安装与配置过程,以及红帽RHEL 7系统的安装、配置过程和初始化方法。此外,本章还涵盖了在Linux系统中找回root管理员密码、RPM与Yum软件仓库的知识,以及RHEL 7系统中systemd初始化进程的特色与使用方法。

第2章,新手必须掌握的Linux命令:本章首先介绍系统内核和Shell终端的关系与作用,然后介绍bash解释器的4大优势并学习Linux命令的执行方法。本章还精挑细选了数十个Linux命令,它们与系统工作、系统状态、工作目录、文件、目录、打包压缩与搜索等主题相关。学习这些最基础的Linux命令,可以为今后学习更复杂的命令和服务做好必备知识铺垫。

第3章,管道符、重定向与环境变量:本章讲解了与文件读写操作有关的重定向技术的5种模式,让读者通过实验切实理解每个重定向模式的作用,解决输出信息的保存问题;然后深入讲解了管道命令符,帮助读者掌握命令之间的搭配使用方法,进一步提高命令输出值的处理效率;随后通过讲解Linux系统命令行中的通配符和常见转义符,让您输入的Linux命令具有更准确的意义,为下一章学习编写Shell脚本打好功底。

第4章,Vim编辑器与Shell命令脚本:本章讲解了如何使用Vim编辑器来编写、修改文档,然后通过逐个配置主机名称、系统网卡以及Yum软件仓库参数文件等实验,帮助读者加深Vim编辑器中诸多命令、快捷键、模式切换方法的理解;然后把前面章节中讲解的Linux命令、命令语法与Shell脚本中的各种流程控制语句通过Vim编辑器写到Shell脚本中结合到一起,实现最终能够自动化工作的脚本文件;本章最后演示了怎样通过at命令与crond计划任务服务来分别实现一次性的系统任务设置和长期性的系统任务设置,从而让日常的工作更加高效,更自动化。

第5章,用户身份与文件权限:本章详细讲解了文件的所有者、所属组以及其他人可对文件进行的读(r)写(w)执行(x)等操作,以及如何在Linux系统中添加、删除、修改用户账户信息。我们还可以使用SUID、SGID与SBIT特殊权限更加灵活地设置系统权限功能,来弥补对文件设置一般操作权限时所带来的不足。隐藏权限能够给系统增加一层隐形的防护层,让黑客最多只能查看关键日志信息,而不能进行修改或删除。而文件的访问控制列表(Access Control List, ACL)可以进一步让单一用户、用户组对单一文件或目录进行特殊的权限设置,让文件具有能满足工作需求的最小权限吧。本章最后还将讲解如何使用su命令与sudo服务让普通用户具备超级管理员的权限,不仅可以满足日常的工作需求,还可以确保系统的安全性。

第6章,存储结构与磁盘划分:本章详细地分析了Linux系统中最常见的Ext3、Ext4与XFS文件系统的不同之处,并带领各位读者着重练习硬盘设备分区、格式化以及挂载等常用的硬盘管理操作,以便熟练掌握文件系统的使用方法。在打下坚实的理论基础与完成一些相关的实践练习后,我们还将进一步完整地部署SWAP(交换)分区、配置quota磁盘配额服务,以及掌握ln命令带来的软硬链接。

第7章,使用RAID与LVM磁盘阵列技术:本章深入讲解了各个常用RAID技术方案的特性,并通过实际部署RAID 10、RAID 5+备份盘等方案来更直观地查看RAID的强大效果,以便进一步满足生产环境对硬盘设备的I/O读写速度和数据冗余备份机制的需求。同时,考虑到用户可能会动态调整存储资源,本章还将介绍LVM(Logical Volume Manager,逻辑卷管理器)的部署、扩容、缩小、快照以及卸载删除的相关知识。

第8章,iptables与firewalld防火墙:本章讲解了RHEL 7中新增的firewalld防火墙与先前版本中iptables防火墙之间的区别,并分别使用iptables、firewall-cmd、firewall-config和TCP Wrappers等防火墙策略配置服务来完成数十个根据真实工作需求而设计的防火墙策略配置实验。在学习完这些实验之后,各位读者不仅可以熟练地过滤请求的流量,还可以基于服务程序的名称对流量进行允许和拒绝操作,确保Linux系统的安全性万无一失。

第9章,使用ssh服务管理远程主机:本章讲解了如何使用nmtui命令配置网络参数,以及通过nmcli命令查看网络信息并管理网络会话服务,从而让您能够在不同工作场景中快速地切换网络运行参数;还讲解了如何手工绑定mode6模式双网卡,实现网络的负载均衡。本章还深入介绍了SSH协议与sshd服务程序的理论知识、Linux系统的远程管理方法以及在系统中配置服务程序的方法,并采用实验的形式演示了使用基于密钥验证的sshd服务程序进行远程登录,以及使用screen服务程序远程管理Linux系统的不间断会话等技术。

第10章,使用Apache服务部署静态网站:本章通过对比当前主流的Web服务程序来使读者更好地理解各自的优势及特点,并真正掌握在Linux系统中配置服务的技巧。本章还详细讲解了SELinux服务的作用、三种工作模式以及策略管理方法,确保读者掌握SELinux域和SELinux安全上下文的配置方法。

第11章,使用vsftpd服务传输文件:本章讲解了什么是文件传输协议(File Transfer Protocol, FTP),以及如何部署vsftpd服务程序,然后深度剖析了vsftpd主配置文件中最常用的参数及其作用,并完整演示了vsftpd服务程序三种认证模式的配置方法;本章还涵盖了可插拔认证模块的原理、作用以及实用配置方法。

第12章,使用Samba或NFS实现文件共享:本章讲解了Samba服务的理论知识,以及SMB协议与Samba服务程序的起源和发展过程,并通过实验的方式部署文件共享服务来深入了解Samba服务程序中相关参数的作用;还讲解了如何配置网络文件系统(Network File System, NFS)服务来简化Linux系统之间的文件共享工作,以及通过部署NFS服务在多台Linux系统之间挂载并使用资源。

第13章,使用BIND提供域名解析服务:本章讲解了DNS域名解析服务的原理以及作用,介绍了域名查询功能中正向解析与反向解析的作用,实践部署了DNS主服务器、DNS从服务器、DNS缓存服务器,并通过实验的方式演示了如何在DNS主服务器上部署正、反解析工作模式,以便让大家深刻体会到DNS域名查询的便利和强大。

第14章,使用DHCP动态管理主机地址:本章讲解了动态主机配置协议的作用,以及在Linux系统中配置部署dhcpd服务程序的方法,剖析了dhcpd服务程序配置文件内每个参数的作用,并通过自动分配IP地址、绑定IP地址与MAC地址等实验,让各位读者更直观地体会DHCP协议的强大之处。

第15章,使用Postifx与Dovecot部署邮件系统:本章介绍了SMTP、POP3、IMAP4等常见的电子邮件协议,以及MUA、MTA、MDA这三种服务角色的作用;还完整地演示了在Linux系统中使用Postfix和Dovecot服务程序配置电子邮件系统服务的方法,重点讲解了常用的配置参数,此外将结合BIND服务程序提供的DNS域名解析服务来验证客户端主机与服务器之间的邮件收发功能;最后还介绍了如何在电子邮件系统中设置用户别名,以帮助大家在生产环境中更好地控制、管理电子邮件账户以及信箱地址。

第16章,使用Squid部署代理缓存服务:本章介绍了代理服务的原理以及作用、Squid服务程序正向解析和反向解析的理论以及配置方法。在掌握了Squid服务程序的标准正向代理模式、透明正向代理模式、访问控制列表功能以及反向代理等实用功能之后,读者不但可以进一步理解代理服务,提升服务控制能力,而且在步入运维岗位后能够游刃有余地处理相关问题。

第17章,使用iSCSI服务部署网络存储:本章开篇介绍了计算机硬件存储设备的不同接口技术的优缺点,并由此切入iSCSI技术主题的讲解。本章还将带领大家在Linux系统上部署iSCSI服务端程序,并分别基于Linux系统和Windows系统来访问远程的存储资源。

第18章,使用MariaDB数据库管理系统:本章介绍了数据库以及数据库管理系统的理论知识,然后介绍了MariaDB数据库管理系统的内容,接下来将通过动手实验的方式,帮助各位读者掌握MariaDB数据库管理系统的一些常规操作;最后还介绍了数据库的备份与恢复方法。

第19章,使用PXE+Kickstart无人值守安装服务:本章介绍了可以实现无人值守安装服务的PXE+Kickstart服务程序,并带领大家动手安装部署PXE+TFTP+FTP+DHCP +Kickstart等服务程序,从而搭建出一套可批量安装Linux系统的无人值守安装系统。在学完本章内容之后,运维新手就可以避免枯燥乏味的重复性工作,大大提高系统安装的效率。

第20章,使用LNMP架构部署动态网站环境:LNMP动态网站部署架构是一套由Linux+Nginx+MySQL+PHP组成的动态网站系统解决方案,具有免费、高效、扩展性强且资源消耗低等优良特性。本章首先对比了使用源码包安装服务程序与使用RPM软件包安装服务程序的区别,然后讲解了如何手工编译源码包并安装各个服务程序,以及如何使用Discuz! X3.2版本论坛系统验证架构环境。

感谢你们相信并选择我

首先,感谢广大读者从众多Linux图书中最终选择了本书,感谢你们的厚爱与信任。相信本书不会让你们失望的。

其次,感谢跟随刘遄老师一起努力打拼的各位成员,他们是(以加入团队时间排序):逄增宝、岳永、张宏宇、冯琪、黄烨婧、冯振华、张振宇、唐资富、刘峰、王辉、苏西云、李帅、陶武杰、王浩、郭建鹏、周晓雪、郝大发、倪家兴、郑帅、姜显赫、高军、王毅、任维国、张雄、周阳、程伟、任倩倩、吴向平、华世发。感谢你们相信我,为了我们共同的事业而奋勇向前,如果没有你们的帮助和支持,就不会有现在的成绩。在过去两年中,我们从一个每天只有十几人次访问的小博客,发展到了每天将近一万人次访问的公众站点;在两年内更是接连开通了近30个QQ技术交流群,群内读者已超过5万人;微信公众号也从0做到了10万粉丝,这些都是此前中国任何一本技术类电子图书没有达到的高度和成就。尤其在最近一年,我们的发展速度远远领先于同行业所有的资讯网站和教育机构,优质图书内容与读者口碑让我们走的每一步都如此扎实。现在我们可以很自豪地讲:“我们用努力留住了用户,用户看到了我们的付出。”

再次,感谢人民邮电出版社的傅道坤编辑。我们在2015年末初次接触后傅老师便主动提起出版本书的想法,随后一起用了近2年的时间共同打磨本书。感谢傅老师一直以来给予的信任和中肯实用的建议。感谢北京联合大学应用科技学院王廷梅院长在我研究生进修教育学期间的照顾和悉心培育,是您引导我步入了教育学和计算机科学与技术专业。不忘母校,不忘联大。

最后也是最重要的,感谢我的父母和妻子。当我在2015年说想要写一本Linux技术图书的时候,感谢你们相信了我。感谢我的妻子能够理解我的压力,一起来协助管理在线培训班及招生工作,让我有了更多的时间来写作。如果没有你们的信任和陪伴,我不敢想象自己现在会是什么样子。

读者服务

本书是一本注重实用性的Linux技术自学图书,自电子版公布后日均阅读量近万次。本书以及后续的进阶篇图书将继续一如既往地免费、完整地提供给各位读者。当前,我们正在世界各地部署图书配套站点的镜像服务器,旨在用最快的网站响应速度满足您心中那个求知的小宇宙。此外,我们的团队成员在完善、更新本书内容以及配套软件的同时,还将为您收集、整理值得每天一看的“新闻资讯”和“技术干货”。当然,也欢迎您到我们的QQ技术群(http://www.linuxprobe.com/club)中寻找技术大牛!

而这一切的便利与服务,只差您现在的一个选择,赶紧拿起手机扫描下面的微信二维码吧。