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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Spring葵花寶典Spring
- Linux運維寶典:最常用的150個命令彙總Linux運維
- Java 面試寶典Java面試
- 《怎樣解題:數學競賽攻關寶典(第3版)》勘誤
- Node.js 葵花寶典Node.js
- HTC G7 寶典
- 前端學習文件寶典前端
- Java面試寶典-2017Java面試
- C++面試寶典C++面試
- DevOps 初學者寶典dev
- 高併發葵花寶典
- 《PHP7 開發寶典(第4版)》之“PHP介紹和PHP 使用物件”PHP物件
- 窮查理寶典閱讀感受
- SAP黑話寶典 | 前方高能!
- Oracle面試寶典-鎖篇Oracle面試
- 2019最新前端面試寶典前端面試
- IT技術跳槽的葵花寶典
- Web前端面試寶典(最新)Web前端面試
- Oracle 面試寶典-DG篇Oracle面試
- Oracle 面試寶典-UNDO篇Oracle面試
- Oracle 面試寶典-RAC篇Oracle面試
- JAVA葵花寶典(基礎版)Java
- Oracle面試寶典-事務篇Oracle面試
- Oracle面試寶典-等待事件篇Oracle面試事件
- Oracle面試寶典-引數篇Oracle面試
- 大資料面試寶典五大資料面試
- C++各大名庫寶典[收藏]C++
- React生命週期簡明寶典React
- Redis面試寶典-持久化篇Redis面試持久化
- MySQL面試寶典-檔案篇MySql面試
- 畫素寶典 #14 防禦、鬼怪、槍械、寶石、光照
- Oracle面試寶典-程式結構篇Oracle面試
- 【風農翻譯】畫素寶典 #7
- Java面試寶典之開源框架!Java面試框架
- 提高介面互動體驗的“葵花寶典”
- Kubernetes面試題寶典,建議收藏哦!面試題
- 邦芒寶典:工作中如何自我定位
- 邦芒寶典:職場女性需要被尊重