首页 > Linux操作系统 > Linux操作系统 > Linux宝典(第9版)
SQL Server
数据库经典译丛
Linux 宝典
(
第
9
版
)
[
美
] Christopher Negus
著
王净 田洪 译
北 京
Christopher Negus
Linux Bible, Ninth Edition
EISBN
:
978-1-118-99987-5
Copyright © 2015 by John Wiley & Sons, Inc., Indianapolis, Indiana
All Rights Reserved. This translation published under license.
Trademarks:
Wiley and the Wiley logo are trademarks or registered trademarks of John Wiley & Sons, Inc.
and/or its affiliates, in the United States and other countries, and may not be used without written permission.
Linux is a registered trademark of Linus Torvalds. All other trademarks are the property of their respective
owners. John Wiley & Sons, Inc. is not associated with any product or vendor mentioned in this book.
本书中文简体字版由
Wiley Publishing, Inc.
授权清华大学出版社出版。未经出版者书面许可,不得以任何方式
复制或抄袭本书内容。
北京市版权局著作权合同登记号 图字:
01-2015-3644
Copies of this book sold without a Wiley sticker on the cover are unauthorized and illegal.
本书封面贴有
Wiley
公司防伪标签,无标签者不得销售。
版权所有,侵权必究。侵权举报电话:
010-62782989 13701121933
图书在版编目
(CIP)
数据
Linux
宝典(第
9
版)/(美)
尼格斯
(Negus, C.)
著;王净,田洪译.
—北京:清华大学出版社,2016
(2018.3
重印)
书名原文:Linux Bible, Ninth Editon
ISBN 978-7-302-43383-5
Ⅰ.
①L…
Ⅱ.
①尼…
②王…
③田…
Ⅲ.
①Linux
操作系统 Ⅳ.
①TP316.89
中国版本图书馆
CIP
数据核字(2016)第
069926
号
责任编辑:王 军 韩宏志
装帧设计:牛艳敏
责任校对:成凤进
责任印制:杨 艳
出版发行:清华大学出版社
网 址:,
地 址:北京清华大学学研大厦
A
座
邮 编:100084
社 总 机:010-62770175
邮 购:010-62786544
投稿与读者服务:010-62776969,c-service@tup.tsinghua.edu.cn
质 量 反 馈:010-62772015,zhiliang@tup.tsinghua.edu.cn
印 刷 者:清华大学印刷厂
装 订 者:三河市少明印务有限公司
经 销:全国新华书店
开 本:185mm×260mm
印 张:43.5
字 数:1197
千字
版 次:2016
年
4
月第
1
版
印 次:2018
年
3
月第
2
次印刷
印 数:3001~4000
定 价:128.00
元
——————————————————————————————————————————————
读 者 推 荐
这是一本编排精当的优秀
Linux
教程和参考书。书中穿插大量示例,全面深入地讲述
Fedora、CentOS、Red Hat Enterprise Linux
和
Ubuntu。我通过在
Linux
系统上尝试书中的大量
示例,真正掌握了
Linux
技能。
当今的数据中心正在向云计算迁移,“云”成为热门流行语。最后两章将指导你设置一个
简单的云计算环境。无论如何,如果你准备从
Windows
迁移到
Linux,或想全面系统地了解
Linux,本书将是你的理想读物。
——Andrew Wilcox
本书循序渐进地阐释方法/概念,而这正是我苦苦追寻的。
本书讲解清晰;将深奥的技术娓娓道来,让我如浴春风,心旷神怡。我是一只
Linux
菜鸟,
以前,除了
Windows,我对其他操作系统一无所知;现在,通过阅读本书,我掌握了
Linux
操
作系统的基本设计原理。
不要因为这本书令人畏惧的重量而感到不安。Christopher
就是在力求尽可能地包罗广泛的
内容,尝试着预见系统管理的需要。
——JNutt
这是一本面向初中级读者的优秀书籍,就像一位和蔼的老师在为你授课。本书内容丰富,
行文优美,重点介绍
RHEL、Centos
和
Fedora
等常见标准。本书讲解非常透彻,对
Linux
新手
而言,本书可谓是宝贵财富。
——Man Lui
我想熟练地安装、配置和管理
Fedora Linux
工作站,本书帮我达到了目标。我以前只用过
Windows
操作系统,通过阅读本书,我顺利地将
Windows
经验和技能转变为
Linux
知识。现在,
我的工作站安装了开源软件包,可访问网络资源,可执行身份验证,可完美运行。在迁移到
Linux
环境的过程中,这本书功不可没。
——Patrick Cody
Christopher,我要向你脱帽致敬!我十分喜爱本书的编写风格,它将复杂的主题讲得简单
易懂,将枯燥的技术讲得活灵活现,它并不像是标准的技术文字,读起来更像是娓娓道来的动
人故事;例如书中对
cp
命令各种用法的讲解让我永生难忘。
——eugene brand
我今年才
18
岁,迫切想要汲取大量的知识营养。
再也找不到一本书能如此深刻地探讨这么多不同的主题。全书没有多余的空话,都是极有
用的信息。本书将指导我学习大量
IT
知识,精通掌握
CentOS
和
RH,助我茁壮成长!
——Alston
译 者 序
Linux
是一种能运行于多种平台、源代码公开、免费、功能强大、遵守
POSIX
标准且与
UNIX
兼容的操作系统。Linux
从
20
世纪中期一直发展到现在,前进的脚步从未停止过。如
今更是突飞猛进,发展迅速,一股
Linux
热潮正在席卷整个世界。由于
Linux
属于自由软件,
它的源代码是公开的,并遵循公共版权许可证(GPL),因此用户可以免费使用,使
Linux
在极
短时间内就成为了一套成熟而稳定的操作系统。
本书作者是著名的
Linux
专家
Christopher Negus,也是一位
Linux
教育专家,所出版的
很多专著都非常畅销,本书是他的代表作,目前最新版本是第
9
版。
本书覆盖了
Linux
的几乎所有内容,适用于所有
Linux
发行版本。深入和全面讨论主流
Linux
发行版本的所有主要特性、工具和实用工具。全书共分为七个部分,
第Ⅰ部分“入门”
包括两章,主要是帮助了解什么是
Linux,并从一个
Linux
桌面开始学习
;
第Ⅱ部分“成为
一名
Linux
高级用户”深入详细地介绍如何使用
Linux Shell、使用文件系统、操作文本文件、
管理进程以及使用
Shell
脚本;第
III
部分“成为一名
Linux
系统管理员”,将学习如何管理
Linux
系统;第Ⅳ部分“成为一名
Linux
服务器管理员”,将学习如何创建功能强大的网络服
务器以及用来管理这些服务器的工具;第Ⅴ部分“学习
Linux
安全技术”,将学习如何确保
Linux
系统和服务的安全;第Ⅵ部分“将
Linux
扩展到云”介绍了最前沿的云技术;第Ⅶ部
分包含了两个附录。附录
A“介质”提供了关于下载
Linux
发行版本的相关指导;附录
B“习
题答案”提供了从第
2~26
章所包括的所有习题的参考答案。
相对于之前的版本,本书中添加了更多作者实际教学经验,深入讨论
Linux
所有特性、
工具和程序,全面覆盖最新的平台,详细介绍大多数
Linux
发行版本中使用的
Debian (Ubuntu)
和
Red Hat/Fedora
软件安装和服务管理工具。总而言之,对于
Linux
用户而言,本书是必备
的,是
Linux
用户的最佳学习手册。
本书图文并茂,技术新,实用性强,以大量的实例对
Linux
命令做了详细的解释,是
Linux
用
户不可缺少的实用参考书籍。本书可用作
Linux
编程人员的参考手册,适合计算机技术人员使用。
本书主要由王净、田洪翻译,参加本次翻译的还有范园芳、范桢、胡训强、纪红、晏峰、
余佳隽、张洁、赵翊含、何远燕、任方燕、吴同菊、张忠磊、曹兵、朱婷婷、周志、蒋芬娇、
樊露停、王湘旭、李利利、朱月霞、朱荣玲、罗聪玉、戈毛毛。最终由王净负责统稿,在此
一并表示感谢。此外,还要感谢我的家人,她们总是无怨无悔地支持我的一切工作,我为有
这样的家庭而感到幸福。
译者在翻译过程中,尽量保持原书的特色,并对书中出现的术语和难词难句进行了仔细
推敲和研究。但毕竟有少量技术是译者在自己的研究领域中不曾遇到过的,所以疏漏和争议
之处在所难免,望广大读者提出宝贵意见。
最后,希望广大读者能多花些时间细细品味这本凝聚作者和译者大量心血的书籍,为将
来的职业生涯奠定良好的基础。
王净
作 者 简 介
Christopher Negus
是
Red Hat
公司的
RHCI(Red Hat Certified Instructor,Red Hat
认证讲
师)、RHCX(Red Hat Certified Examiner,Red Hat
认证考官)、RHCA(Red Hat Certified Architect,
Red Hat
认证架构师)以及首席技术撰稿人。在六年多的时间里,Chris
为数百名有志于成为
RHCE(Red Hat Certifier Engineer,Red Hat
认证工程师)的
IT
专业人士进行了授课。
目前,Christopher Negus
在
Red Hat
公司的主要工作是为
Red Hat
客户门户网站撰写技术
文章。他参与的项目包括
Red Hat Enterprise Linux 7、Red Hat Enterprise OpenStack Platform、
Red Hat Enterprise Virtualization
以及
Docker
格式的
Linux
容器。
除了
RHCA
认证外,Christopher
还是
RHCVA(Red Hat Certified Virtualization Administrator,
Red Hat
认证虚拟化管理员)以及
RHCDS(Red Hat Certified Datacenter Specialist,Red Hat
认证
数据中心专家)。此外,他还拥有部署和系统管理、群集和存储管理、云存储以及服务器强化
等方面的专业知识。
在加入
Red Hat
之前,Christopher
独自编写或者与他人合著了几十本关于
Linux
和
UNIX
的书籍,包括
Red Hat Linux Bible
(所有版本)、
CentOS Bible
、
Fedora Bible
、
Linux Troubleshooting
Bible
、
Linux Toys
和
Linux Toys
Ⅱ
。此外,他还为高级用户合著了几本关于
Linux
工具箱系
列的书:
Fedora Linux Toolbox
、
SUSE Linux Toolbox
、
Ubuntu Linux Toolbox
、
Mac OS X Toolbox
和
BSD UNIX Toolbox
。
在
20
世纪
90
年代初,Christopher
搬到犹他州帮助
Novell
开发
UnixWare
项目,在此之
前他在
AT&T
工作了
8
年。在业余时间,Christopher
喜欢踢足球以及和妻子
Sheree、儿子
Seth
在一起享受家庭的乐趣。
技术编辑简介
Richard Blum
,LPIC-1,在
IT
行业以系统和网络管理员的身份工作了
20
多年,出版了
许多有关
Linux
和开源技术的图书。他主要负责管理
UNIX、Linux、Novell
和
Microsoft
服务
器,同时还帮助设计和维护一个使用了
Cisco
交换机和路由器的
3500
名用户的网络。他曾经
使用
Linux
服务器和
Shell
脚本来执行自动化网络监控,并在大多数常见的
Linux Shell
环境
中编写过
Shell
脚本。Richard
还是一名在线讲师,为全美国的高校讲授
Linux
入门课程。
Richard
并不是工作狂,在业余时间,他担任了多个教堂礼拜乐队的贝斯手,并喜欢和妻子
Barbara
以及两个女儿
Katie Jane
和
Jessica
共度欢乐时光。
致 谢
自从我受雇于
Red Hat
公司
6
年以来,接触到世界上许多最优秀的
Linux
开发人员、测
试人员以及技术支持人员和教师。虽然无法单独感谢所有人,但我要向这种合作和卓越的文
化敬礼,正是这种文化环境,促使我的
Linux
技能逐日提升。
我不能称赞
Red Hat,因为我在该公司工作。但之所以在
Red Hat
公司工作,是因为它所
提倡的开源软件的理念与我的信念相符。在此我想要特别感谢
Red Hat
公司的一些人。与
Victor Costea、Andrew Blum
以及其他
Red Hat
技术人员的讨论帮助我调整了关于人们如何学
习
Linux
的思维方式。而我之所以能使用多种不同的技术,是因为得到上司
Adam Strong
以
及高级经理
Sam Knuth
给予的大力支持,他们总是支持我完成一些非常优秀的项目,并且从
来没有阻止过我。
在本版本的撰写过程中,还得到了来自
Ryan Sawhill Aroha
的帮助,他帮我简化了对加
密技术的编写。而对于本书中新添加的关于
Linux
云技术的内容,则要感谢
OpenStack、Docker
以及
RHEV
团队成员,他们帮助我每天学习最前沿的云技术。
至于
Wiley
出版社的工作人员,感谢他们多年来不断让我润色和改进这本书。其中
Marty
Minner
帮助我通过一个严格的日程安排完成了相关的任务。Mary Beth Wakefield
和
Ken
Brown
总是在我忘记的时候不断地提醒我严格执行日程安排。感谢
Richard Blum
透彻地、严
肃认真地完成了技术编辑工作。感谢来自
Waterside Production
的
Margot Maley Hutchision
代
表我与
Wiley
签约,并一直在维护我的最大利益。
最后,感谢妻子
Sheree
与我分享她的生活,并将
Seth
和
Caleb
养育成人。
前 言
“如果不使用
Linux,将无法真正学习
Linux。”
以上的结论是根据我十多年来教人们学习
Linux
总结出来的。要学好
Linux,不能仅靠
阅读一本书;也不能仅靠聆听一次讲座。需要有人进行引导,同时还需要亲手实践。
在
1999
年,Wiley
出版社出版了我的
Red Hat Linux Bible
一书。该书所取得的巨大成功
使我有机会成为一名全职的、独立的
Linux
作者。在大约十年的时间里,我在安静的家庭办
公室中编写了多本关于
Linux
方法的书籍,并用最好的方法来讲解
Linux。
在
2008
年,我开启了人生新的航程。我被
Red Hat
公司聘为一名专职讲师,为那些想要
获取
RHCE(Red Hat Certified Engineer)认证的专业系统管理员讲授
Linux。在担任
Linux
讲师
的
3
年里,我不断提升自己的教学技能,使那些没有任何
Linux
经验的学员逐步成为经验丰
富的专家。
在本书的上一版本中,我将这些教学经验转换为文字,从而使一些从未用过
Linux
的门
外汉成为拥有丰富经验的
Linux
专家。而在本次版本中,我准备将这些技能扩展至云端。
《Linux
宝典(第
9
版)》将重点关注以下内容:
●
使初学者成为一名认证的专家
:只要你使用过计算机、鼠标和键盘,就可以开始学习
本书。我将讲授如何获取和使用
Linux,并一步步介绍关键主题,最后学习如何管理
Linux
并确保其安全性。
●
以系统管理员为重点对象
:学完本书后,将会知道如何使用
Linux
以及如何修改和维
护
Linux。本书介绍的所有主题都是成为一名
RHCE
所需掌握的内容。此外,许多软件
开发人员也在使用本书,从而知道如何将
Linux
系统作为开发平台进行开发或者在
Linux
系统中运行自己的应用程序。
●
重点介绍命令行工具
:虽然在近几年,用来管理
Linux
的
point-and-click
接口得到了极
大的改进,但如果想要使用一些高级功能,则只能手动输入命令并编辑配置文件。我
将介绍如何熟练使用
Linux
命令行
Shell。此外,在必要时,还会使用图形工具完成相
同的任务,从而将
Shell
功能与图形工具进行比较。
●
旨在介绍更少的
Linux
发行版本
:在以前的版本中,大概介绍了
18
种不同的
Linux
发
行版本。除了少数的例外,大部分流行的
Linux
发行版本都基于
Red Hat(Red Hat
Enterprise Linux、Fedora、CentOS
等)或者基于
Debian(Ubuntu、Linux Mint、KNOPPIX
等)。虽然本书主要介绍了
Red Hat
发行版本,但在部分章节将会增加对
Ubuntu
的介绍,
因为许多
Linux
爱好者是从
Ubuntu
开始学习
Linux
的。
●
更多演示和练习
:首先,实际演示
Linux
能够做什么,而不是只告诉你
Linux
能够做
什么。其次,为了能够确保掌握所学的内容,你还有机会亲自完成相关练习。每个程
序和练习都将在
Red Hat Enterprise Linux
和
Fedora
中进行测试,以保证可以正常运行。
此外,大多数的程序和练习也可以在
Ubuntu
中运行。
●
引入云技术
:如今在云计算方面,Linux
是大多数技术进步的核心。这意味着需要深入
了解
Linux,从而在以后的数据中心中可以更有效地工作。首先,在本书的前几章学习
Linux
的基本知识,然后在最后几章学习如何尝试将
Linux
系统作为虚拟机管理程序、
云控制器和虚拟机,以及如何管理虚拟网络和网络存储空间。
本书组织结构
本书能够让你从基本的
Linux
基础开始学起,并逐步成为一个专业的
Linux
系统管理员
和高级用户。
第Ⅰ部分“入门”包括两章,主要帮助你了解什么是
Linux,并从一个
Linux
桌面开始
学习:
●
第
1
章“开始使用
Linux”介绍若干个主题,比如
Linux
操作系统是什么,Linux
的起
源以及如何开始使用
Linux。
●
第
2
章“创建完美的
Linux
桌面”提供关于如何创建一个桌面系统以及如何使用一些
最流行的桌面功能的相关内容。
第Ⅱ部分“成为一名
Linux
高级用户”深入详细地介绍如何使用
Linux Shell、使用文件
系统、操作文本文件、管理进程以及使用
Shell
脚本:
●
第
3
章“使用
Shell”介绍如何访问
Shell、运行命令、撤回命令(使用历史)以及完成标
记。此外,本章还描述了如何使用变量、别名以及
man
手册(即传统的
Linux
命令参考
手册)。
●
第
4
章“在文件系统中移动”包含用来列举、创建、复制和移动文件和目录的命令。
此外,本章还包括更高级的主题,比如文件系统安全性(文件的所有权、权限以及访问
控制列表等)。
●
第
5
章“使用文本文件”包含使用文本文件需要的所有知识,从基本的文本编辑器到
用来查找文件以及在文件中搜索文本所需的工具。
●
第
6
章“管理运行中的进程”描述如何查看正在系统上运行的进程以及如何更改这些
进程。其中,更改进程的方法包括终止、暂停以及发送其他类型的信号。
●
第
7
章“编写简单的
Shell
脚本”介绍一些
Shell
命令和函数,可以将它们放在一个文
件中并作为一个命令运行。
第Ⅲ部分“成为一名
Linux
系统管理员”,将学习如何管理
Linux
系统:
●
第
8
章“学习系统管理”提供关于基本图形工具、命令以及用来管理
Linux
系统的配
置文件的相关内容。
●
第
9
章“安装
Linux”介绍常见安装任务,如磁盘分区和初始软件包选择,以及更高级
的安装工具,比如从启动文件开始安装。
●
第
10
章“获取和管理软件”解释软件包的工作原理以及如何获取和管理软件包。
●
第
11
章“获取用户账户”讨论用来添加和删除用户和组的工具,以及如何集中管理用
户账户。
●
第
12
章“管理磁盘和文件系统”提供关于添加分区、创建文件系统、安装文件系统以
及使用逻辑卷管理的相关内容。
第Ⅳ部分“成为一名
Linux
服务器管理员”,将学习如何创建功能强大的网络服务器以及
用来管理这些服务器的工具。
●
第
13
章“了解服务器管理”介绍远程登录、监视工具以及
Linux
启动过程。
●
第
14
章“管理网络”讨论如何配置网络。
●
第
15
章“启动和停止服务”提供关于启动和停止服务的相关内容。
●
第
16
章“配置打印服务器”描述如何配置打印机,以便在
Linux
系统本地使用,或者
通过网络在另一台计算机上使用。
●
第
17
章“配置
Web
服务器”描述如何配置一个
Apache Web
服务器。
●
第
18
章“配置
FTP
服务器”介绍设置一个
vsftpd FTP
服务器所需的步骤。通过使用该
服务,可以让他人通过网络从你的
Linux
系统中下载文件。
●
第
19
章“配置
Windows
文件共享(Samba)服务器”介绍如何使用
Samba
进行
Windows
文件服务器配置。
●
第
20
章“配置
NFS
文件服务器”描述如何使用网络文件系统功能通过网络在不同系
统之间共享文件夹。
●
第
21
章“Linux
的故障排除”介绍用于
Linux
系统故障排除的流行工具。
第Ⅴ部分“学习
Linux
安全技术”,将学习如何确保
Linux
系统和服务的安全:
●
第
22
章“理解基本的
Linux
安全”介绍基本的安全概念和技术。
●
第
23
章“理解高级的
Linux
安全”介绍如何使用
PAM(pluggable authentication Modules,
可插拔验证模块)和密码工具来加强系统安全和验证。
●
第24章“使用SELinux增强Linux安全”演示如何使用SELinux(Security Enhanced Linux)
来确保系统服务的安全。
●
第
25
章“保护网络上的
Linux”介绍用来确保系统服务安全的网络安全功能,比如
firewalld
和
iptables
防火墙。
第Ⅵ部分“将
Linux
扩展到云”介绍最前沿的云技术:
●
第
26
章“使用
Linux
进行云计算”通过描述如何设置虚拟机管理程序、构建虚拟机以
及跨网络共享资源,介绍
Linux
系统中云计算的相关概念。
●
第
27
章“将
Linux
部署到云”描述如何将
Linux
镜像部署到不同的云环境,包括
IpenStack、Amazon EC2
或者进行了虚拟化配置的本地
Linux
系统。
第Ⅶ部分包含了两个附录,帮助你学习更多关于
Linux
的知识。附录
A“介质”提供了
关于下载
Linux
发行版本的相关指导。附录
B“习题答案”提供了从第
2~26
章所包括的所
有习题的参考答案。
本书的约定
在本书中使用了特殊的排版来表示代码和命令。命令和代码以等宽字体显示:
This is how code looks
在示例所包含的输入和输出事件中,仍然使用了等宽字体,但为了区分输入和输出字符,
输入字符还使用了粗体显示。比如:
$
ftp ftp.handsonhistory.com
Name (home:jake):
jake
Password:
******
文本的其他样式如下所示:
●
当介绍新术语以及重要的单词时,以
斜体
的方式显示。
●
使用类似于
Ctrl+A
的样式显示键盘的敲击。这意味着在单击字母键“a”的同时按住
Ctrl
键。
●
文本中的文件名称、URL
以及代码按以下方式显示:persistence.properties.
下面所示的各项提醒你应该注意的重要知识点。
注意
注意框提供了需要额外注意的相关信息。
提示
提示框显示了执行某一特定任务的特殊方法。
警告
当执行某一程序时,警告框会提醒你特别注意,否则会对计算机硬件和软件造成损害。
进入
Linux
如果你是一名
Linux
的初学者,那么可能会对什么是
Linux
以及
Linux
的起源只具有模
糊的概念。你可能听说过
Linux
是免费的(在使用成本方面)或者开放的(可以按照自己的意愿
自由使用)。在开始学习
Linux
之前(后面,你将学习
Linux
方面的所有相关知识),第
1
章将
会回答关于
Linux
的起源以及特点的相关问题。
你需要多花些时间认真阅读本书,这样才可以加快学习
Linux
的进度,并使用它满足自
己的需求。这是进入
Linux
并成为一名
Linux
专家的第一步。
访问配书网站
如果想要查找不同的
Linux
发行版本,关于获取
Linux
认证的相关提示以及本书的更正信
息,可以访问
。
目 录
第Ⅰ部分 入 门
第
1
章 开始使用
Linux............................3
1.1
理解什么是
Linux ......................... 4
1.2
了解如何区分
Linux
和其他操作
系统............................................... 5
1.3
探讨
Linux
历史............................ 5
1.3.1 Bell
实验室中自由流动的
UNIX
文化
..............................................
6
1.3.2
商业化的
UNIX............................
8
1.3.3 GNU
将
UNIX
转变为免费
.........
9
1.3.4 BSD
失去了一些动力................
10
1.3.5 Linus
弥补了缺失的部分...........
11
1.3.6 OSI
开源定义
.............................
11
1.4
理解
Linux
发行版本是如何出
现的............................................. 12
1.4.1
选择
Red Hat
发行版本
.............
13
1.4.2
选择
Ubuntu
或者其他
Debian
发行版本
....................................
15
1.5
利用
Linux
找到职业机会........... 15
1.5.1
了解如何利用
Linux
挣钱
.........
16
1.5.2
获得
Red Hat
认证
.....................
17
1.6
小结............................................. 20
第
2
章 创建完美的
Linux
桌面
..............21
2.1
了解
Linux
桌面技术
.................. 22
2.2
开始使用
Fedora GNOME
桌面
Live
镜像..................................... 23
2.3
使用
GNOME 3
桌面
.................. 24
2.3.1
计算机启动之后.........................
24
2.3.2
设置
GNOME 3
桌面
.................
30
2.3.3
扩展
GNOME 3
桌面
.................
31
2.3.4
启动桌面应用程序.....................
33
2.3.5
停止
GNOME 3
桌面
.................
37
2.4
使用
GNOME 2
桌面...................37
2.4.1
使用
Metacity
窗口管理器.........
38
2.4.2
更改
GNOME
外观
....................
39
2.4.3
使用
GNOME
面板
....................
40
2.4.4
使用
AIGLX
添加
3D
效果
.......
43
2.5
小结.............................................45
2.6
习题.............................................45
第Ⅱ部分 成为一名
Linux
高级用户
第
3
章 使用
Shell .................................49
3.1 Shell
和
Terminal
窗口.................50
3.1.1
使用
Shell
提示符
......................
50
3.1.2
使用
Terminal
窗口
....................
51
3.1.3
使用虚拟控制台.........................
52
3.2
选择
Shell ....................................52
3.3
运行命令
.....................................53
3.3.1
了解命令语法.............................
53
3.3.2
查找命令
....................................
56
3.4
使用命令历史记录重复执行
命令.............................................58
3.4.1
命令行编辑
................................
58
3.4.2
命令行补齐
................................
60
3.4.3
命令行重复执行.........................
61
3.5
连接和扩展命令.......................... 62
3.5.1
命令之间的管道.........................
62
3.5.2
连续命令
....................................
63
3.5.3
后台命令
....................................
63
3.5.4
扩展命令
....................................
64
3.5.5
扩展算术表达式.........................
64
3.5.6
扩展变量
....................................
64
3.6
使用
Shell
变量
........................... 64
3.6.1
创建和使用别名.........................
66
3.6.2
退出
Shell ...................................
66
3.7
创建自己的
Shell
环境................ 67
3.7.1
配置
Shell ...................................
67
3.7.2
设置提示符
................................
68
3.7.3
添加环境变量.............................
69
3.8
获取关于命令的信息.................. 70
3.9
小结............................................. 71
3.10
习题........................................... 71
第
4
章 在文件系统中移动.....................73
4.1
使用基本的文件系统命令
.......... 75
4.2
使用元字符和运算符.................. 77
4.2.1
使用文件匹配元字符.................
77
4.2.2
使用文件重定向元字符.............
78
4.2.3
使用括号扩展字符.....................
79
4.3
列出文件和目录.......................... 80
4.4
了解文件权限和所有权
.............. 83
4.4.1
使用命令
chmod(数字)更改
权限
............................................
84
4.4.2
使用
chmod(字母)更改权限
......
85
4.4.3
使用
umask
设置默认的文件
权限
............................................
85
4.4.4
更改文件所有权.........................
86
4.5
移动、复制和删除文件
.............. 87
4.6
小结............................................. 88
4.7
习题............................................. 88
第
5
章 使用文本文件............................91
5.1
使用
vim
和
vi
编辑文件............. 91
5.1.1
开始使用
vi ................................
92
5.1.2
在文件中跳过.............................
96
5.1.3
搜索文本
....................................
96
5.1.4
使用
ex
模式...............................
96
5.1.5
学习更多关于
vi
和
vim
的
知识
............................................
97
5.2
查找文件
.....................................97
5.2.1
使用
locate
命令根据名称查找
文件
............................................
97
5.2.2
使用
find
命令搜索文件
............
98
5.2.3
使用
grep
命令在文件中搜索....
103
5.3
小结........................................... 104
5.4
习题........................................... 104
第
6
章 管理运行中的进程................... 107
6.1
理解进程
................................... 107
6.2
列出进程
................................... 108
6.2.1
使用
ps
命令列出进程
.............
108
6.2.2
使用
top
命令列出和更改
进程
..........................................
109
6.2.3
使用
System Monitor
列出
进程
..........................................
110
6.3
管理后台和前台进程
................ 112
6.3.1
启动后台进程...........................
112
6.3.2
使用前台和后台命令...............
113
6.4
杀死和改变进程........................ 114
6.4.1
使用
kill
和
killall
命令杀死
进程
..........................................
114
6.4.2
使用
nice
和
renice
命令设置
处理器优先级
..........................
115
6.5
使用
cgroups
限制进程.............. 116
6.6
小结........................................... 118
6.7
习题........................................... 118
第
7
章 编写简单的
Shell
脚本.............119
7.1
理解
Shell
脚本.......................... 119
7.1.1
执行和调试
Shell
脚本
............
119
7.1.2
理解
Shell
变量
........................
120
7.1.3
在
Shell
脚本中执行算法.........
123
7.1.4
在
Shell
脚本中使用编程
结构
..........................................
124
7.1.5
使用一些有用的文本操作
程序
..........................................
129
7.1.6
使用简单的
Shell
脚本
............
130
7.2
小结........................................... 132
7.3
习题........................................... 132
第Ⅲ部分
成为一名Linux系统管理员
第
8
章 学习系统管理.......................... 137
8.1
理解系统管理
........................... 137
8.2
使用图形化管理工具................ 138
8.2.1
使用
system-config-*工具........
139
8.2.2
使用基于浏览器的管理工具.....
140
8.3
使用
root
用户账户
................... 140
8.3.1
通过
Shell
成为
root
用户
(su
命令)...................................
141
8.3.2
通过
GUI
允许管理访问权限....
142
8.3.3
使用
sudo
获取管理访问权限....
142
8.4
探索管理命令、配置文件和日志
文件........................................... 143
8.4.1
管理命令
..................................
144
8.4.2
管理配置文件...........................
144
8.4.3
管理日志文件和
Systemd
Journal ......................................
148
8.5
使用其他管理账号.................... 149
8.6
检查和配置硬件........................ 150
8.6.1
检查硬件
..................................
150
8.6.2
管理可移动硬件.......................
153
8.6.3
使用可加载模块.......................
154
8.7
小结........................................... 156
8.8
习题........................................... 156
第
9
章 安装
Linux............................... 159
9.1
选择计算机
............................... 160
9.2
从
Live
介质安装
Fedora........... 161
9.3
从安装介质安装
Red Hat
Enterprise Linux......................... 164
9.4
了解基于云的安装.................... 166
9.5
在企业中安装
Linux ................. 167
9.6
探索共同的安装主题................ 168
9.6.1
升级或者从头开始安装...........
168
9.6.2
双启动
......................................
169
9.6.3
安装
Linux
并以虚拟方式
运行
..........................................
170
9.6.4
使用安装启动选项...................
170
9.6.5
使用专门的存储器...................
173
9.6.6
对硬盘进行分区.......................
174
9.6.7
使用
GRUB
启动加载程序......
176
9.7
小结........................................... 182
9.8
习题........................................... 182
第
10
章 获取和管理软件
.................... 183
10.1
在桌面管理软件...................... 183
10.2
超越
Software
窗口.................. 184
10.3
了解
Linux RPM
和
DEB
软件
打包
......................................... 185
10.3.1
理解
DEB
包.........................
186
10.3.2
理解
RPM
包
........................
187
10.4
使用
YUM
管理
RPM
软件包... 188
10.4.1
了解
yum
的工作原理..........
189
10.4.2
借助于第三方的软件库使用
YUM.....................................
192
10.4.3
使用
YUM
命令管理软件
.....
192
10.5
使用
rpm
命令安装、查询和验证
软件
......................................... 198
10.5.1
使用
rpm
安装和删除
软件包
..................................
199
10.5.2
查询
rpm
信息
......................
199
10.5.3
验证
RPM
软件包
................
201
10.6
在企业中管理软件.................. 202
10.7
小结......................................... 203
10.8
习题......................................... 203
第
11
章 获取用户账户........................ 205
11.1
创建用户账户.......................... 205
11.1.1
使用
useradd
命令添加
用户
......................................
207
11.1.2
设置用户默认值...................
209
11.1.3
使用
usermod
修改用户
.......
210
11.1.4
使用
userdel
删除用户
.........
211
11.2
了解组账户
............................. 212
11.2.1
使用组账户
..........................
212
11.2.2
创建组账户
..........................
213
11.3
在企业中管理用户.................. 214
11.3.1
使用
ACL
设置权限.............
214
11.3.2
为用户添加目录以便进行
协作
......................................
218
11.4
集中用户账户.......................... 220
11.4.1
使用
Users
窗口
...................
221
11.4.2
使用
Authentication
Configuration
窗口
...............
221
11.5
小结......................................... 222
11.6
习题......................................... 222
第
12
章 管理磁盘和文件系统
.............225
12.1
了解磁盘存储器...................... 225
12.2
对硬盘进行分区...................... 227
12.2.1
理解分区表
..........................
227
12.2.2
查看磁盘分区.......................
227
12.2.3
创建单分区磁盘...................
229
12.2.4
创建一个多分区磁盘...........
232
12.3
使用逻辑卷管理分区.............. 235
12.3.1
检查现有的
LVM.................
235
12.3.2
创建
LVM
逻辑卷................
238
12.3.3
扩大
LVM
逻辑卷................
239
12.4
挂载文件系统.......................... 240
12.4.1
被支持的文件系统...............
240
12.4.2
启用交换区
..........................
242
12.4.3
禁用交换区
..........................
243
12.4.4
使用
fstab
文件定义挂载文件
系统
......................................
243
12.4.5
使用
mount
命令来挂载文件
系统
......................................
245
12.4.6
以环回方式挂载磁盘镜像.....
246
12.4.7
使用
umount
命令
................
246
12.5
使用
mkfs
命令创建文件系统... 247
12.6
小结......................................... 248
12.7
习题......................................... 248
第Ⅳ部分 成为一名
Linux
服务器管理员
第
13
章 了解服务器管理
.................... 253
13.1
开始学习服务器管理
.............. 254
步骤
1:安装服务器..........................
254
步骤
2:配置服务器..........................
255
步骤
3:监视服务器..........................
258
13.2
使用
Secure Shell
服务管理远程
访问
......................................... 259
13.2.1
启动
openssh-server
服务.....
260
13.2.2
使用
SSH
客户端工具
.........
261
13.2.3
使用基于密钥(无密码)的身份
验证
......................................
266
13.3
配置系统日志.......................... 268
13.3.1
使用
rsyslog
启用系统日志....
268
13.3.2
使用
logwatch
查看日志
......
271
13.4
使用
sar
检查系统资源............ 272
13.5
检查系统空间.......................... 274
13.5.1
使用
df
显示系统空间
.........
274
13.5.2
使用
du
检查磁盘使用情况
...
274
13.5.3
使用
find
确定磁盘消耗
......
275
13.6
管理企业中的服务器
.............. 275
13.7
小结......................................... 276
13.8
习题......................................... 276
第
14
章 管理网络............................... 279
14.1
配置桌面网络.......................... 280
14.1.1
检查网络接口.......................
281
14.1.2
配置网络接口.......................
285
14.1.3
配置网络代理连接...............
287
14.2
使用命令行配置网络
.............. 289
14.2.1
编辑连接
..............................
289
14.2.2
了解网络配置文件...............
291
14.2.3
设置别名网络接口...............
295
14.2.4
设置
Ethernet
通道捆绑
.......
295
14.2.5
设置自定义路由...................
296
14.3
配置企业中的网络.................. 297
14.3.1
将
Linux
配置为一个
路由器
..................................
297
14.3.2
将
Linux
配置为
DHCP
服务器
..................................
298
14.3.3
将
Linux
配置为
DNS
服务器
..................................
298
14.3.4
将
Linux
配置为代理
服务器
..................................
299
14.4
小结......................................... 299
14.5
习题......................................... 300
第
15
章 启动和停止服务
.................... 301
15.1
了解初始化守护进程(init
或者
systemd) ................................... 302
15.1.1
了解经典的
init
守护进程
....
303
15.1.2
了解
Upstart int
守护进程.....
308
15.1.3
了解
systemd
初始化............
313
15.2
检查服务的状态...................... 320
15.2.1
检查
SysVinit
系统的服务....
320
15.2.2
检查
Upstart
系统的服务
.....
321
15.2.3
检查
systemd
系统的服务.....
322
15.3
停止和启动服务...................... 323
15.3.1
停止和启动
SysVinit
服务....
323
15.3.2
停止和启动
Upstart
服务
.....
324
15.3.3
停止和启动
systemd
服务.....
325
15.4
启用持续性服务...................... 327
15.4.1
配置
SysVinit
的持续性
服务
......................................
328
15.4.2
配置
Upstart
的持续性
服务
......................................
329
15.4.3
配置
systemd
的持续性
服务
......................................
329
15.5
配置默认的运行级别或者
目标单元.................................. 331
15.5.1
配置
SysVinit
默认运行
级别
......................................
331
15.5.2
配置
Upstart
中的默认运行
级别
......................................
331
15.5.3
为
systemd
配置默认目标
单元
......................................
332
15.6
添加新的或自定义服务........... 333
15.6.1
向
SysVinit
添加新服务.......
333
15.6.2
向
Upstart
添加新服务.........
335
15.6.3
向
systemd
添加新服务........
336
15.7
小结......................................... 339
15.8
习题......................................... 339
第
16
章 配置打印服务器
.................... 341
16.1
通用
UNIX
打印系统(CUPS) ... 341
16.2
设置打印机.............................. 343
16.2.1
自动添加打印机...................
343
16.2.2
使用基于
Web
的
CUPS
管理
......................................
343
16.2.3
使用
Print Settings
窗口
.......
345
16.3
使用
CUPS
打印...................... 351
16.3.1
配置
CUPS
服务器
(cupsd.conf) ..........................
351
16.3.2
启动
CUPS
服务器...............
352
16.3.3
手动配置
CUPS
打印机
选项
......................................
352
16.4
使用打印命令.......................... 354
16.4.1
使用
lpr
进行打印
................
354
16.4.2
使用
lpc
命令列出状态........
354
16.4.3
使用
lprm
命令删除打印
作业
......................................
355
16.5
配置打印服务器...................... 355
16.5.1
配置共享的
CUPS
打印机....
356
16.5.2
配置共享
Samba
打印机......
357
16.6
小结......................................... 359
16.7
习题......................................... 359
第
17
章 配置
Web
服务器
.................. 361
17.1
了解
Apache Web
服务器
........ 361
17.2
获取和安装
Web
服务器
......... 362
17.2.1
了解
httpd
软件包
................
362
17.2.2
安装
Apache .........................
365
17.3
启动
Apache ............................ 365
17.3.1
确保
Apache
安全
................
366
17.3.2
了解
Apache
配置文件
........
367
17.3.3
向
Apache
添加虚拟主机.....
371
17.3.4
允许用户发布自己的
Web
内容
......................................
373
17.3.5
使用
SSL/TLS
保护
Web
流量
......................................
374
17.4
对
Web
服务器进行故障排除
... 378
17.4.1
检查配置错误.......................
378
17.4.2
禁止访问和服务器内部
错误
......................................
380
17.5
小结......................................... 381
17.6
习题......................................... 381
第
18
章 配置
FTP
服务器
................... 383
18.1
了解
FTP ................................. 383
18.2
安装
vsftpd FTP
服务器
.......... 384
18.3
启动
vsftpd
服务...................... 386
18.4
确保
FTP
服务器安全
............. 388
18.4.1
为
FTP
打开防火墙..............
388
18.4.2
在
TCP Wrappers
中允许
FTP
访问
..............................
390
18.4.3
为
FTP
服务器配置
SELinux................................
390
18.4.4
使
Linux
文件权限与
vsftpd
相关联
..................................
392
18.5
配置
FTP
服务器..................... 392
18.5.1
设置用户访问.......................
392
18.5.2
允许上传
..............................
393
18.5.3
为
Internet
设置
vsftpd .........
394
18.6
使用
FTP
客户端连接服务器.... 395
18.6.1
通过
Firefox
访问
FTP
服务器
..................................
395
18.6.2
使用
lftp
命令访问
FTP
服务器
..................................
396
18.6.3
使用
gFTP
客户端................
397
18.7
小结......................................... 398
18.8
习题......................................... 399
第
19
章 配置
Windows
文件共享(Samba)
服务器..................................401
19.1
了解
Samba.............................. 401
19.2
安装
Samba.............................. 402
19.3
启动和停止
Samba .................. 404
19.3.1
启动
Samba(smb)服务
.........
404
19.3.2
启动
NetBIOS(nmbd)名称
服务器
..................................
406
19.3.3
停止
Samba(smb)和
NetBIOS(nmb)服务..............
406
19.4
确保
Samba
服务器的安全...... 407
19.4.1
为
Samba
配置防火墙..........
407
19.4.2
为
Samba
配置
SELinux.......
408
19.4.3
配置
Samba
主机/用户
权限
......................................
410
19.5
配置
Samba.............................. 410
19.5.1
使用
system-config-samba....
411
19.5.2
在
smb.conf
文件中
配置
Samba ..........................
415
19.6
访问
Samba
共享..................... 419
19.6.1
在
Linux
中访问
Samba
共享
......................................
419
19.6.2
在
Windows
中访问
Samba
共享
......................................
421
19.7
在企业中使用
Samba .............. 422
19.8
小结......................................... 422
19.9
习题......................................... 422
第
20
章 配置
NFS
文件服务器............425
20.1
安装
NFS
服务器..................... 426
20.2
启动
NFS
服务
........................ 427
20.3
共享
NFS
文件系统................. 428
20.3.1
配置/etc/exports
文件
...........
429
20.3.2
导出共享文件系统...............
431
20.4
确保
NFS
服务器安全............. 432
20.4.1
为
NFS
打开防火墙
.............
432
20.4.2
在
TCP Wrappers
中允许
NFS
访问
......................................
434
20.4.3
为
NFS
服务器配置
SELinux ................................
434
20.5
使用
NFS
文件系统................. 435
20.5.1
查看
NFS
共享
.....................
435
20.5.2
手动挂载
NFS
文件系统
.....
436
20.5.3
在启动时挂载
NFS
文件
系统
......................................
437
20.5.4
使用
autofs
按需挂载
NFS
文件系统
..............................
439
20.6
卸载
NFS
文件系统................. 442
20.7
小结......................................... 442
20.8
习题......................................... 443
第
21
章
Linux
的故障排除
.................. 445
21.1
启动故障排除.......................... 445
21.1.1
了解启动方法.......................
446
21.1.2
从固件(BISO
或
UEFI)
开始
......................................
447
21.1.3
为
GRUB
启动加载程序
进行故障排除
......................
449
21.1.4
启动内核
..............................
451
21.2
排除软件包的故障.................. 458
21.3
排除网络故障.......................... 461
21.3.1
排除传出连接的故障...........
461
21.3.2
排除传入连接的故障...........
464
21.4
解决内存问题.......................... 467
21.5
在救援模式中进行故障排除... 471
21.6
小结......................................... 472
21.7
习题......................................... 472
第Ⅴ部分 学习
Linux
安全技术
第
22
章 理解基本的
Linux
安全
..........475
22.1
了解安全基本知识.................. 475
22.1.1
实现物理安全.......................
475
22.1.2
实现灾难恢复.......................
476
22.1.3
保护用户账户的安全...........
476
22.1.4
保护密码
..............................
479
22.1.5
保护文件系统.......................
484
22.1.6
管理软件和服务...................
487
22.1.7
高级执行
..............................
488
22.2
监视系统
................................. 488
22.2.1
监视日志文件.......................
488
22.2.2
监视用户账户.......................
491
22.2.3
监视文件系统.......................
494
22.3
审核和审查
Linux ................... 500
22.3.1
进行合规审查.......................
500
22.3.2
进行安全审查.......................
500
22.4
小结......................................... 501
22.5
习题......................................... 501
第
23
章 理解高级的
Linux
安全
..........503
23.1
利用加密实现
Linux
安全....... 503
23.1.1
理解哈希
..............................
504
23.1.2
理解加密/解密
.....................
505
23.1.3
实现
Linux
加密
...................
513
23.2
使用
PAM
实现
Linux
安全..... 520
23.2.1
理解
PAM
身份验证过程
....
521
23.2.2
在
Linux
系统上管理
PAM.....
524
23.2.3
获取更多关于
PAM
的
信息
......................................
535
23.3
小结......................................... 535
23.4
习题......................................... 535
第
24
章 使用
SELinux
增强
Linux
安全
......................................537
24.1
了解
SELinux
的优点.............. 537
24.2
了解
SELinux
的工作原理
...... 538
24.2.1
了解类型强制.......................
538
24.2.2
了解多层次安全...................
539
24.2.3
实现
SELinux
安全模型.......
540
24.3
配置
SELinux .......................... 545
24.3.1
设置
SELinux
模式
..............
545
24.3.2
设置
SELinux
策略类型.......
547
24.3.3
管理
SElinux
安全上下文....
548
24.3.4
管理
SELinux
策略规则包.....
550
24.3.5
通过布尔值管理
SELinux......
552
24.4
监视和排除
SELinux
故障
...... 553
24.4.1
了解
SELinux
日志
..............
553
24.4.2
排除
SELinux
日志记录
故障
......................................
555
24.4.3
解决常见的
SELinux
问题
....
555
24.5
全部放在一起.......................... 557
24.6
获取更多关于
SELinux
的
信息
......................................... 557
24.7
小结......................................... 558
24.8
习题......................................... 558
第
25
章 保护网络上的
Linux...............561
25.1
审核网络服务.......................... 561
25.1.1
使用
nmap
评估对网络服务的
访问
......................................
562
25.1.2
使用
nmap
审核网络服务
广告
......................................
565
25.1.3
控制对网络服务的访问.......
568
25.2
使用防火墙
............................. 570
25.2.1
了解防火墙
..........................
570
25.2.2
实现防火墙
..........................
571
25.3
小结......................................... 581
25.4
习题......................................... 581
第Ⅵ部分 将
Linux
扩展到云
第
26
章 使用
Linux
进行云计算
..........585
26.1 Linux
和云计算概述................ 585
26.1.1
云虚拟机管理程序...............
586
26.1.2
云控制器
..............................
586
26.1.3
云存储
..................................
586
26.1.4
云身份验证
..........................
587
26.1.5
云开发和配置.......................
587
26.1.6
云平台
..................................
587
26.2
尝试基础的云技术.................. 587
26.3
建立一个小型的云.................. 589
26.3.1
配置虚拟机管理程序...........
589
26.3.2
配置存储
..............................
592
26.3.3
创建虚拟机
..........................
594
26.3.4
管理虚拟机
..........................
597
26.3.5
迁移虚拟机
..........................
597
26.4
小结......................................... 598
26.5
习题......................................... 599
第
27
章 将
Linux
部署到云
.................601
27.1
在云中运行
Linux ................... 601
27.2
创建
Linux
云镜像................... 602
27.2.1
配置和运行
cloud-init
云
实例
......................................
603
27.2.2
对云实例进行研究...............
604
27.2.3
克隆云实例
..........................
605
27.2.4
尝试
Ubuntu
云镜像.............
606
27.2.5
扩展
cloud-init
配置
.............
607
27.2.6
在企业计算中使用
cloud-init...............................
609
27.3
使用
OpenStack
来部署云
镜像
......................................... 610
27.4
使用
Amazon EC2
部署云
镜像
......................................... 614
27.5
小结......................................... 614
第Ⅶ部分
附 录
附录
A
介质
........................................617
附录
B
习题答案
.................................625
第
Ⅰ
部分
入 门
本部分的主要内容:
第
1
章 开始使用
Linux
第
2
章 创建完美的
Linux
桌面
开始使用 Linux
本章主要内容:
●
学习什么是
Linux
●
学习
Linux
的起源
●
选择
Linux
的发布版本
●
利用
Linux
找到职业机会
●
获得
Linux
认证
Linux
是
21
世纪最重要的技术进步之一。除了在
Internet
发展过程中所起到的重要作用以及在
计算机驱动的设备中扮演着重要的技术角色外,Linux
开发还为合作项目提供了一种模型,从而超
越个人和公司可以完成的工作。
Google
运行了成千上万的
Linux
服务器来增强其搜索能力。此外,它的
Android
电话也是基于
Linux
的。同时,当下载并运行
Google
的
Chrome OS
时,会发现
Chrome OS
也是由
Linux
操作系统
在后台提供支持。
Facebook
使用了所谓的
LAMP
堆栈
(Linux、Apache、Web
服务器、MySQL
数据库和
PHP
网络
脚本语言,这些都是开源项目)构建和部署其网站。事实上,Facebook
自己也使用了一种开源的开发
模型,从而使应用程序的源代码以及驱动
Facebook
运行的工具向公众公开。该模型帮助
Facebook
快速地找出程序中的错误,并获得来自全世界的帮助,从而为
Facebook
的快速发展提供源源不断的
动力。
那些为了提高自身操作系统速度和安全性而花费数万亿美元的金融机构也依赖
Linux。其中包
括纽约股票交易所、芝加哥商品交易所以及东京股票交易所。
随着“云”逐步成为当今最热门的流行语之一,其中一部分是炒作而来的,但也有一部分并不
是炒作,因为如今快速发展的云创新是以
Linux
和其他开源技术为基础的。任何构建一个私有云或
者公共云所需的软件组件(如管理程序、云控制器、网络存储、虚拟网络和验证)都可以从开源世界
中免费获得。
Linux
在全世界的广泛采用创造了对
Linux
专业知识的巨大需求。本章将帮助你理解什么是
Linux、Linux
的起源以及如何才能熟练使用
Linux,从而在你成为一名
Linux
专家的道路上开一个
好头。本书的其他部分将会提供相关的实践活动,从而帮助你获得相关的知识。最后,还要演示如
何将所学到的专业知识应用到云技术中。
第
1
章
1.1
理解什么是
Linux
Linux
是一种计算机操作系统。一个操作系统由用来管理计算机的不同软件所组成,并且可以
在操作系统上运行应用程序。Linux
以及其他类似的计算机操作系统都包含了如下所示的功能:
●
检测和准备硬件——当启动
Linux
系统时(即当打开计算机时),Linux
将查看计算机中的组
件(CPU、硬盘驱动器、网卡等)并加载访问这些特定的硬件设备所需的软件(驱动程序和
模块)。
●
管理进程——操作系统必须同时跟踪正在运行的多个进程,并决定哪些进程访问
CPU
以及
何时进行访问。此外,该系统还必须提供启动、停止以及更改进程状态的相关方法。
●
管理内存——当应用程序需要使用内存时,必须向其分配
RAM
和交换空间(即扩展内存)。
操作系统决定如何处理对内存的请求。
●
提供用户界面——操作系统必须提供访问系统的相关方法。最初,主要是通过一个被称为
Shell
的命令行解释器来访问
Linux
系统。如今,图形桌面界面也被广泛使用。
●
控制文件系统——文件系统结构内置于操作系统之中(或者说作为模块加载到操作系统中)。
操作系统对文件系统中所包含的文件和目录(文件夹)的所有权和访问进行控制。
●
提供用户访问和身份验证——创建用户账户并在用户之间设置允许边界是
Linux
的一项基
本功能。分离用户账户和组账户能够让用户控制他们自己的文件和进程。
●
提供管理实用工具——在
Linux
中,可以使用成百甚至上千个命令和图形窗口来完成相关的
操作,比如添加用户、管理磁盘、监视网络、安装软件、管理计算机以及确保计算机安
全等。
●
启动服务——为了使用打印机、处理日志消息以及提供各种不同的系统和网络服务,需要
在后台运行被称为
守护进程
(daemon processes)
的进程,从而等待请求的到来。在
Linux
中可
以运行多种不同类型的服务。此外,Linux
还提供了不同的方法来启动和停止这些服务。换
句话说,当
Linux
包含了用来浏览
Web
页面的
Web
浏览器时,它也是一台可以向他人提供
Web
页面的计算机。比较流行的服务器功能包括
Web、电子邮件、数据库、打印机、文件、
DNS
以及
DHCP
服务器。
●
编程工具——在
Linux
中,可使用各种编程实用工具来创建应用程序,以及使用不同的库来
实现专业界面。
如果想要更好地管理
Linux
系统,则需要学习如何使用前面所描述的相关功能。虽然可以通过
使用图形界面来管理大部分功能,但对于负责管理
Linux
系统的人来说,理解
Shell
命令行是至关重
要的。
现代
Linux
系统的功能已经大大超越了最初的
UNIX
系统(Linux
是基于
UNIX
系统的)的功能。
在大型企业中,通常会使用
Linux
的一些高级功能,比如:
●
群集——
Linux
可被配置为在群集(cluster)中工作,从而使多个系统对外部世界表现为一个
系统。此外,还可以对服务进行相关配置,使其能够在群集节点之间来回传递,从而使这
些节点在使用相关服务时感觉不到任何服务运行的中断。
●
虚拟化——为更有效地管理计算资源,可以将
Linux
作为一个虚拟主机来运行。在该主机上,
可以将其他的
Linux
系统、Microsoft Windows、BSD
以及其他操作系统作为虚拟访客来运
行。而对于外部世界来说,每一个虚拟访客都表现为一个单独的计算机。而在
Linux
中,可
使用
KVM
和
Xen
技术来创建虚拟主机。
●
云计算——为管理大规模的虚拟化环境,可以使用基于
Linux
的成熟的云计算平台。诸如
OpenStack
和
Red Hat Enterprise Virtualization
之类的项目可以同时管理多个虚拟主机、虚拟
网络、用户和系统验证、虚拟访客以及网络存储空间。
●
实时计算——可以对
Linux
进行相关配置,以便进行实时计算,此时高优先级的进程可以得
到更快、可预测的关注。
●
专门的存储空间——在
Linux
中,除了在计算机的硬盘中存储数据之外,还可以使用许多专
门的本地和网络存储空间。Linux
中可用的共享存储设备包括
iSCSI、Fibre Channel
以及
Infiniband。而完全开源的存储平台包括诸如
Ceph()和
GlusterFS()
之类的项目。
本书并不会介绍所有这些高级主题。然而,对于那些使用
Shell、使用磁盘、启动和停止服务以
及为了使用这些高级功能而配置不同的服务器所需的相关功能,本书将会详细进行介绍。
1.2
了解如何区分
Linux
和其他操作系统
如果你是一名
Linux
的初学者,且使用过
Microsoft Windows
或者
Apple Mac OS
操作系统,那
么学习
Linux
是非常好的机会。虽然
Mac OS X
在免费软件操作系统中有一席之地,通常被称为
Berkeley Software Distribution,但
Microsoft
以及
Apple
的操作系统都被称为专有操作系统。这也就
意味着:
●
无法查看用来创建操作系统的代码。
●
对于无法满足需求的操作系统,不能在最基本层面对其进行更改。并且不能使用该操作系
统构建自己的操作系统。
●
不能对源代码进行检查,从而无法找到代码错误,发现安全漏洞,或者学习代码的工作
原理。
●
如果操作系统的开发者没有对外公开所需的编程接口,你将无法向操作系统中插入自己的
软件。
当你看到这些关于专有软件的相关陈述,可能会说:“我不在乎这些。我不是一名软件开发人员。
我并不想查看或者更改操作系统的构建机理。”
你的想法可能是对的。但事实上,很多其他软件已经成为免费的、开源的软件并被使用,从而
使
Internet(比如
Google)、移动电话(比如
Android)、特殊的计算设备(比如
Tivo)以及成百上千的技术
公司呈现爆炸式发展。免费软件不仅降低了计算成本,还有利于创新的爆发。
你可能并不希望像
Google、Facebook
以及其他公司那样使用
Linux
为一家数十亿美元的公司构
建基础程序。但那些已经使用
Linux
构建了计算机基础结构的公司则需要越来越多具备专业技能的
人来运行这些系统。
一个功能强大且灵活的计算机系统是如何免费的呢?要了解这一切,需要首先明白
Linux
的起
源。所以,本章的下一节将介绍导致
Linux
产生的免费软件运动的不寻常且曲折的发展道路。
1.3
探讨
Linux
历史
Linux
的历史起源于
1991
年
8
月
25
日
Linus Torvalds
向
comp.os.minix
新闻组张贴的一则消息
():
Linus Benedict Torvalds
所有使用
Minix
的朋友们,大家好。
目前,我正在为
386(486)AT clones
编写一个免费的操作系统(这仅仅只是我的一个业余爱好,该
操作系统将不会是一个类似于
gnu
之类的大型、专业操作系统)。该想法从今年
4
月份开始酝酿,目
前已经开始准备编写了。由于我的操作系统与
Minix
类似(比如相同的文件系统物理布局(之所以这
么做,最主要是出于现实原因)),因此希望喜欢或者不喜欢
Minix
的人可以提出反馈意见,任何建
议都欢迎,但我不能保证会实现所有的意见。
Linus(torvalds@kruuna.helsinki.fi)
附注:当然,该操作系统不包含任何
Minix
代码,并且具有一个多线程的文件系统。该系统不
是便携式的(原文如此)(因为使用了
386
任务切换等功能),同时,它仅支持
AT-harddisks,这就是我
能够完成的全部功能。
Minix
是
90
年代初在
PC
上运行的类似于
UNIX
的一种操作系统。与
Minix
一样,Linux
也是
UNIX
操作系统的克隆。除了少数例外,比如
Microsoft Windows,大多数现代计算机系统(包括
Mac
OS X
和
Linux)都源自
UNIX
操作系统,而该系统最初由
AT&T
所创建。
如果你真正体会到了
AT&T Bell
实验室是如何根据一个专有系统创建出一个免费的操作系统,
那么将有助于理解创建
UNIX
时的文化背景以及使
UNIX
的精华部分重现的一系列事件。
注意
为学习更多关于
Linux
的创建原理,请参考以下书籍:Linus Torvalds
所著的
The Story of an
Accidental Revolutionary
(HarperCollins
出版社,2001)。
1.3.1 Bell
实验室中自由流动的
UNIX
文化
最初,UNIX
操作系统在一个公共社区中被创建并逐步发展。UNIX
的创建并不是受市场需求
所驱使的,而是用来克服生产程序中的障碍。而拥有
UNIX
商标的
AT&T
最终使
UNIX
成为了一个
商业产品,但在那时,许多使
UNIX
特殊化的概念(甚至很多早期的代码)都已经进入了公共领域。
如果你非常年轻无法回想起
1984
年
AT&T
分裂时的情景,那么可能也就不知道
AT&T
曾经是
一家电话公司。直到
20
世纪
80
年代初,AT&T
并没有过多地考虑竞争的问题,因为当时在美国如
果想要买一部电话,则必须去
AT&T
公司。所以它将大部分资金投入了纯理论的研究项目。而进行
这些研究项目的单位是位于
New Jersey
州
Murray Hill
的
Bell
实验室。
在
1969
年左右,一个被称为
Multics
的项目失败了,在此之后,Bell
实验室聘用了
Ken Thompson
和
Dennis Ritchie
开始创建一种新的操作系统,从而为软件的开发提供一种改进的环境。在那个时候,
大部分应用程序都是写在穿孔卡片上,并批量地输入到大型机中。在
1980
年的一次关于“UNIX
分
时系统的演变”的演讲中,Dennis Richie
总结了
UNIX
系统的灵魂:
我们想要开发的并不仅仅是一个能够进行编程的好环境,而是一个能够形成友谊的系统。根据
经验我们知道,公用计算的本质是通过远程访问提供的,分时系统并不仅仅是为了将程序输入一个
终端,而是鼓励大家进行密切的沟通。
从那时开始,UNIX
设计的简单性以及强大功能开始打破阻碍软件开发人员的种种障碍。而
UNIX
的基础由几个关键元素组成:
●
UNIX
文件系统——因为
UNIX
包含了一个允许子目录级别的文件系统结构(对于当今桌面
用户而言,这种结构看起来类似于在文件夹中包含了文件夹),所以可以使用
UNIX
以一种
直观的方式组织文件和目录。此外,UNIX
将磁盘、磁带以及其他设备表示为单独的设备文
件,这样就能够将它们作为目录中的条目来进行访问,从而大大简化了访问这些设备的复
杂方法。
●
输入/输出重定向——早期的
UNIX
系统还包括了输入重定向和管道。通过一个命令行,
UNIX
用户能够使用右箭头键(>)将一条命令的输出定向到一个文件中。随后,UNIX
又引入
了管道(|)的概念,从而将一条命令的输出定向到另一条命令的输入中。例如,下面所示的命
令行首先将
file1
和
file2
连接起来(cat),然后按照字母顺序对文件中的代码行进行排序(sort),
紧接着对排好序的文本进行分页(pr),以便进行打印,最后将输出定向到计算机的默认打印
机上(lpr):
$
cat file1 file2 | sort | pr | lpr
这种对输入和输出进行定向的方法能够让开发人员创建自己专业的实用工具,并且能够与
现有的实用工具进行联接。这种模块化的方法能够让不同的开发人员编写不同的代码,并
且在用户需要的时候将这些代码片段组合起来。
●
可移植性——简化使用
UNIX
的体验能够使其更具可移植性,从而在不同的计算机上运行。
通过使用设备驱动程序(表示为在文件系统树中的若干个文件),UNIX
只需向应用程序提供
一个接口即可,而应用程序则无须知道底层硬件的详细信息。如果日后想要从
UNIX
移植
到另一个系统,开发人员只需更改驱动程序即可,而应用程序并不需要针对不同的硬件进
行修改。
然而,为了使可移植性成为现实,还需要使用一种高级编程语言来实现所需的软件。为此,Brian
Kernighan
和
Dennis Ritchie
创建了
C
编程语言。在
1973
年,使用
C
语言重新编写了
UNIX。如今,
C
语言仍然是创建
UNIX(以及
Linux)操作系统内核所使用的主要语言。
在
1979
年的一次演讲中,Ritchie
接着说():
如今,仍然使用汇编程序编写的重要的
UNIX
程序就只剩汇编程序自己了;实际上,所有的实
用工具都已经使用
C
语言进行编写,而大部分应用程序也都是使用
C
语言编写的,虽然仍然有许多
介绍
Fortran、Pascal
和
Algol 68
的网站。似乎可以肯定的是,UNIX
的成功很大程度上取决于其软
件的可读性、可修改性以及可移植性,而这三性又取决于
UNIX
在高级语言中的表达。
如果你是一名
Linux
爱好者,并且有兴趣想知道早期的
Linux
中哪些功能被保留下来,那么不
妨读一下
Dennis Ritchie
再版的第一个
UNIX
程序员手册(1971
年
11
月
3
日)。可以在
Dennis Ritchie
的网站中找到该手册:。该文档的形式是
UNIX
手册页(man pages),如今,UNIX
手册页仍然是介绍
UNIX
和
Linux
操作系统命令和编程工具的主
要形式。
通过阅读
UNIX
系统的早期文档和说明,可以清楚地看到
UNIX
的开发是一个自由流动的过程,
从而使
UNIX
变得更加优秀。而该过程还导致了代码的共享(包括
Bell
实验室内部的共享以及外部的
共享),从而能够快速地开发高质量的
UNIX
操作系统。此外,还可以产生一个
AT&T
日后难以回滚
的操作系统。
1.3.2
商业化的
UNIX
在
1984
年
AT&T
资产剥离之前(当时,AT&T
被分为
AT&T
以及七个“Baby Bell”公司),AT&T
被禁止出售计算机系统。而日后成为
Verizon、Qwest
和
Alcatel-Lucent
的公司也都是
AT&T
的一部
分。由于
AT&T
对电话系统的垄断,美国政府开始担心一个不受限制的
AT&T
可能会主导新兴的计
算机产业。
因为在资产剥离之前
AT&T
被禁止直接向客户出售计算机,所以
AT&T
将
UNIX
源代码授权给
各大学并且只收取象征性的费用。此时,AT&T
所出售的
UNIX
操作系统都需要用户自己进行编译。
1. Berkeley
软件发行版的产生
到了
1975
年,UNIX V6
成为在
Bell
实验室之外被广泛使用的
UNIX
的第一个版本。根据该版
本的
UNIX
源代码,位于
Berkeley
的
California
大学创建了
UNIX
的第一个主要变异版本,该版本
被称为
BSD(Berkeley Software Distribution,Berkeley
软件发行版)。
在接下来的
10
年里,UNIX
的
BSD
版本和
Bell Labs
版本在各自不同的方向得到了迅速发展。
其中
BSD
继续以自由流动、代码共享的方式(这也是早前
Bell Labs UNIX
的主要特点)向前发展,而
AT&T
则开始使
UNIX
转向商业化。随着一个独立的
UNIX
实验室的产生(该实验室从
Murray Hill
搬出,搬到了
New Jersey的
Summit),AT&T
开始尝试对
UNIX
进行商业化。到了
1984
年,资产剥
离后的
AT&T
开始准备真正出售
UNIX
了。
2. UNIX
实验室和商业化
UNIX
实验室被视为一个无法找到其产地或者找到一种方法来赚钱的宝石。由于它在
Bell
实验
室和
AT&T
的其他部门之间来回迁移,因此它的名称被改了多次。其中给人影响最深的名字是其作
为
AT&T
的剥离资产时的名称:USL(UNIX System Laboratories,UNIX
系统实验室)。
来自
USL
的
UNIX
源代码被部分卖给了
SCO(Santa Cruz Operation),因此曾经一段时间
SCO
使
用这部分代码作为诉讼依据与主要的
Linux
供应商(比如
IBM
和
Red Hat
公司)打官司。所以,我认
为大部分人已经遗忘了
USL
对
Linux
的成功所做的贡献。
当然,在
20
世纪
80
年代,许多计算机公司担心相对于一家位于华盛顿,Redmond
地区的新崛
起的公司,完成资产剥离的
AT&T
将可能对计算机产业产生更大的威胁。为了消除
IBM、Intel、Digital
Equipment Corporation
以及其他计算机公司的担心,UNIX
实验室做出以下承诺,以确保一个平等的
游戏规则:
●
仅出售源代码——
AT&T
将继续只出售源代码,并且对所有的许可证持有人都平等可用,
而不会生产自己的
UNIX
套装。此外,每一家公司还可以将
UNIX
植入到自己的设备中。
直到
1992
年,为了与
Novell
组建合资企业(被称为
Univel)而将该实验室拆分出来,并最终
卖给了
Novell。随后,Novell
根据源代码直接生产了
UNIX
的商业套装。
●
发布的接口——为了在
OEM(Original Equipment Manufacturers,原始设备制造商)之间创建
一个公平的社会环境,同时也为了保证
UNIX
的本质内容不变,AT&T
开始对
UNIX
的不
同端口进行标准化。为此,UNIX
供应商可以使用诸如
POSIX(Portable Operating System
Interface)标准以及
SVID(AT&T UNIX System V Interface Definition)之类的规范来创建兼容
UNIX
系统。同样,这些文档也为
Linux
的创建提供了线路图。
注意
在早前的电子邮件新闻组帖子中,Linus Torvalds
曾经请求获取一份
POSIX
标准的副本(更确切
地讲是在线文档)。我想
AT&T
可能会认为如果不使用任何
UNIX
源代码,没有人能够仅通过这些接
口就可以编写出自己的
UNIX
克隆版本。
●
技术方法——直到
USL
结束时为止,关于
UNIX
发展方向的大多数决定都是基于技术上的
考虑而做出的。通过技术等级的划分,使管理得到了极大提升。据我所知,从来没有任何
人说过所编写的软件破坏了其他公司的软件,或者限制了
USL
合伙人的成功。
当
USL
最终开始雇佣市场营销专家并为终端用户创建桌面
UNIX
产品时,Microsoft Windows
已经牢牢把握了桌面市场。同时,由于
UNIX
的营销方向是为大型计算机系统指定源代码许可,因
此
USL
很难为其产品定价。例如,对于包含了
UNIX
的软件,USL
必须根据主机的价格$100 000
支付每台计算机的许可费用,而不是根据
PC
的价格$2000。再加上没有适用于
UnixWare
的应用程
序,所以你就会明白
USL
努力失败的原因了。
然而,当时其他计算机公司却成功地实现了对
UNIX
系统的营销。其中
SCO
发现了一个利基市
场,主要销售在小型办公室中运行哑终端的
UNIX
的
PC
版本。Sun Microsystems
则针对程序员以及
高端技术应用程序(比如股票交易)出售大量的
UNIX
工作站(该工作站最初是基于
BSD
开发出来的,
但最终在
SVR4
内核标准下与
UNIX
合并)。
20
世纪
80
年代,还出现了其他的商业
UNIX
系统。这种新的
UNIX
所有权声明违背了开放贡
献的精神。为此产生了诉讼案件来保护
UNIX
源代码和商标。在
1984
年,这种新的、受限制的
UNIX
促使了一个新组织的诞生,而该组织最终促使了
Linux
的诞生:Free Software Foundation。
1.3.3 GNU
将
UNIX
转变为免费
在
1984
年,Richard M. Stallman
启动了
GNU
项目(),短语
GNU is Not UNIX
的缩写。作为
FSF(Free Software Foundation)的一个项目,其主要目的是重新编写整个
UNIX
操作系
统,从而可以自由地进行分发。
GNU
项目页面(/gnu/thegnuproject.html)以
Stallman
自己的话讲述了项目名称
的由来。此外,该页面还列举了专有软件公司给那些希望共享、创建和创新的软件开发人员所带来
的问题。
虽然由一两个人重新编写数百万行代码似乎是不可能的,但如果有几十甚至上百个程序员共同
努力,那么该项目就是可能的。请记住,设计
UNIX
的目的就是可以分别构建并在需要时连接在一
起。因为是使用知名且已发布的接口重新编写命令和实用工具,所以可以非常容易地在许多开发人
员中分配任务。
事实证明,全新代码不仅可以获得相同的结果,甚至在某些方面比原始的
UNIX
版本更好。因
为每个人都可以看到该项目所编写的代码,所以随着时间的流逝,不完善的代码可以被快速更改或
者替换。
如果你非常熟悉
UNIX,可以尝试从
Free Software Directory()中搜
索数以千计的
GNU
软件包,从而找到你所喜欢的
UNIX
命令。除此之外,还可以找到许多其他可
用的软件项目。
随着时间的流逝,术语
免费软件
逐步被术语
开源软件
所取代。虽然开源软件被
Open Source
Initiative()所大力提倡,但
Free Software Foundation
仍然喜欢使用术语“
免
费软件
”。
为了调节两个阵营的矛盾,一些人使用术语免费和开源软件(Free and Open Source Software,
FOSS)来代替。然而,虽然可以免费使用所喜欢的软件,但
FOSS
的基本原则规定使用者有义务将
对所使用软件的改进编写成代码,并供其他人使用。也就是说,当你从别人的工作中受益的同时,
别人也可以从你的工作中受益。
为清晰地定义应该如何处理开源软件,GNU软件项目创建了
GNU Public License,或者简称为
GPL。虽然许多其他的软件许可证在保护免费软件方面使用了不同的方法,但
GPL
是最知名的,且
自身包含了
Linux
内核。GNU Public License
的基本功能如下所示:
●
作者权利——原始作者保留对其软件的所有权利。
●
免费分发——人们可以在自己的软件中使用
GNU
软件,修改以及重新分发软件。然而,在
分发时必须包括源代码(或者可以使他人非常容易地获得源代码)。
●
版权维护——即使对软件进行重新封装和转售,该软件中也必须维护原始的
GNU
协议,这
意味着该软件未来的使用者可以像你一样有机会更改源代码。
在
GNU
软件上没有保修的义务。如果软件出现错误,该软件的原始开发人员没有义务解决该
问题。然而,当有问题的软件包含在他们自己的
Linux
系统或者其他开源软件发布版本中时,许多
大型和小型的公司都提供了付费技术支持((如果想了解更多关于开源软件的详细信息,请参阅本章
后面的“OSI
开源定义”一节)。
尽管在创建成百上千的
UNIX
实用工具方面取得了成功,但
GNU
项目仍然无法创建一段关键
的代码:即内核代码。起初,尝试使用
GNU Hurd
项目(/software/hurd)构建开源内
核,但没有成功,所以
GNU Hurd
项目无法成为主要的开源内核。
1.3.4 BSD
失去了一些动力
一个有机会击败
Linux
并成为主要开源内核的软件项目是
BSD
项目。在
20
世纪
80
年代末期,
位于伯克利的加利福尼亚大学的
BSD
开发人员意识到他们已经重新编写了十年前获得的大部分
UNIX
源代码。
在
1989
年,加利福尼亚大学发布了与
UNIX
类似的代码
Net/1,随后在
1991
年又发布了
Net/2。
正当加利福尼亚大学准备编写完整的类似于
UNIX的操作系统(该系统对所有的
AT&T代码免费)时,
1992
年,AT&T
一纸诉状打断了编写进程。该诉讼声称加利福尼亚大学使用了来自
AT&T UNIX
系
统中的商业秘密编写了该软件。
需要重点注意的是,BSD
开发人员已经对来自
AT&T
的版权保护代码进行了重新编写。而版权
是
AT&T
用来保护其对
UNIX
代码权利的主要手段。一些人相信,如果
AT&T
取得了
UNIX
代码中
所包含概念的专利权,就不会有如今的
Linux
操作系统(或者任何
UNIX
克隆版本)。
当
1994
年
Novel
从
AT&T
买下了
UNIX System Laboratories
之后,该诉讼才尘埃落定。但在此
关键时期,人们开始担心和怀疑
BSD
代码的合法性,同时
BSD
在新兴的开源社区所取得的动力也
在逐步消失。许多人开始寻找其他的开源替代产品。此时,对于一名一直在编写自己内核的芬兰大
学生而言,时机已经到来。
注意
如今,可以从三个主要项目中获取不同的
BSD
版本:FreeBSD、NetBSD
以及
OpenBSD。人们
通常认为
FreeBSD
是最易于使用的,而
NetBSD
主要用于大多数的计算机硬件平台,OpenBSD
则
侧重于安全性。许多注重安全性的人仍然更喜欢使用
BSD
而不是
Linux。此外,由于其许可功能,
BSD
还可以被专有软件供应商所使用,比如
Microsoft
和
Apple,因为它们都不希望其他人共享自己
的操作系统代码。其中,Mac OS X
就是基于一个
BSD
派生产品而构建的。
1.3.5 Linus
弥补了缺失的部分
Linus Torvalds
于
1991
开始从事
Linux
方面的工作,当时他还是芬兰赫尔辛基(Helsinki)大学的
一名学生。最初,他想要创建类似于
UNIX
内核的目的是能够在学校以及家用计算机上使用相同类
型的操作系统。当时,Linus
正在使用
Minix,但他想要超越
Minix
标准所许可的范围。
如前所述,Linus
于
1991
年
8
月
25
日向
comp.OS.minix
新闻组宣布了
Linux
内核的第一个公共
版本,虽然
Torvalds
推测第一个版本直到该年
9
月中旬才会真正出来。
虽然
Torvalds
声明
Linux
是针对
386
处理器编写的,并且可能不具有可移植性,但其他开发人
员一直坚持提倡(以及致力于)使
Linux
的早期版本具有可移植性。1991
年
10
月
5
日,Linux 0.02
版
本发布,其中使用了
C
编程语言重新编写了大部分的原始汇编代码,从而可以将该版本的
Linux
移
植到其他计算机中。
Linux
内核是在
GPL
下完成一个完整的、类似于
UNIX
操作系统所需的最后且最重要的代码片
段。所以,当人们开始将各种发行版本放在一起时,会将
Linux
和
GNU
联系在一起。一些诸如
Debian
之类的发行版本将自己称为
GNU/Linux
发行版本((在
Linux
操作系统的标题或者子标题中不包括
GNU
也是
GNU
项目中一些成员常抱怨的事情。参见
)。
如今,可将
Linux
描述为一个开源的、类似于
UNIX
的操作系统,它符合
SVID、POSIX
和
BSD
标准。同时,Linux
一直在努力符合
POSIX
以及
UNIX
商标所有人
Open Group()
所设定的标准。
Open Source Development Labs
负责管理
Linux
发展努力的方向。当它与
Free Standards Group
()合并后,被重命名为
Linux Foundation,并且聘用了
Linus Torvalds。
其赞助商包括商业
Linux
系统
Who’s Who
以及应用程序供应商,比如
IBM、Red Hat、SUSE、Oracle、
HP、Dell、Computer Asscociates、Intel、Cisco Systems
等。Linux Foundation
的宗旨是通过为
Linux
开发人员提供法律保护和软件开发标准,保护和加快
Linux
的发展。
虽然大部分
Linux
努力主要在企业计算方面,但在桌面舞台也得到了巨大的提高。KDE
和
GNOME
桌面环境不断提升了临时用户的
Linux
体验。而诸如
Xfce
和
LXDE
之类最新轻量级的桌面
环境也为用户提供了有效的替换产品,从而将数以千计的上网本用户带入了
Linux
世界。
Linus Torvalds
目前仍在继续维护和改善
Linux
内核。
注意
如果想了解更多关于
Linux历史的详细信息,可以参阅
Open Sources
:
Voices from the Open Source
Revolution
一书(O’Reily,1999)。可从
在线获取该
书完整的第一个版本。
1.3.6 OSI
开源定义
Linux
提供了一种平台,通过该平台,软件开发人员可以按照自己的意愿修改操作系统,并且
可以在创建应用程序的过程中得到所需的帮助。开源运动的其中一个监视者就是
Open Source
Initiative(OSI,)。
虽然开源软件的主要目的是使源代码可用,但
OSI
在其开源定义中还定义了开源软件的其他目
的。下列针对可接受的开放源码许可证所指定的规则主要是为了保护开源代码的自由性和完整性:
●
免费发布——一个开源许可证不能向那些转售软件的人收取任何费用。
●
源代码——源代码必须包括在软件中,并且在重新发布时不能对源代码有任何限制。
●
派生的作品——许可证必须允许在相同的条件下对代码进行修改和再分发。
●
保持作者源代码的完整性——如果使用源代码的人更改了源代码,许可证可以要求他们删
除原始项目的名称或者版本。
●
不能针对个人或者团体进行区别对待——许可证必须允许所有的人平等合法地使用源
代码。
●
不能针对不同活动领域进行区别对待——许可证不能因为某项目具有商业化特征,或者因
为某项目与软件提供商所不喜欢的活动领域相关联而限制该项目使用源代码。
●
许可证的分发——使用和重新分发软件不应该需要额外的许可证。
●
许可证不能只针对某一产品——许可证不能将源代码限制为某一特殊的软件发行版本。
●
许可证不能限制其他软件——许可证不能够阻碍人们在相同的介质上将开源软件作为非开
源软件来使用。
●
许可证必须在技术上是中立的——许可证不能够限制可以重新分发源代码所使用的方法。
软件开发项目所使用的开源许可证必须满足这些标准,以便被
OSI
接受为一个开源软件。大约
有
70
种不同的许可证被
OSI
所接受,并被用来将软件标记为“OSI
认证开源软件”。除了
GPL
之外,
其他被
OSI
所批准的常用许可证还包括:
●
LGPL——GNU LGPL(Lesser General Public License)通常被用来分发其他应用程序所依赖
的库。
●
BSD——Berkeley Software Distribution License
允许对源代码进行重新分发,但有两点要求:
1、重新分发的源代码必须保留
BSD
版权声明;2、在没有征得书面允许的情况下,不能使
用贡献者的名字来宣传或者推广衍生软件。然而,BSD
与
GPL
主要的一个区别是
BSD
不
要求修改代码的开发人员将其所做的修改传到社区中。这样做的结果是诸如
Apple
和
Microsoft
之类的专有软件供应商也可以在它们自己的操作系统中使用
BSD
代码。
●
MIT——MIT
许可与
BSD
许可类似,但它不包括对宣传和推广的要求。
●
Mozilla——
Mozilla
许可包含了
Firefox Web
浏览器源代码以及其他与
Mozilla
项目
()相关的软件源代码的使用和重新分发。相对于前面所提到的许可,
Mozilla
许可内容更长,因为它就贡献者以及重复使用源代码的开发人员应该如何行为进行
了更详细的定义。其中包括提交修改时应该提交更改文件,同时,那些为了重新分发而向
源代码中添加了额外代码的开发人员应该知道专利问题以及其他与代码相关联的限制。
开源代码的最终结果是软件可以加快发展,同时在使用方式上也有了更大的灵活性。很多人相
信这么一个事实,如果许多人对同一个项目的源代码进行检查,那么将会产生高质量的软件。就如
开源提倡者
Eric S. Raymond
经常所引用的那样“给予足够多的眼球,所有的错误都是肤浅的”。
1.4
理解
Linux
发行版本是如何出现的
如今在
Internet
上充斥着大量源代码,可以对这些源代码进行编译并封装到
Linux
系统中。然而,
对于大多数临时
Linux
用户而言,需要一种更简单的方法来组成
Linux
系统。为了满足这种需求,
一些最优秀的极客开始构建他们自己的
Linux
发行版本。
Linux
发行版本由用来创建正常工作的
Linux
系统所需的组件以及用来安装并运行这些组件的
程序所组成。从技术角度看,Linux
其实就是所谓的内核。但在使用该内核之前,还必须安装一些
诸如基本命令(比如
GNU
实用工具)之类的其他软件以及需要提供的相关服务(比如远程登录或者
Web服务器),有时可能还需要一个桌面界面和图形应用程序。因此,需要收集这些软件并将它们安
装到计算机的硬盘中。
Slackware()是如今仍在被持续开发的历史最悠久的
Linux
发行版本之
一。它通过分发已经完成编译的软件并组成软件包(这些软件组件包以一种被称为
tarballs
的形式存
在),从而使
Linux
对于那些非技术用户更加友好。用户只需使用基本的
Linux
命令就可以完成相关
操作,比如格式化磁盘、启动交换以及创建用户账户等。
不久后,许多其他的
Linux
发行版本也陆续出现。而其中一些
Linux
发行版本是为了满足特殊
需要而创建的,比如
KNOPPIX(一个光盘启动的
Linux)、Gentoo(一个很酷的自定义
Linux)以及
Mandrake(日后也称为
Mandriva,它是多个桌面
Linux
发行版本的一种)。但有两种主要的发行版本
逐步成为其他发行版本的基础:即
Red Hat Linux
和
Debian。
1.4.1
选择
Red Hat
发行版本
当
Red Hat
在
20
世纪
90
年代末出现之后,由于多种原因,它很快成为最受欢迎的
Linux
发行
版本:
●
RPM
包管理——如果需要对计算机上的软件进行解压缩,tarballs
是非常好用的。但如果想
要更新、删除甚至查找软件,tarballs
则望尘莫及。为此,Red Hat
创建了
RPM
封装格式,
通过使用该格式,一个软件包不仅可以包含共享的文件,还可以包含包版本的相关信息,
比如谁是创建者,哪些文件是文档或是配置文件以及何时被创建。通过安装以
RPM
格式封
装的软件,可以在本地的
RPM
数据库中存储每个软件包相关的上述信息,从而便于查找安
装了什么软件以及更新或者删除软件。
●
简单的安装过程——
Anaconda
安装程序使安装
Linux
变得更加简单。用户只需要完成一些
简单的问题(大部分情况下接受默认值即可)就可以安装
Red Hat Linux。
●
图形化管理——Red Hat
添加了一些简单的图形化工具来配置打印机、添加用户、设置时间
和日期以及完成其他基本的管理任务。这样,桌面用户就可以非常容易地使用
Linux
系统,
而不必运行命令。
多年来,对于
Linux
专业人士和爱好者来说,Red Hat Linux
都是比较受欢迎的
Linux
发行版本。
Red Hat, Inc.除了分发
Red Hat Linux
已编译且可随时运行的版本(被称为二进制版本)之外,还分发了
源代码。但随着
Linux社区用户需求和大客户需求开始逐步出现分歧,Red Hat
放弃了
Red Hat Linux,
转而开始开发两个新的操作系统:Red Hat Enterprise Linux
和
Fedora。
1.
使用
Red Hat Enterprise Linux
到了
2012
年
3
月,Red Hat
公司成为全世界第一家年收入超过十亿美元的开源软件公司。而完
成该目标的途径主要是通过围绕
Red Hat Enterprise Linux(RHEL)开发了一组满足最苛刻的企业计算
环境需求的产品。
当其他
Linux
发行版本还在关注桌面系统或者小型商业计算时,RHEL
已经在为商业和政府开
发处理任务关键性应用程序所需的相关功能。它所构建的系统能够加快世界上最大的金融交易所的
交易速度,同时还能够作为群集和虚拟工具进行部署。
除了出售
RHEL
之外,Red Hat
还为
Linux
用户提供了一个有益的生态环境。如果想要使用
RHEL,客户需要购买订阅,从而可以部署任何所希望的版本。如果退出了
RHEL
系统,还可以使
用该订阅部署其他系统。
根据客户的不同需求,可以使用
RHEL
不同级别的支持。除了相关的支持之外,客户可以获取
硬件以及被认证使用
RHEL
的第三方软件。可以咨询
Red Hat
顾问和工程师,以便帮助他们组成所
需要的计算环境。同时,还可以为他们的雇员进行培训和认证考试(请参阅本章后面对
RHCE
认证
的详细讨论)。
Red Hat
还向
Red Hat Enterprise Linux
添加了其他的产品作为对
Red Hat Enterprise Linux
的自然
延伸。JBoss
是一个中间件产品,主要用来将基于
Java
的应用程序部署到
Internet
或者公司内部互联
网。而
Red Hat Enterprise Virtualiztion
由虚拟主机、管理员以及允许安装、运行、管理、迁移和退出
大型虚拟计算环境的客户计算机组成。
近几年,Red Hat
将其项目组合扩展到云计算。RHEL OpenStack Platform
和
Red Hat Enterprise
Virtualization
为运行和管理虚拟机提供了完整的平台。Red Hat Cloudforms
是一个云管理平台。而
RHEL Atomic
以及
Docker
格式的
Linux
容器为云提供了对应用程序进行集装箱化操作的方法。
很多人尝试通过使用免费获得的
RHEL
源代码并对其进行重建和更名来克隆
RHEL。其中,
Orcale Linux
就是根据
RHEL
源代码构建的,但目前只提供了一个无法兼容的内核。此外,CentOS
也是一个根据
RHEL
源代码构建的社区赞助的
Linux
发行版本。目前,Red Hat
接管了对
CentOS
项
目的支持。
针对本书中的许多示例,选择了使用
Red Hat Enterprise Linux,因为如果想要从事关于
Linux
系
统方面的工作,就需要学会管理
RHEL
系统。然而,如果你刚开始学习
Linux,也可以使用
Fedora
作为一个比较好的入口点来学习使用和管理
RHEL
系统所需的相同技能。
2.
使用
Fedora
RHEL
是商业化、稳定且受支持的
Linux
发行版本。而
Fedora
却是由
Red Hat
公司所发起的免
费且先进的
Linux
发行版本。Fedora
是
Red Hat
用来创建
Linux
开发社区并鼓励那些想要免费的
Linux
用于个人使用以及快速开发的人而开发的一款
Linux
系统。
Fedora
包括
16 000
多个软件包,其中大部分使用了最新的可用开源技术。作为一名用户,可以
免费试用
Fedora
中最新的
Linux
桌面、服务器以及管理界面。而作为一名软件开发人员,则可以使
用最新的
Linux内核和开发工具来创建和测试自己的应用程序。因为
Fedora主要关注的是最新技术,
所以很少关注稳定性。因此如果想要一切工作正常,可能还需要完成一些额外的工作,此外,并不
是所有的软件都完全成熟。
然而,我建议针对本书的大多数示例使用
Fedora,主要理由如下:
●
可以使用
Fedora
作为
Red Hat Enterprise Linux
的一个试验场。Red Hat
在将新的应用程序移
植到
RHEL
之前,都会在
Fedora
上进行测试。通过使用
Fedora,可以学习使用为
Red Hat
Enterprise Linux
所开发的功能所需的技能。
● Fedora
比
RHEL
更便于学习
Linux,此外,它也包括
RHEL
中许多更先进且为企业准备的
工具。
● Fedora
是免费的,不仅在于可以“自由使用”,而且“不需要支付费用”。
Fedora
在那些开发开源软件的开发人员中非常受欢迎。然而,在过去几年里,另一个
Linux
发
行版本吸引了许多初学者的注意:即
Ubuntu。
1.4.2
选择
Ubuntu
或者其他
Debian
发行版本
与
Red Hat Linux
类似,Debian GNU/Linux
发行版本也是一个擅长包装和管理软件的早期
Linux
发行版本。Debian
使用了
deb
包装格式和工具来管理系统中的所有软件包。此外,Debian
还因为稳
定性而名声在外。
许多
Linux
发行版本的根源都可以追溯到
Debian。根据
distrowatch
网站()
的调查,大约
130
多个现有的
Linux
发行版本可以追溯到
Debian。如今流行的、基于
Debian
的发行
版本包括
Linux Mint、elementary OS、Zorin OS、LXLE、Kali Linux
等。然而,在众多派生自
Debian
的发行版本中,取得最大成功的当属
Ubuntu()。
通过依赖稳定的
Debian
软件开发和包装技术,Ubuntu Linux
发行版本不断发展并添加了
Debian
所不具备的相关功能。在吸引新用户方面,Ubuntu
项目增加了一个简单的图形化安装程序以及易于
使用的图形化工具。此外,Ubuntu
项目还重点关注全功能的桌面系统,并仍然提供了流行的服务器
软件包。
在创建运行
Linux
的新方法方面,Ubuntu
也是一个改革者。通过使用
Ubuntu
所提供的
CD
或
者
USB
驱动器,可以在几分钟之内安装并运行
Ubuntu。通常,CD
中包括的内容是可以在
Windows
中运行的开源应用程序,比如
Web
浏览器和文字处理软件。对于某些人来说,可以非常容易地从
Linux
转换到
Windows。
如果你正在使用
Ubuntu,请不要担心。本书中所包含的大部分主题都可以像在
Fedora
或
RHEL
中那样在
Ubuntu
中正常工作。本书中增加了对
Ubuntu
的介绍内容。
1.5
利用
Linux
找到职业机会
如果想要为一个与计算机相关的研究项目或者技术公司创造一种理念,那么应该从什么地方开
始呢?首先应该有一个想法。然后寻找所需的工具来探究并最终实现自己的想法。此外,在创建过
程中,还可以寻求他人的帮助。
如今,创办一个类似于
Google
或者
Facebook
之类的公司的硬成本仅仅包括一台计算机、连接
到
Internet
以及用来保持整晚编写代码所需的足够的含咖啡因的饮料。如果你拥有改变世界的想法,
那么可以使用
Linux
以及数以千计的软件包来帮助实现自己的梦想。开源世界还包括可以帮助你的
开发人员、管理人员以及用户社区。
如果想要加入一个现有的开源项目,那么有很多的项目可以参加,这些项目通常需要寻找相关
人员来编写代码、测试软件或者编写文档。在这些项目中,你会找到使用软件的人,改进软件的人,
而这些人通常愿意分享他们的专业知识来帮助你。
但不管你是寻求开发下一个伟大的开源软件项目,还是只想获取所需的技能来争取高薪的
Linux
管理员或者开发工作,知道如何安装和维护
Linux
系统以及如何确保系统安全都是大有裨
益的。
Linux
职业的前途如何呢?来自
Linux Foundation(/publications/
linux-foundation/linux-adoption-trends-end-user-report-2014)的“2014
年
Linux
工作报告”对
1100
多位
招聘经理以及
4000
多名
Linux
专业人员进行了问卷调查。Linux Foundation
的调查结果是:
●
当务之急急需的是
Linux人才——77%的招聘经理认为,招聘具有
Linux
专业知识的人是当
务之急。
●
职业发展——就职业发展机会来说,86%的
Linux
专业人员认为
Linux
知识增加了职业发展
机会。
●
更多的
Linux
招聘——对招聘经理的调查发现,46%的人说他们计划比上一年增加
Linux
人才的招聘数量(比上一年提高
3
个百分点)。
从这份调查报告中可以看出,Linux
正在持续发展,并且增加了对
Linux
专业技术的需求。那
些已经开始使用
Linux
的公司继续向前发展。它们扩大了
Linux
的使用范围,并且发现
Linux
所提
供的节约成本、安全性以及灵活性使其成为一个非常好的投资。
1.5.1
了解如何利用
Linux
挣钱
开源爱好者相信,相对于专有开发模型,开源软件开发模型可以创建更好的软件。从理论上讲,
对于那些想要开发自用软件的公司来说,可以在其他公司的贡献的基础之上作出自己的贡献,从而
得到一个更好的最终产品,同时还节约了开发费用。
与从前相比,那些想要通过出售软件挣钱的公司需要更具有创造性。虽然可以出售自己所创建
的包含了
GPL
软件的软件,但必须向前传递该软件的源代码。当然,其他人可以重新编译产品,使
用甚至转售你的产品,而不必付费。下面列举了不同公司用来处理该问题的不同方法:
●
软件订阅——Red Hat
公司在订阅的基础上出售它的
Red Hat Enterprise Linux
产品。用户每
年只需支付一定数量的费用,就可以获得运行
Linux
所需的二进制码(因此用户不必自己进
行编译),此外,还可以获取有保障的支持,用来跟踪计算机中硬件和软件的工具,访问公
司知识库以及其他资源。
虽然
Red Hat
的
Fedora
项目包含了许多相同的软件,并且也是以二进制的形式提供,但却
无法保证这些软件的可用性以及软件未来的更新。对于小公司或者个人用户来说,可以冒
险使用
Fedora(当然
Fedora
本身也是一个非常出色的操作系统),但对于那些需要运行任务
关键性应用程序的大公司来说,还是会为
RHEL
支付相关费用。
●
培训和认证——随着
Linux
系统在政府和大企业中的广泛采用,需要大量的专业人员来支持
这些系统。为此,Red Hat
提供了培训课程和认证考试来帮助系统管理员熟练使用
Red Hat
Enterprise Linux
系统。特别是
RHCE(Red Hat Certified Engineer)和
RHCSA(Red Hat Certified
System Administrator)已经变得非常流行()。稍后将更详细
地介绍
RHCE/RHCSA。
此外,Linux Professional Institute()、CompTIA()以及
Novell()也推出了自己的认证程序。其中
LPI
和
CompTIA
是专业计
算机行业协会。而
Novell
则主要以
SUSE
上的培训和认证为中心。
●
赏金——软件赏金是开源软件公司非常喜欢使用的一种挣钱方式。假设你正在使用
XYZ
软
件包并且马上需要使用一个新功能,那么通过向项目或者其他软件开发人员支付一笔软件
赏金,就可以将所需的改进移到队列的前头。而所支付的软件将继续拥有开源许可证,相
对于从零开始创建项目所需的费用,软件赏金只是很少的一部分。
●
捐款——很多开源项目接收来自使用了它们项目代码的个人或开源公司的捐款。令人惊讶
的是,许多开源项目支持一两个开发人员,并且完全依赖捐款来运行。
●
盒装套装、马克杯和
T
恤——一些开源项目拥有在线商店。在该商店中,可以购买盒装的
套装(但有些人仍然喜欢物理
DVD
和文档的硬盘拷贝)以及各种马克杯、T
恤、鼠标垫和其
他物品。如果你非常喜欢某一个项目,看在上帝的份上,请购买一件
T
恤吧!
在此无法完全列举出所有的相关举措,因为每天都有更多富有创造性的方法被创造出来,以支
持那些创建了开源软件的人。但请记住,有许许多多的人已经成为开源软件的贡献者和维护者,因
为他们自己也需要开源软件。每个人为开源软件所做的贡献可以从他人所做的贡献中得到回报。
1.5.2
获得
Red Hat
认证
虽然本书并不会重点介绍如何获得
Linux
认证,但会讲授通过流行的
Linux
认证考试所需要掌
握的一些知识。特别是重点介绍针对
Red Hat Enterprise Linux 7
的
RHCE
和
RHCSA
考试。
如果你正在寻找一份
Linux IT
专业方面的工作,那么通过
RHCSA
或者
RHCE
认证已经成为应
聘成功的必要条件或者优先选择的条件。其中,RHCSA
考试(EX200)提供了基本的认证,相关的内
容包括配置磁盘和文件系统、添加用户、设置一个简单的
Web和
FTP
服务器以及添加交换空间等。
而
RHCE(EX300)则对更高级的服务器配置以及安全功能的高级内容进行测试,比如
SELinux
和防
火墙等。
虽然那些讲授
RHCE/RHCSA
课程和特定考试的人(就像我在过去的三年里所做的那样)并不允
许介绍考试到底考什么,但
Red Hat
介绍了该考试是如何进行的,同时还列举了考试中可能涉及的
相关主题。可以通过下面的网址找到这些考试目标:
●
RHSCA——
●
RHCE——
如考试目标所述,RHCSA
和
RHCE
考试是基于实际表现的,这也就意味着应试者被给定某些
任务,并且必须在实际的
Red Hat Enterprise Linux
系统上完成这些任务,就像在完成某些工作一样。
然后再根据所获得的这些任务的结果进行评分。
如果要参加考试,请经常核对一下这些考试目标,因为它们有时会发生变化。此外,还需要记
住的是,RHCSA
是一个独立的认证;但只有通过
RHCSA
和
RHCE
考试,才可以获得
RHCE
认证。
通常,这两门考试在同一天举行。
可以在
上报名参加
RHCSA
和
RHCE
培训和考试。全美国以及全球的
重要城市都提供了培训和考试服务。下一节将介绍完成这些考试所需掌握的技能。
1. RHCSA
主题
如前所述,RHCSA
考试主题包括了基本的系统管理技能。在
RHCSA
考试目标网站中已经列举
了当前针对
Red Hat Enterprise Linux 7
的考试主题(为了防止考试主题发生变化,请再次检查考试目
标网站),并且在本书中可以学习这些内容:
●
了解基本工具——需要全面了解命令
Shell(bash)的应用知识,包括如何使用正确的命令语法
以及完成输入/输出重定向(< > >>)。需要知道如何登录到远程和本地系统以及如何创建、编
辑、移动、复制、链接、删除和更改文件许可和所有者。此外,还应该知道如何在手册页
和/usr/share/doc
中查找信息。这些内容将在本书的第
3
章和第
4
章详细介绍。而第
5
章则讲
述如何编辑和查找文件。
●
操作运行系统——在该部分中,必须了解
Linux
启动过程、进入单用户模式、关闭、重启和
更改不同的目标(以前被称为
运行级别
)。你需要识别进程并根据需要更改
nice
值或者终止进
程。此外,还必须能够启动和终止虚拟机和网络服务,以及找到并解释日志文件。第
15
章
描述如何更改目标和运行级别以及管理系统服务。第
6
章介绍管理和更改进程的相关信息。
第
26
章描述如何管理虚拟机。日志记录的相关内容则在第
13
章介绍。
●
配置本地存储—— 设置磁盘分区包括创建物理卷并进行配置,以便用于
LVM(Logical
Volumn Management,逻辑卷管理)或者加密(LUKS)。此外,还可以将这些分区设置为文件
系统或者可以在启动时挂载或启用的交换空间。第
12
章将详细介绍磁盘分区和
LVM,而
LUKS
以及其他加密主题则在第
23
章中介绍。
●
创建和配置文件系统——创建和自动挂载不同类型的文件系统,包括常见的
Linux
文件系统
(ext2、ext3
或者
ext4),LUKS
加密文件系统以及网络文件系统(NFS
和
CIFS)。使用设置组
ID
位功能和
ACL(Access Control List,访问控制列表)创建协作目录。此外,还必须能够使
用
LVM
扩展逻辑卷的大小。文件系统主题将在第
12
章介绍。而
CIFS
和
NFS
则分别在第
19
章和第
20
章介绍。
●
部署、配置和维护系统——该部分包含了一系列主题,包括配置网络、创建
cron
任务、设
置默认的运行级别以及安装
RHEL
系统。此外,必须能够配置一个简单的
HTTP
和
FT
服务
器。而对于软件包,则能够从
Red Hat
网络、远程存储库或者本地文件系统中安装程序包。
最后,还必须可以正确地安装新的内核,并在系统开始时正确选择需要启动的内核。第
13
章将描述
cron
工具。而
Web
服务器(HTTP)和
FTP
服务器则分别在第
17
章和第
18
章介绍。
●
管理用户和组——必须知道如何添加、删除和更改用户账户和组账户,以及什么是密码老
化并学会使用
change
命令。还必须知道如何配置一个系统,从而通过连接一个
LDAP
目录
服务器进行身份验证。第
11
章将介绍配置用户和组的相关内容。
●
管理安全性——必须基本了解如何设置一个防火墙(firewalld、system-config-firewall
或者
iptables)以及如何使用
SELinux。必须能设置
SSH
来完成基于密钥的身份验证。可以在第
24
章学习
SELinux
的相关内容,而防火墙则在第
25
章介绍。第
13
章将讲述基于密钥的身份
验证。
本书将介绍其中的大部分主题。对于本书中没有介绍的功能,可以参阅
Red Hat Enterprise Linux
标题下的
Red Hat
相关文档(http://access.redhat.com/documentation/)。特别是系统管理员指南(System
Administrators’s Guide)中包含了许多与
RHCSA
相关主题的介绍。
2. RHCE
主题
RHCE
考试主题包含了更高级的服务器配置,以及各种用来确保
Red Hat Enterprise Linux 7
中服
务器安全的安全功能。此外,还需要检查一下
RHCE
考试目标网站,以便确定考试所需要学习主题
的最新信息。
系统配置和管理
RHCE
考试中针对系统配置和管理的需求包含了一系列主题,包括:
●
绑定——设置绑定以聚合网络链接。第
14
章将介绍绑定。
●
路由
ID
流量——为特定的网络地址设置静态路由。第
14
章将介绍如何设置自定义路由。
●
防火墙——允许或者阻止系统中选定端口的流量,这些端口提供了诸如
Web、FTP
和
NFS
之类的服务,此外还可以根据发起人的
IP
地址允许或者阻止访问相关服务。第
25
章将介绍
防火墙的相关内容。
●
内核可调参数——学会使用/etc/sysctl.conf文件和
sysctl
命令设置内核可调参数。第
14
章将
简要描述一下如何使用/etc/sysctl.conf
文件更改/proc/system
中的
IP
转发设置。
●
Kerberos
身份验证——使用
Kerberos
对
RHEL
系统中的用户进行身份验证。第
11
章将介
绍如何将一个系统的身份验证添加到一个
Kerberos
服务器中。
●
配置
iSCSI——将系统设置为一个
iSCSI
目标和发起人,并在启动时挂载一个
iSCSI
目标。
如果想了解更多信息,请参阅
Red Hat Storage Administrator Guide(
documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Storage_Administration_Guide/ch-iscsi.
html)。
●
系统报告——使用诸如
sar
之类的功能来报告关于内存的系统使用情况、磁盘访问、网络流
量以及处理器利用率。第
13
章将介绍如何使用
sar
命令。
●
Shell
脚本——创建一个简单的
Shell
脚本,以便以不同的方式获取输入和生成输出。第
7
章将介绍
Shell
脚本。
●
远程日志——通过配置
rsyslogd
设备来收集日志消息,并将它们分发到一个远程的日志服务
器中。此外,配置一个远程日志服务器设备,以便收集来自登录客户端的日志消息。第
13
章将讲述如何使用
rsyslogd
实现远程日志。
●
SELinux——通过在执行模式中使用安全性增强的
Linux,可以确保下一节所介绍的所有服
务器配置的安全。第
24
章将介绍
SELinux。
安装和配置网络服务
针对下面所列举的每一个网络服务,都需要确保正确完成以下工作:安装服务所需的程序包;
设置
SELinux
从而允许访问服务;对服务进行设置,以便在系统启动时启动;确保主机或用户所使
用的服务的安全(使用
iptables、TCP Wrappers
或者服务本身所提供的相关功能);进行相关配置以便
完成基本操作。所包含的服务如下所示:
●
Web
服务器——配置一个
Apache(HTTP/HTTPS)服务器。必须能够设置一个虚拟主机,部
署一段
CGI
脚本,使用私有目录以及允许一个特定的
Linux
组来管理内容。第
17
章将描述
如何配置一个
Web
服务器。
●
DNS
服务器——设置一个
DNS
服务器(绑定包),以便充当一个可以将
DNS
查询转发到另一
台
DNS
服务器的缓存域名服务器。不必配置主从区。第
14
章将从客户端的角度来描述
DNS。
如果想要了解更多关于使用
Bind
配置
DNS
服务器的信息,请参阅
RHEL Networking
Guide(documentation/en-US/Red_Hat_Enterprise_Linux/7/html-single/
Networking_Guide)。
●
NFS
服务器——配置一个
NFS
服务器,以便与特定的客户端系统共享特定目录,从而使这
些目录用于团队协作。第
20
章将介绍
NFS。
●
Windows
文件共享服务器——设置
Linux(Samba)向特定的主机和用户提供
SMB
共享。同时
为团队协作配置该共享。第
19
章将讲解如何配置
Samba。
●
Mail
服务器——对后缀或者
Sendmail
进行配置,从而接收来自本地主机之外的电子邮件,
并将其转发到一个智能主机。本书将不会讲授
Mail
服务器配置的相关问题(并且也不应该轻
率地进行讲授)。如果想要了解更多这方面的相关信息,可以参阅
RHEL
系统管理员指南
(documentation/en-US/Red_Hat_Enterprise_Linux/7/html-single/System
_Administrators_Guide/index.html#ch-Mail_Servers)。
●
安全
Shell
服务器——配置
SSH
服务(sshd),从而允许远程登录到本地系统以及进行基于密
钥的身份验证。另外,还需要配置
sshd.conf
文件。第
13
章将介绍如何配置
sshd
服务。
●
网络时间服务器——配置一个网络时间协议服务器(Net Time Protocol server,ntpd),从而与
其他
NTP
服务器保持时间同步。关于配置
ntpd
服务的相关信息,请参阅第
26
章。
●
数据库服务器——使用不同的方法配置并管理
MariaDB
数据库。可以从
MariaDB.org
网站
学习如何配置
MariaDB(https://mariadb.com/kb/en/mariadb/documentation/)。
如前所述,虽然在
RHCE
考试中还包括其他任务,但是请记住,大部分的任务都是配置服务器,
然后使用任何需要的技术确保这些服务器的安全。这些技术包括防火墙规则(iptables)、SELinux、TCP
Wrappers
或者任何针对特定服务而内置于配置文件中的功能。
1.6
小结
Linux是一种由来自全世界软件开发人员的社区所构建并且由其创建者
Linus Torvalds所领导的
操作系统。它最初源自
UNIX
操作系统,但多年来,在普及程度以及功能方面已经远远超过了
UNIX。
Linux
操作系统的历史可以追溯到早期的
UNIX
系统,当时该系统免费向大学分发,并且由诸
如
BSD
之类的创始人不断提高。Free Software Foundation
开发了许多创建一个完全免费的、类似于
UNIX
的操作系统所需的组件。而
Linux
内核本身就是完成该工作所需的主要组件。
大多数
Linux
软件项目都被一组许可证所保护,而这些许可证则属于
Open Source Initiative。其
中最卓越的许可证是
GNU Public License(GPL)。诸如
Linux Standard Base
之类的标准以及世界级的
组织和企业(比如
Canonical
公司和
Red Hat
公司)使
Linux
在未来成为一款稳定且生产性操作系统。
学习关于如何使用和管理
Linux
系统的基础知识将有助于胜任与
Linux
工作相关的各个方面。
后续每一章都会提供一系列练习,可以通过这些练习检验自己所学到的知识。这也就是为什么要更
好地学习
Linux
系统,以便可以顺利地完成每一章的示例以及习题。
下一章将通过介绍如何获取和使用一个
Linux
桌面系统来学习如何开始使用
Linux。
购买地址:
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/26421423/viewspace-2218006/,如需转载,请注明出处,否则将追究法律责任。