主要內(nèi)容 :
安裝和配置Linux,包括Fedora、Ubuntu、CentOS、openSUSE、Debian和RHEL的**發(fā)行版。
設(shè)置及管理核心系統(tǒng)服務(wù)、守護(hù)進(jìn)程、用戶和組。
從源代碼或二進(jìn)制包管理軟件應(yīng)用程序。
定制、構(gòu)建或修補(bǔ)Linux內(nèi)核。
理解和管理Linux網(wǎng)絡(luò)棧和網(wǎng)絡(luò)協(xié)議,包括TCP/IP、ARP、IPv4和IPv6。
小化安全威脅并使用Netfilter(iptables和nftables)和Linux構(gòu)建可靠的防火墻和路由器。
創(chuàng)建及維護(hù)DNS、FTP、Web、電子郵件、打印、LDAP、VoIP、SSH服務(wù)器和服務(wù)。
使用GlusterFS、NFS和Samba共享資源。
在流行的云環(huán)境(如OpenStack、AWS、Azure、Linode和GCE)中啟動(dòng)和管理基于Linux的服務(wù)器。
使用KVM、Docker、Kubernetes和OCI工具來探索虛擬化和容器技術(shù)。
下載專門創(chuàng)建的虛擬機(jī)映像和容器,可從中復(fù)制本書中的各種練習(xí)、軟件、服務(wù)器、命令和腳本。
前 言
1991年10月5日,Linus Torvalds 在一個(gè)在線新聞組上發(fā)布了一條簡單的消息,向全世界介紹了Linux 操作系統(tǒng)的個(gè)版本。他(以及其他任何人)不知道的是,他開發(fā)出的Linux 后來成為世界上受歡迎、顛覆性的操作系統(tǒng)之一。今天,整個(gè)行業(yè)和社區(qū)都圍繞Linux 建立起來并蓬勃發(fā)展。而且,你很可能已經(jīng)以某種形式使用過它(或從中受益)!本書是我們延續(xù)開放、探索和學(xué)習(xí)這種傳統(tǒng)的第8 次嘗試(希望能成功)。當(dāng)讀者能從本書中學(xué)到一些東西,并應(yīng)用它自信地解決現(xiàn)實(shí)問題,對(duì)我們來說就成功了。
本書讀者對(duì)象本書書名的后一部分是入門經(jīng)典,但假設(shè)你已經(jīng)熟悉高級(jí)用戶級(jí)別或更高級(jí)別的Microsoft Windows 服務(wù)器(或其他操作系統(tǒng)),假定你熟悉用于中小型計(jì)算機(jī)網(wǎng)絡(luò)的術(shù)語和一些概念。任何與更大的網(wǎng)絡(luò)或高級(jí)Windows 技術(shù)相關(guān)的經(jīng)驗(yàn)將令讀者從書中獲得更多,但這不是必需的。
市面上已經(jīng)有足夠多的書僅指出應(yīng)點(diǎn)擊什么,而沒有說明為什么;本書不應(yīng)屬于這一類。
除了具備Windows 背景外,我們假設(shè)你對(duì)本書中主題的更多信息感興趣,而不僅是書中的內(nèi)容。
畢竟,一些主題只有15~35 頁,而這些主題有時(shí)需要用一整本書來專門討論!因此,一些章節(jié)插入了指向其他資源的鏈接。讀者好采納這些建議。
我們相信,經(jīng)驗(yàn)豐富的Linux 系統(tǒng)管理員也可以從本書中受益,因?yàn)樗梢宰鳛橐槐居懻摳鞣N主題的快速指南。
本書的內(nèi)容本書由6 部分組成。
第Ⅰ部分:簡介與安裝
第Ⅰ部分包括3章。第1章很好地概述什么是GNU/Linux,以及在幾個(gè)關(guān)鍵領(lǐng)域比較它與Windows。
第2 章詳細(xì)介紹如何安裝服務(wù)器級(jí)的Fedora 和Ubuntu Linux 發(fā)行版。第3 章概述如何在一些流行的云平臺(tái)上啟動(dòng)Linux 服務(wù)器。
理想情況下,第Ⅰ部分的內(nèi)容應(yīng)足以讓讀者入門,有助于讀者根據(jù)其他操作系統(tǒng)的現(xiàn)有知識(shí),了解Linux 的工作方式。第Ⅰ部分完成的一些服務(wù)器安裝任務(wù)和設(shè)計(jì)選擇可作為本書其他部分的參考和起點(diǎn)。
第Ⅱ部分:單主機(jī)管理
第Ⅱ部分介紹管理獨(dú)立系統(tǒng)(即不需要或不向網(wǎng)絡(luò)上的其他系統(tǒng)提供任何服務(wù)的系統(tǒng))的必要內(nèi)容。盡管服務(wù)器不提供任何服務(wù)的概念乍一看與直覺不符,但它是構(gòu)建其他許多概念的基礎(chǔ),在以后理解基于網(wǎng)絡(luò)的服務(wù)時(shí),它將派上用場。第Ⅱ部分共8章.
第4 章涵蓋使用Linux 命令行接口(CLI)的基礎(chǔ)知識(shí),以便讀者能在沒有GUI 的情況下工作。盡管可在GUI 桌面中管理Linux 系統(tǒng),但好能同時(shí)使用CLI 和GUI對(duì)于管理Windows 系統(tǒng)也是如此。不相信嗎?打開命令提示符,運(yùn)行netsh,并嘗試在GUI 中執(zhí)行netsh 所執(zhí)行的操作。
第5 章涵蓋如何從預(yù)先打包的二進(jìn)制文件和源代碼中安裝軟件,以及如何執(zhí)行標(biāo)準(zhǔn)的軟件管理任務(wù)。該章學(xué)到和使用的一些軟件安裝技術(shù)在本書的大部分內(nèi)容中都會(huì)用到。
第6 章涵蓋Linux 平臺(tái)上用戶和組概念的基礎(chǔ)知識(shí),以及日常管理任務(wù),如添加、刪除用戶和組,多用戶操作,Linux 權(quán)限模型等。
第7 章記錄整個(gè)開機(jī)和關(guān)機(jī)過程。該章詳細(xì)介紹如何正確啟動(dòng)、關(guān)閉、添加、啟用和禁用服務(wù)。
這些基本技能在書的后面會(huì)派上用場。
第8 章繼續(xù)介紹文件系統(tǒng)的基礎(chǔ)知識(shí)文件系統(tǒng)的組織、創(chuàng)建以及管理(重要)。
第9 章討論操作基礎(chǔ)知識(shí),介紹基本工具,如xinetd、rsyslog、cron、systemd、journald 等。xinetd是Linux 版的Windows svchost,rsyslog 在統(tǒng)一框架中管理所有應(yīng)用程序的日志記錄。rsyslog 和journald是更靈活的Windows 事件查看器版本。
第10 章解釋在Linux 中配置、編譯和安裝自定義內(nèi)核的過程。這個(gè)功能為Linux 管理員提供了大量對(duì)系統(tǒng)操作方式的細(xì)粒度控制。
第11 章涵蓋通過/proc 和/sys 文件系統(tǒng)進(jìn)行的一些內(nèi)核級(jí)調(diào)整。如該章所述,通過/proc 和/sys 查看和修改某些內(nèi)核級(jí)配置和運(yùn)行時(shí)變量的能力,為管理員提供了幾乎無限的系統(tǒng)微調(diào)可能性。當(dāng)這些應(yīng)用得當(dāng)時(shí),可以說是一種比Windows 平臺(tái)更好、更容易調(diào)整內(nèi)核的方法。
第Ⅲ部分:網(wǎng)絡(luò)與安全
第Ⅲ部分開始進(jìn)入網(wǎng)絡(luò)和安全的世界。我們不太清楚為什么要把這兩個(gè)主題放在同一部分,但如果非要證明這一點(diǎn)的話,可以說:網(wǎng)絡(luò)是邪惡的根源,因此需要保護(hù)。然后我們會(huì)聳聳肩走開。
隨著Internet 上安全和隱私日趨重要,以及SOX、HIPAA 等合規(guī)要求的發(fā)布,需要在高安全性場景中使用Linux。我們特意決定,在介紹基于網(wǎng)絡(luò)的服務(wù)(第Ⅳ部分和第Ⅴ部分)之前,先討論安全問題,以便了解一些基本的安全實(shí)踐,這些實(shí)踐有助于保護(hù)基于網(wǎng)絡(luò)的服務(wù)不受攻擊。
該部分從第12 章開始,概述了系統(tǒng)(和/或網(wǎng)絡(luò))管理員需要了解的TCP/IP 內(nèi)容。第12 章詳細(xì)介紹如何使用故障排除工具(如tcpdump)捕獲數(shù)據(jù)包,并將其讀取回來,逐步分析TCP 連接是如何工作的。
這些工具應(yīng)該能有效地排除網(wǎng)絡(luò)特性的故障。
第13 章關(guān)注基本網(wǎng)絡(luò)配置(IPv4 和IPv6),回到管理問題。這包括設(shè)置IP 地址、路由條目等。
第14 章擴(kuò)展基礎(chǔ)知識(shí),深入研究先進(jìn)的網(wǎng)絡(luò)概念,展示如何構(gòu)建基于Linux 的防火墻和路由器。
介紹新的nftables 項(xiàng)目,它將取代現(xiàn)有的、流行的iptables 框架。
第15 章和第16 章詳細(xì)討論系統(tǒng)和網(wǎng)絡(luò)安全的各個(gè)方面,包括特定于Linux 的問題以及一般的安全提示、技巧和常識(shí),以便更好地配置系統(tǒng),保護(hù)它免受攻擊。
第Ⅳ部分:Internet 服務(wù)
本書有兩個(gè)不同的部分:Internet 服務(wù)和內(nèi)部網(wǎng)服務(wù)。盡管它們聽起來很相似,但有區(qū)別。
Internet 服務(wù)定義為運(yùn)行在Linux 系統(tǒng)上、直接暴露于Internet 的服務(wù)。例如Web 和域名系統(tǒng)(DNS)服務(wù)。內(nèi)部網(wǎng)服務(wù)則定義為通常在防火墻后運(yùn)行、用于內(nèi)部用戶的服務(wù),這些服務(wù)大部分僅供內(nèi)部使用。
本部分從第17 章開始,它涵蓋了安裝、配置和管理DNS 服務(wù)器所需的信息。除了運(yùn)行DNS 服務(wù)器的實(shí)際細(xì)節(jié)外,還提供了關(guān)于DNS 如何工作的詳細(xì)背景知識(shí)以及故障排除的一些技巧和工具。
在DNS 之后,就進(jìn)入第18 章,其中涵蓋了FTP 服務(wù)器的安裝和維護(hù)。該章還介紹了FTP 的背景知識(shí)和它的發(fā)展。
第19 章繼續(xù)討論當(dāng)今Linux 流行的可能用途之一:使用流行的Apache 軟件運(yùn)行Web 服務(wù)器。
該章介紹了Apache Web 服務(wù)器的安裝、配置和管理。
第20 章和第21 章通過設(shè)置和配置SMTP、POP 和IMAP 服務(wù)器深入介紹電子郵件。將介紹配置這三種工具所需的信息,并展示它們?nèi)绾谓换。選擇探討Postfix SMTP 服務(wù)器,而不是傳統(tǒng)的Sendmail服務(wù)器,因?yàn)镻ostfix 提供了更靈活的服務(wù)器和更好的安全記錄。
第22 章在這個(gè)版本中做了全新的修訂。我們做了大量工作,花費(fèi)了大量精力,來醞釀和提煉VoIP這個(gè)非常廣泛的主題。在該章末尾,基于Asterisk 軟件構(gòu)建了一個(gè)簡單的基于VolP 的PBX;它很容易擴(kuò)展,來取代商用PBX 解決方案,或與第三方VoIP 提供商交互,以便與世界其他國家交流。
第Ⅳ部分以第23 章結(jié)束,了解如何設(shè)置、使用和管理SSH 服務(wù)在幾乎任何GNU/Linux 環(huán)境中都是至關(guān)重要的。
第Ⅴ部分:內(nèi)部網(wǎng)服務(wù)
再次強(qiáng)調(diào),內(nèi)部網(wǎng)服務(wù)定義為通常在防火墻后運(yùn)行、供內(nèi)部用戶使用的服務(wù),而且大多數(shù)僅供內(nèi)部使用。即使在這種環(huán)境中,Linux 也提供了很多功能。
第24 章介紹NFS。NFS 已經(jīng)存在了近30 年,在過去幾年里不斷發(fā)展、成長和適應(yīng)。該章介紹NFS 的功能,包括如何設(shè)置客戶端和服務(wù)器,以及如何排除故障。
第25 章通過對(duì)Samba 服務(wù)的介紹,繼續(xù)了共享磁盤和資源的思想。使用Samba,管理員可以共享磁盤和打印設(shè)施,并為Windows(和Linux)用戶提供身份驗(yàn)證,而不必安裝任何特殊的客戶機(jī)軟件。
因此,Linux 可成為一個(gè)有效的服務(wù)器,能在UNIX/Linux 系統(tǒng)和Windows 系統(tǒng)之間支持和共享資源。
如果你對(duì)這類事情感興趣,甚至可將Samba 配置為成熟的Active Directory Microsoft Windows 服務(wù)器的臨時(shí)替代品!
第26 章在第Ⅴ部分,而不是第Ⅳ部分,是一個(gè)擲硬幣的問題,因?yàn)镈FS 可以在Internet 和Intranet場景中使用/部署。在當(dāng)今以云為中心的世界中,DFS 解決方案尤其重要。在許多可用的DFS 實(shí)現(xiàn)中,我們選擇討論GlusterFS,因?yàn)樗子谂渲,在不同發(fā)行版中都獲得了支持。
第27 章討論目錄服務(wù),包括LDAP 以及管理員如何使用這個(gè)標(biāo)準(zhǔn)服務(wù)來提供一個(gè)集中的用戶數(shù)據(jù)庫(目錄),以便在異構(gòu)操作系統(tǒng)之間使用,并管理大量用戶。
第28章介紹Linux打印子系統(tǒng)。打印子系統(tǒng)與Samba結(jié)合使用時(shí),允許管理員支持從基于Windows的客戶機(jī)進(jìn)行無縫打印。這樣就可在一臺(tái)服務(wù)器上集中Linux、Windows 甚至macOS 用戶的打印選項(xiàng)!
第29 章涵蓋了Linux 系統(tǒng)的另一種常見用法:DHCP 服務(wù)器。本章討論了如何部署Internet SystemsConsortium (ISC) DHCP 服務(wù)器,它提供了一組強(qiáng)大的特性和選項(xiàng)。
接下來是第30 章。幾個(gè)月以來,我們一直在為該章的標(biāo)題而苦惱和斟酌,因?yàn)樵撜潞w了虛擬化和容器(容器化)。這一章終命名為虛擬化,因?yàn)槲覀兩踔敛淮_定容器化是不是一個(gè)詞;據(jù)一位編輯說,這是航運(yùn)業(yè)的一個(gè)詞!虛擬化則無處不在。它允許公司將以前需要幾個(gè)專用裸機(jī)的服務(wù)和硬件整合到更少的裸機(jī)中。我們將討論基本的虛擬化概念,并簡要介紹Linux 中一些流行的虛擬化技術(shù)。該章還通過示例詳細(xì)介紹了基于內(nèi)核的虛擬機(jī)(Kernel-Based Virtual Machine,KVM)的實(shí)現(xiàn)。我們討論的KVM 概念將有助于學(xué)習(xí)附錄B 介紹的新功能。第30.5 節(jié)介紹容器。容器背后的概念是舊的,但又是新的。就像虛擬化一樣,容器也無處不在,而且會(huì)一直存在。我們使用流行的Docker 平臺(tái)實(shí)現(xiàn)容器,并指導(dǎo)如何部署容器樣式的Web 服務(wù)器!
后的第31 章討論備份。備份可以說是管理中關(guān)鍵的部分之一;贚inux 的系統(tǒng)支持幾種備份方法,這些方法易于使用,也很容易用于磁帶驅(qū)動(dòng)器和其他介質(zhì)。該章討論一些方法,并解釋如何將它們用作備份計(jì)劃的一部分。除了備份機(jī)制外,還討論了一般的備份考慮事項(xiàng)、設(shè)計(jì)和優(yōu)化。
第Ⅵ部分:附錄
在書的后,包括了一些有用的參考資料和現(xiàn)實(shí)世界的資源,可以用于日常工作,可在家里、教室或?qū)嶒?yàn)室使用。
附錄A 詳細(xì)介紹在非光學(xué)介質(zhì)(如USB 閃存驅(qū)動(dòng)器、SD 卡等)上創(chuàng)建安裝介質(zhì)的替代和通用方法。
附錄B 是本書的另一個(gè)新添加內(nèi)容。它涵蓋了一個(gè)新功能:獲取和使用為本書專門創(chuàng)建的容器和虛擬機(jī)映像文件。一旦啟動(dòng)VM 或容器,你將看到本書中討論的大多數(shù)命令、腳本、軟件包、黑客和服務(wù)器/守護(hù)進(jìn)程。
目 錄
第I 部分 簡介與安裝
第1 章 Linux、發(fā)行版和FOSS 簡介. 2
1.1 Linux 操作系統(tǒng) 2
1.2 開源軟件和GNU 概述 3
1.2.1 GNU 公共許可證 4
1.2.2 上游和下游 4
1.3 開源軟件的優(yōu)勢(shì) 5
1.4 理解Windows 和Linux 的區(qū)別 6
1.4.1 單用戶、多用戶、網(wǎng)絡(luò)用戶 6
1.4.2 單片內(nèi)核和微內(nèi)核 6
1.4.3 GUI 與內(nèi)核的分離 7
1.4.4 My Network Places 7
1.4.5 注冊(cè)表與文本文件 8
1.4.6 域和Active Directory 8
1.5 小結(jié) 9
第2 章 安裝Linux 服務(wù)器 10
2.1 硬件和環(huán)境考慮事項(xiàng) 10
2.2 服務(wù)器設(shè)計(jì) 10
2.3 安裝方法 11
2.4 安裝Fedora 發(fā)行版 12
2.5 安裝 13
2.6 安裝摘要 14
2.6.1 本地化部分 14
2.6.2 軟件部分 . 14
2.6.3 系統(tǒng)部分 . 15
2.6.4 用戶設(shè)置部分 20
2.6.5 安裝 21
2.7 安裝Ubuntu 服務(wù)器 .22
2.7.1 開始安裝 . 22
2.7.2 配置網(wǎng)絡(luò) . 23
2.7.3 配置代理 . 23
2.7.4 配置Ubuntu 存檔鏡像 23
2.7.5 文件系統(tǒng)設(shè)置 23
2.7.6 配置文件的設(shè)置 24
2.7.7 SSH 安裝 .24
2.7.8 特色服務(wù)器快照 25
2.7.9 安裝完成 .25
2.8 小結(jié) 25
第3 章 在云中部署Linux 服務(wù)器 26
3.1 在云的背后 26
3.2 獲取、運(yùn)行新的虛擬Linux服務(wù)器 26
3.2.1 免費(fèi)運(yùn)行的虛擬Linux 服務(wù)器 27
3.2.2 商業(yè)云服務(wù)提供商 28
3.3 小結(jié) 29
第II 部分 單主機(jī)管理
第4 章 命令行 32
4.1 Bash 簡介 32
4.1.1 作業(yè)控制 .33
4.1.2 環(huán)境變量 .34
4.1.3 管道 35
4.1.4 重定向 .35
4.2 命令行快捷鍵 .36
4.2.1 文件名擴(kuò)展 36
4.2.2 環(huán)境變量作為參數(shù) 36
4.2.3 多個(gè)命令 .36
4.2.4 反引號(hào) .37
4.3 文檔工具 37
4.3.1 man 命令 .37
4.3.2 texinfo 系統(tǒng) 38
4.4 文件(類型、所有權(quán)和權(quán)限) 38
4.4.1 普通文件 .39
4.4.2 目錄 39
4.4.3 硬鏈接 .39
4.4.4 符號(hào)鏈接 .39
4.4.5 塊設(shè)備 .39
4.4.6 字符設(shè)備 .40
4.4.7 列出文件:ls 40
4.4.8 更改所有權(quán):chown 40
4.4.9 更改組設(shè)置:chgrp 41
4.4.10 更改模式:chmod 41
4.5 文件的管理和操作 43
4.5.1 復(fù)制文件:cp 43
4.5.2 移動(dòng)文件:mv 43
4.5.3 鏈接文件:ln 44
4.5.4 查找文件:find .44
4.5.5 文件壓縮:gzip 44
4.5.6 文件壓縮:bzip2 45
4.5.7 文件壓縮:xz 45
4.5.8 創(chuàng)建目錄:mkdir 45
4.5.9 刪除文件或目錄:rm 45
4.5.10 顯示當(dāng)前工作目錄:pwd .46
4.5.11 磁帶歸檔:tar .46
4.5.12 串聯(lián)文件:cat .47
4.5.13 一次一屏地顯示文件:more 或less 48
4.5.14 顯示文件的目錄位置:which 48
4.5.15 定位命令:whereis 48
4.6 編輯器 48
4.6.1 vi .49
4.6.2 emacs 49
4.6.3 pico 49
4.6.4 sed 50
4.7 其他工具 50
4.7.1 磁盤利用率:du 50
4.7.2 盤釋放:df 51
4.7.3 列出進(jìn)程:ps 51
4.7.4 顯示進(jìn)程的交互式列表:top ...52
4.7.5 給進(jìn)程發(fā)信號(hào):kill 53
4.7.6 顯示系統(tǒng)信息:uname 54
4.7.7 誰已登錄:who 54
4.7.8 who 的一個(gè)變體:w 54
4.7.9 切換用戶:su 54
4.8 綜合起來(移動(dòng)用戶和其主目錄) 55
4.9 小結(jié) 57
第5 章 管理軟件 58
5.1 Red Hat 軟件包管理器 .58
5.2 使用RPM 管理軟件 60
5.2.1 查詢RPM 的信息 . 60
5.2.2 用RPM 安裝軟件(一起移動(dòng)) .. 62
5.2.3 用RPM 卸載軟件(結(jié)束關(guān)系) .. 64
5.2.4 RPM 的其他功能 65
5.3 Yum 67
5.4 DNF 68
5.5 GUI RPM 包管理器 .68
5.5.1 Fedora 或Ubuntu 68
5.5.2 openSUSE 和SLE 69
5.6 Debian 軟件包管理系統(tǒng) 69
5.7 Ubuntu 中的軟件管理 70
5.7.1 查詢信息 . 70
5.7.2 在Ubuntu 中安裝軟件 70
5.7.3 在Ubuntu 中刪除軟件 71
5.8 編譯和安裝GNU 軟件 .72
5.8.1 獲取并解壓源包 72
5.8.2 尋找文檔 . 73
5.8.3 配置包 74
5.8.4 編譯包 74
5.8.5 安裝包 75
5.8.6 測(cè)試軟件 . 75
5.8.7 清理 76
5.9 從源代碼中構(gòu)建時(shí)的常見問題 ...76
5.9.1 庫的問題 . 76
5.9.2 缺少配置腳本 77
5.9.3 被破壞的源代碼 77
5.10 小結(jié) .77
第6 章 管理用戶和組 . 78
6.1 用戶的構(gòu)成 78
6.2 保存用戶信息的位置 78
6.2.1 etc/passwd 文件 79
6.2.2 /etc/shadow 文件 81
6.2.3 /etc/group 文件 82
6.3 用戶管理工具 .82
6.3.1 命令行用戶管理 83
6.3.2 GUI 用戶管理器 85
6.4 用戶和訪問權(quán)限 86
6.4.1 理解SetUID 和SetGID 程序 ... 87
6.4.2 粘滯位 87
6.5 可插拔的身份驗(yàn)證模塊 88
6.5.1 PAM 的工作方式 88
6.5.2 PAM 的文件及其位置 88
6.5.3 配置PAM 89
6.5.4 示例PAM 配置文件 . 90
6.5.5 other 文件 92
6.5.6 我無法登錄! 92
6.5.7 調(diào)試PAM 92
6.6 一場盛大的旅行 92
6.6.1 用useradd 創(chuàng)建用戶 92
6.6.2 用groupadd 創(chuàng)建組 93
6.6.3 使用usermod 修改用戶屬性 ... 94
6.6.4 用groupmod 修改組屬性 94
6.6.5 用userdel、groupdel刪除用戶和組 . 95
6.7 小結(jié) 95
第7 章 啟動(dòng)和關(guān)閉 96
7.1 引導(dǎo)加載程序 .96
7.1.1 GRUB Legacy 96
7.1.2 GRUB 2 97
7.1.3 引導(dǎo)過程 101
7.2 init 進(jìn)程 102
7.3 systemd 腳本 102
7.4 啟用和禁用服務(wù) 105
7.4.1 啟用服務(wù) 105
7.4.2 禁用服務(wù) 106
7.5 啟動(dòng)和關(guān)閉細(xì)節(jié) 106
7.5.1 fsck 106
7.5.2 啟動(dòng)到單用戶恢復(fù)模式 .107
7.6 小結(jié) 107
第8 章 文件系統(tǒng) .108
8.1 文件系統(tǒng)的結(jié)構(gòu) 108
8.1.1 i-node 108
8.1.2 塊 109
8.1.3 超級(jí)塊 110
8.1.4 ext4 110
8.1.5 Btrfs 111
8.1.6 XFS 111
8.2 管理文件系統(tǒng) 111
8.2.1 掛載和卸載本地磁盤 111
8.2.2 使用fsck 114
8.3 添加新磁盤 115
8.3.1 分區(qū)概述 115
8.3.2 傳統(tǒng)的磁盤和分區(qū)命名約定 116
8.4 卷的管理 . 116
8.5 創(chuàng)建文件系統(tǒng) 121
8.6 小結(jié) 122
第9 章 核心系統(tǒng)服務(wù) 123
9.1 systemd 123
9.1.1 systemd 的作用 123
9.1.2 systemd 的優(yōu)勢(shì) 124
9.1.3 systemd 的工作原理 124
9.2 xinetd 127
9.2.1 /etc/xinetd.conf 文件 128
9.2.2 示例:簡單的服務(wù)條目(echo) ... 130
9.3 日志守護(hù)進(jìn)程 132
9.3.1 rsyslog 132
9.3.2 systemd-journald . 138
9.4 cron 程序 . 139
9.4.1 crontab 文件 139
9.4.2 編輯crontab 文件 140
9.5 小結(jié) 141
第10 章 Linux 內(nèi)核 142
10.1 內(nèi)核到底是什么? 142
10.2 找到內(nèi)核源代碼 143
10.2.1 獲得正確的內(nèi)核版本 143
10.2.2 拆包內(nèi)核源代碼 . 144
10.3 構(gòu)建內(nèi)核 144
10.3.1 準(zhǔn)備配置內(nèi)核 145
10.3.2 內(nèi)核配置 146
10.3.3 編譯內(nèi)核 149
10.3.4 安裝內(nèi)核 150
10.3.5 引導(dǎo)內(nèi)核 151
10.3.6 它是無效的! 152
10.4 給內(nèi)核打補(bǔ)丁 . 152
10.4.1 下載和應(yīng)用補(bǔ)丁 . 153
10.4.2 如果補(bǔ)丁有效 155
10.4.3 如果補(bǔ)丁無效 155
10.5 小結(jié) 155
第11 章 API(虛擬)文件系統(tǒng) 156
11.1 /proc 目錄中有什么? 156
11.2 一些有用的/proc 條目 157
11.3 常見的proc 設(shè)置和報(bào)告 159
11.3.1 SYN 泛洪保護(hù) 160
11.3.2 高容量服務(wù)器上的問題 160
11.4 SysFS .161
11.5 cgroups 162
11.6 tmpfs 163
11.7 小結(jié) 164
第Ⅲ部分 網(wǎng)絡(luò)與安全
第12 章 TCP/IP 166
12.1 層 166
12.1.1 數(shù)據(jù)包 166
12.1.2 TCP/IP 模型和OSI 模型 ...167
12.2 報(bào)頭 170
12.2.1 以太網(wǎng) 170
12.2.2 IP(IPv4) 171
12.2.3 TCP 173
12.2.4 UDP 176
12.3 完整的TCP 連接 .176
12.3.1 打開連接 176
12.3.2 傳輸數(shù)據(jù) 177
12.3.3 關(guān)閉連接 178
12.4 ARP 的工作原理 178
12.5 把IP 網(wǎng)絡(luò)合并起來 180
12.5.1 主機(jī)和網(wǎng)絡(luò) 180
12.5.2 子網(wǎng) 181
12.5.3 子網(wǎng)掩碼 181
12.5.4 靜態(tài)路由 182
12.5.5 動(dòng)態(tài)路由和RIP 184
12.6 tcpdump 的細(xì)節(jié) 188
12.6.1 讀寫轉(zhuǎn)儲(chǔ)文件 .188
12.6.2 每個(gè)數(shù)據(jù)包捕獲或多或少的信息 188
12.6.3 性能影響 189
12.6.4 不要捕獲自己的網(wǎng)絡(luò)流量 189
12.6.5 解決慢名稱解析(DNS)的問題....189
12.7 IPv6 190
12.7.1 IPv6 地址格式 190
12.7.2 IPv6 地址類型 191
12.7.3 IPv6 向后兼容性 .191
12.8 小結(jié) 192
第13 章 網(wǎng)絡(luò)配置 193
13.1 模塊和網(wǎng)絡(luò)接口 193
13.1.1 網(wǎng)絡(luò)設(shè)備配置實(shí)用工具(ip、ifconfig 和nmcli) 194
13.1.2 示例用例:ifconfig、ip和nmcli . 194
13.1.3 在啟動(dòng)時(shí)設(shè)置NIC 197
13.2 管理路由 202
13.2.1 示例用法:路由配置 203
13.2.2 顯示路由 204
13.3 簡單的Linux 路由器 206
13.4 VPC、子網(wǎng)、IP和路由配置(AWS 云示例) 208
13.4.1 VPC 和子網(wǎng)(AWS) . 208
13.4.2 Internet 網(wǎng)關(guān)和路由(AWS) 208
13.4.3 安全組(AWS) . 210
13.4.4 在自己的子網(wǎng)(AWS)中啟動(dòng)Linux服務(wù)器 . 210
13.5 主機(jī)名配置 210
13.6 小結(jié) 212
第14 章 Linux 防火墻(Netfilter) 213
14.1 Netfilter 的工作原理 213
14.1.1 NAT 基礎(chǔ)知識(shí) 214
14.1.2 鏈 . 216
14.2 安裝Netfilter 218
14.3 配置Netfilter 219
14.3.1 保存Netfilter 配置 219
14.3.2 iptables 命令 221
14.3.3 firewalld . 225
14.4 實(shí)用的解決方案 227
14.4.1 簡單NAT:iptables 228
14.4.2 簡單NAT:nftables 228
14.4.3 簡單防火墻:iptables 229
14.5 小結(jié) 230
第15 章 本地安全 231
15.1 風(fēng)險(xiǎn)的常見來源 231
15.1.1 SetUID 程序 232
15.1.2 不必要的進(jìn)程 233
15.2 選擇正確的運(yùn)行級(jí)別 234
15.3 非人類用戶賬戶 234
15.4 受限的資源 235
15.5 降低風(fēng)險(xiǎn) 236
15.5.1 chroot .236
15.5.2 SELinux .238
15.5.3 AppArmor 239
15.6 監(jiān)視系統(tǒng) 239
15.6.1 日志記錄 239
15.6.2 使用ps 和netstat .240
15.6.3 監(jiān)視空間(使用df) 240
15.6.4 自動(dòng)化監(jiān)視 240
15.6.5 保持聯(lián)系(郵件列表) 240
15.7 小結(jié) 241
第16 章 網(wǎng)絡(luò)安全 242
16.1 TCP/IP 和網(wǎng)絡(luò)安全 242
16.2 跟蹤服務(wù) 243
16.2.1 使用netstat 命令 .243
16.2.2 netstat 輸出的安全含義 244
16.3 綁定接口 244
16.4 關(guān)閉服務(wù) 245
16.4.1 關(guān)閉xinetd 和inetd 服務(wù) ...245
16.4.2 關(guān)閉非xinetd 服務(wù) 245
16.5 監(jiān)視系統(tǒng) 246
16.5.1 充分使用syslog 246
16.5.2 使用MRTG 監(jiān)視帶寬 .247
16.6 處理攻擊 247
16.6.1 不要相信任何東西(也不要相信任何人) 247
16.6.2 修改密碼 248
16.6.3 拔掉插頭 248
16.7 網(wǎng)絡(luò)安全工具 . 248
16.7.1 nmap 248
16.7.2 Snort 248
16.7.3 Nessus 和OpenVAS .249
16.7.4 Wireshark/tcpdump 249
16.8 小結(jié) 249
第Ⅳ部分 Internet 服務(wù)
第17 章 域名系統(tǒng)(DNS) 252
17.1 主機(jī)文件 252
17.2 DNS 的工作原理 . 253
17.2.1 域名和主機(jī)命名約定 253
17.2.2 根域 253
17.2.3 子域 254
17.2.4 in-addr.arpa 域 255
17.2.5 服務(wù)器類型 256
17.3 安裝DNS 服務(wù)器 257
17.3.1 理解BIND 配置文件 258
17.3.2 具體信息 259
17.4 配置DNS 服務(wù)器 260
17.4.1 在named.conf 文件中定義主區(qū)域 261
17.4.2 在named.conf 文件中定義輔助區(qū)域 261
17.4.3 在named.conf 文件中定義緩存區(qū)域 262
17.5 DNS 記錄類型 262
17.5.1 SOA:權(quán)威的開始 262
17.5.2 NS:名稱服務(wù)器 263
17.5.3 A 和AAAA:地址記錄 ... 264
17.5.4 PTR:指針記錄 264
17.5.5 MX:郵件交換器 264
17.5.6 CNAME:規(guī)范名稱 265
17.5.7 RP 和TXT:文檔條目 265
17.6 設(shè)置BIND 數(shù)據(jù)庫文件 266
17.7 DNS 工具箱 270
17.7.1 host 270
17.7.2 dig 271
17.7.3 resolvectl 272
17.7.4 nslookup 272
17.7.5 whois . 273
17.7.6 nsupdate . 273
17.7.7 rndc 工具 273
17.8 配置DNS 客戶端 274
17.8.1 解析器 274
17.8.2 配置客戶端(傳統(tǒng)的) 275
17.9 小結(jié) 276
第18 章 文件傳輸協(xié)議(FTP) 277
18.1 FTP 的機(jī)制 277
18.2 獲取和安裝vsftpd 278
18.2.1 配置vsftpd . 278
18.2.2 啟動(dòng)和測(cè)試FTP 服務(wù)器 ... 279
18.3 定制FTP 服務(wù)器 . 282
18.3.1 設(shè)置只允許匿名的FTP服務(wù)器 282
18.3.2 使用虛擬用戶設(shè)置FTP服務(wù)器 283
18.4 小結(jié) 286
第19 章 Apache Web 服務(wù)器 288
19.1 理解HTTP 288
19.1.1 報(bào)頭 288
19.1.2 端口 289
19.1.3 進(jìn)程所有權(quán)和安全性 289
19.2 安裝Apache HTTP 服務(wù)器 .290
19.3 啟動(dòng)和關(guān)閉Apache 291
19.4 測(cè)試安裝 292
19.5 配置Apache 292
19.5.1 創(chuàng)建簡單的根級(jí)別頁面 293
19.5.2 Apache 配置文件 293
19.5.3 常見配置選項(xiàng) .293
19.6 Apache 故障排除 .297
19.7 小結(jié) 298
第20 章 簡單郵件傳輸協(xié)議(SMTP) .. 299
20.1 理解SMTP .299
20.1.1 基本的SMTP 細(xì)節(jié) 299
20.1.2 安全信息 300
20.1.3 電子郵件組件 .301
20.2 安裝Postfix 服務(wù)器 301
20.2.1 通過DNF 在Fedora、CentOS 或RHEL 發(fā)行版上安裝Postfix .301
20.2.2 在Ubuntu 中通過APT安裝Postfix 302
20.3 配置Postfix 服務(wù)器 302
20.3.1 main.cf 文件 302
20.3.2 檢查配置 304
20.4 運(yùn)行服務(wù)器 .305
20.4.1 檢查郵件隊(duì)列 .305
20.4.2 刷新郵件隊(duì)列 .305
20.4.3 newaliases 命令 305
20.4.4 確保一切正常 .305
20.5 小結(jié) 306
第21 章 郵局協(xié)議和Internet 郵件訪問協(xié)議(POP 和IMAP) .307
21.1 POP3 和IMAP 基礎(chǔ) 308
21.2 Dovecot (POP3 和IMAP服務(wù)器) . 309
21.3 安裝Dovecot 309
21.3.1 Dovecot 配置文件和選項(xiàng) . 310
21.3.2 配置Dovecot 312
21.3.3 運(yùn)行Dovecot 314
21.3.4 檢查基本的POP3 功能 314
21.3.5 檢查基本IMAP 功能 315
21.4 郵件服務(wù)的其他問題 316
21.4.1 SSL/TLS 安全性 . 316
21.4.2 可用性 318
21.4.3 日志文件 319
21.5 小結(jié) 319
第22 章 Internet 語音協(xié)議(VoIP) ..320
22.1 VoIP 概述 320
22.1.1 VoIP 服務(wù)器 320
22.1.2 模擬電話適配器(ATA) 321
22.1.3 IP 電話 321
22.1.4 VoIP 協(xié)議 321
22.2 VoIP 實(shí)現(xiàn) 322
22.3 Asterisk 323
22.4 Asterisk 的安裝 323
22.5 理解Asterisk 配置文件和結(jié)構(gòu) 324
22.5.1 撥號(hào)計(jì)劃:extensions.conf 328
22.5.2 模塊:modules.conf 328
22.6 Asterisk 網(wǎng)絡(luò)、端口和防火墻需求 329
22.7 配置PBX 330
22.7.1 本地?cái)U(kuò)展 331
22.7.2 外部連接(VoIP 中繼) 335
22.7.3 使用Twilio Elastic SIP Trunk來中繼 336
22.8 Asterisk 的維護(hù)和故障排除 342
22.8.1 Asterisk CLI 命令 342
22.8.2 有用的CLI 命令 342
22.8.3 VoIP 的常見問題 343
22.9 小結(jié) 344
第23 章 SSH .345
23.1 理解公鑰加密 . 345
23.2 SSH 基本信息(版本) 347
23.2.1 OpenSSH 和OpenBSD 347
23.2.2 SSH 客戶端的備選供應(yīng)商 347
23.2.3 在基于RPM的系統(tǒng)上安裝OpenSSH 348
23.2.4 在Ubuntu 中通過APT安裝OpenSSH 348
23.3 服務(wù)器的啟動(dòng)和停止 350
23.4 SSHD 配置文件 351
23.5 使用OpenSSH 351
23.5.1 ssh 客戶端程序 351
23.5.2 安全復(fù)制(scp)程序 354
23.5.3 安全FTP(sftp)程序 354
23.6 OpenSSH 客戶端使用的文件 . 355
23.7 小結(jié) 355
第Ⅴ部分 內(nèi)部網(wǎng)服務(wù)
第24 章 網(wǎng)絡(luò)文件系統(tǒng)(NFS) 358
24.1 NFS 的機(jī)制 358
24.1.1 NFS 的版本 358
24.1.2 NFS 的安全考慮 .359
24.1.3 分區(qū)的掛載和訪問 359
24.2 在Fedora、RHEL和CentOS中啟用NFS 360
24.3 在Ubuntu和Debian中啟用NFS 361
24.4 NFS 的組件 361
24.5 配置NFS 服務(wù)器 362
24.5.1 配置文件/etc/exports 362
24.5.2 告訴NFS 服務(wù)器關(guān)于/etc/exports的進(jìn)程信息 363
24.5.3 showmount 命令 364
24.5.4 服務(wù)器端NFS 問題的故障診斷 364
24.6 配置NFS 客戶端 365
24.6.1 mount 命令 .365
24.6.2 軟硬掛載 366
24.6.3 跨掛載磁盤 366
24.6.4 intr 選項(xiàng)的重要性 366
24.6.5 性能調(diào)優(yōu) 366
24.7 NFS 客戶端問題的診斷解決 .. 367
24.7.1 過期文件句柄 367
24.7.2 拒絕權(quán)限 367
24.8 示例NFS 客戶端和NFS服務(wù)器配置 368
24.9 NFS的常見用法 369
24.10 小結(jié) . 370
第25章 Samba 371
25.1 SMB機(jī)制 371
25.1.1 用戶名和密碼 371
25.1.2 加密的密碼 372
25.1.3 Samba守護(hù)進(jìn)程 . 372
25.1.4 通過RPM安裝Samba 373
25.1.5 通過APT安裝Samba . 373
25.2 Samba 的管理 . 373
25.3 創(chuàng)建共享 374
25.4 掛載遠(yuǎn)程Samba 共享 377
25.5 Samba 用戶 378
25.5.1 創(chuàng)建Samba 用戶 378
25.5.2 允許空密碼 378
25.5.3 使用smbpasswd 修改密碼 379
25.6 使用Samba 對(duì)Windows 服務(wù)器進(jìn)行身份驗(yàn)證 379
25.7 Samba故障診斷 381
25.8 小結(jié) 382
第26 章 分布式文件系統(tǒng)(DFS) 383
26.1 DFS 概述 383
26.2 DFS 實(shí)現(xiàn) 385
26.3 小結(jié) 389
第27 章 輕量級(jí)目錄訪問協(xié)議(LDAP) 390
27.1 LDAP 基礎(chǔ) . 390
27.1.1 LDAP 目錄 390
27.1.2 客戶端/服務(wù)器模型 391
27.1.3 LDAP 的使用 391
27.1.4 LDAP 術(shù)語 392
27.2 OpenLDAP . 392
27.2.1 服務(wù)器端守護(hù)進(jìn)程 392
27.2.2 OpenLDAP 實(shí)用程序 392
27.2.3 安裝OpenLDAP 393
27.2.4 配置OpenLDAP 394
27.2.5 配置slapd .394
27.2.6 啟動(dòng)和停止slapd 397
27.3 配置OpenLDAP 客戶端 398
27.4 搜索、查詢和修改目錄 399
27.5 使用OpenLDAP 進(jìn)行用戶身份驗(yàn)證 400
27.5.1 配置服務(wù)器 400
27.5.2 配置客戶端 401
27.6 小結(jié) 403
第28 章 打印 . 404
28.1 打印術(shù)語 404
28.2 CUPS .405
28.2.1 運(yùn)行CUPS 405
28.2.2 安裝CUPS 405
28.2.3 配置CUPS 406
28.3 添加打印機(jī) .407
28.3.1 本地打印機(jī)和遠(yuǎn)程打印機(jī) 407
28.3.2 使用Web 界面添加打印機(jī) ..408
28.3.3 使用命令行添加打印機(jī) ...409
28.4 常規(guī)CUPS 管理 410
28.4.1 設(shè)置默認(rèn)打印機(jī) 410
28.4.2 啟用、禁用和刪除打印機(jī) 410
28.4.3 接受和拒絕打印作業(yè) .410
28.4.4 管理打印特權(quán) 411
28.4.5 通過Web 界面管理打印機(jī) ..411
28.5 使用客戶端打印工具 411
28.5.1 lpr 411
28.5.2 lpq 412
28.5.3 lprm 412
28.6 小結(jié) 413
第29 章 動(dòng)態(tài)主機(jī)配置協(xié)議(DHCP) .. 414
29.1 DHCP 的機(jī)制 414
29.2 DHCP 服務(wù)器 415
29.2.1 通過RPM 安裝DHCP 軟件 415
29.2.2 在Ubuntu 上通過APT 安裝DHCP軟件 415
29.2.3 配置DHCP 服務(wù)器 415
29.2.4 示例dhcpd.conf 文件 418
29.3 DHCP 客戶端守護(hù)進(jìn)程 .420
29.4 小結(jié) 421
第30 章 虛擬化 422
30.1 為什么要虛擬化? 422
30.2 虛擬化的實(shí)現(xiàn) . 423
30.2.1 Hyper-V 423
30.2.2 基于內(nèi)核的虛擬機(jī)(KVM) ... 423
30.2.3 QEMU . 423
30.2.4 VirtualBox 424
30.2.5 VMware 424
30.2.6 Xen 424
30.3 KVM . 424
30.3.1 KVM 示例 425
30.3.2 管理KVM 426
30.4 在Ubuntu/ Debian 中設(shè)立KVM 427
30.5 容器 429
30.5.1 容器與虛擬機(jī) 429
30.5.2 Docker 430
30.6 小結(jié) 432
第31 章 備份 433
31.1 評(píng)估備份需求 . 433
31.1.1 數(shù)據(jù)量 . 433
31.1.2 備份硬件和備份介質(zhì) . 434
31.1.3 網(wǎng)絡(luò)吞吐量 434
31.1.4 數(shù)據(jù)恢復(fù)的速度和容易程度 435
31.1.5 重復(fù)數(shù)據(jù)的刪除 435
31.1.6 磁帶的管理 435
31.2 命令行備份工具 437
31.2.1 轉(zhuǎn)儲(chǔ)和恢復(fù) 437
31.2.2 tar 440
31.2.3 rsync 440
31.3 其他備份解決方案 440
31.4 小結(jié) 441
第Ⅵ部分 附錄
附錄A 在Flash/USB 設(shè)備上創(chuàng)建Linux安裝程序 444
附錄B 演示虛擬機(jī)和容器 450