作者介紹
張春曉,計算機軟體與理論碩士,長期從事UNIX及Linux系統維護達15年之久,對Shell編程有深入的研究。作者熱衷於UNIX的嚴謹與簡潔,又痴迷於Linux的自由與開放,整日與UNIX及Linux為伴,從中獲益匪淺。
圖書目錄
第一篇 Ubuntu入門
第1章 了解Ubuntu 3
1.1 什麼是Linux 3
1.2 Linux發行版 5
1.2.1 Debian 6
1.2.2 Ubuntu 6
1.2.3 Arch Linux 7
1.2.4 Fedora 8
1.2.5 OpenSUSE 8
1.2.6 CentOS 9
1.2.7 Red Hat Enterprise Linux 10
1.3 Ubuntu概述 10
1.3.1 什麼是Ubuntu 10
1.3.2 Ubuntu的版本 11
1.3.3 Ubuntu的特點 12
1.3.4 如何獲得Ubuntu 13
1.4 GNU GPL和POSIX介紹 14
1.4.1 什麼是GNU GPL 14
1.4.2 GNU GPL發展歷史 14
1.4.3 如何正確理解GNU GPL 15
1.4.4 了解POSIX標準 15
1.5 學習Ubuntu的方法 15
第2章 安裝Ubuntu 17
2.1 準備安裝Ubuntu 17
2.1.1 獲得安裝介質 17
2.1.2 Ubuntu的硬體要求 19
2.1.3 Ubuntu的安裝方式 20
2.2 虛擬機軟體 20
2.2.1 常見虛擬機軟體 20
2.2.2 選擇虛擬機軟體 21
2.2.3 安裝Oracle VM VirtualBox 21
2.3 安裝Ubuntu的方式 26
2.3.1 下載ISO鏡像檔案 26
2.3.2 創建虛擬機 26
2.3.3 安裝Ubuntu過程 29
2.4 通過網路安裝Ubuntu 35
2.4.1 下載網路安裝器 35
2.4.2 通過網路安裝Ubuntu步驟 35
2.5 將Ubuntu安裝到隨身碟中 41
2.5.1 Rufus工具 42
2.5.2 製作LiveUSB Ubuntu系統 42
2.6 安裝過程中的常見問題 44
2.6.1 選擇32位還是64位的Ubuntu 44
2.6.2 應該選擇哪種語言 45
2.6.3 Ubuntu中的磁碟分區與Windows中的磁碟分區 45
第3章 桌面環境 46
3.1 常見的桌面環境 46
3.1.1 KDE 46
3.1.2 GNOME 48
3.1.3 Xfce 50
3.1.4 Unity 51
3.2 使用Unity 52
3.2.1 選單欄 52
3.2.2 啟動器 54
3.2.3 Dash 55
3.2.4 工作區 56
3.2.5 管理視窗 58
3.2.6 檔案管理器 59
3.2.7 搜尋檔案和資料夾 61
3.2.8 定製桌面 63
3.3 使用GNOME 65
3.3.1 桌面布局 65
3.3.2 活動按鈕 66
3.3.3 工作區 66
3.3.4 浮動面板 67
3.3.5 顯示應用程式 68
3.3.6 鎖定、關閉或者重啟電腦 69
第4章 檔案系統基礎知識 70
4.1 檔案系統的層次結構 70
4.1.1 樹形層次結構 70
4.1.2 路徑名 72
4.1.3 Linux目錄結構 74
4.2 檔案類型 75
4.2.1 普通檔案 75
4.2.2 目錄檔案 78
4.2.3 字元設備檔案 79
4.2.4 塊設備檔案 80
4.2.5 管道 81
4.2.6 套接字 84
4.2.7 檔案連結 84
4.3 檔案許可權 87
4.3.1 檔案許可權概述 88
4.3.2 顯示檔案許可權 89
4.3.3 修改檔案許可權 91
4.3.4 更改檔案所有權 94
4.3.5 檔案特殊許可權 95
第5章 檔案和目錄管理 98
5.1 創建檔案 98
5.1.1 使用touch命令創建檔案 99
5.1.2 使用重定向創建檔案 99
5.1.3 使用vi命令創建檔案 101
5.2 顯示檔案列表 103
5.2.1 使用ls命令顯示檔案列表 103
5.2.2 顯示隱藏檔案 106
5.2.3 遞歸顯示目錄內容 107
5.3 顯示檔案內容 108
5.3.1 拼接檔案內容:cat命令 108
5.3.2 分屏顯示:more命令 111
5.3.3 前後翻頁分屏顯示:less命令 113
5.3.4 查看前幾行內容:head命令 113
5.3.5 查看最後幾行內容:tail命令 114
5.4 檔案的常用操作 116
5.4.1 複製檔案 116
5.4.2 移動檔案 118
5.4.3 刪除檔案 119
5.4.4 比較檔案 120
5.4.5 重命名檔案 122
5.5 搜尋檔案 122
5.5.1 快速搜尋檔案:locate命令 122
5.5.2 按類型搜尋:whereis命令 125
5.5.3 搜尋二進制檔案:which命令 125
5.5.4 全功能搜尋:find命令 126
5.6 文本內容篩選 127
5.6.1 使用grep命令檢索文本內容 128
5.6.2 篩選其他命令的輸出結果 129
5.6.3 在grep命令中使用正則表達式 130
5.7 文本排序 132
5.7.1 使用sort命令文本排序 133
5.7.2 合併有序檔案 134
5.8 檔案的壓縮和解壓 135
5.8.1 壓縮檔案 135
5.8.2 解壓檔案 138
5.9 目錄管理 139
5.9.1 顯示當前工作目錄 139
5.9.2 改變目錄 139
5.9.3 創建目錄 140
5.9.4 移動目錄 141
5.9.5 複製目錄 141
5.9.6 刪除目錄 141
第6章 用戶和許可權管理 142
6.1 用戶和用戶組基礎 142
6.1.1 用戶和用戶標識號 142
6.1.2 用戶組和組標識號 143
6.1.3 /etc/passwd檔案 144
6.1.4 /etc/shadow檔案 145
6.1.5 /etc/group檔案 146
6.2 用戶管理 147
6.2.1 添加用戶:useradd命令 147
6.2.2 添加用戶:adduser命令 148
6.2.3 修改用戶:usermod命令 150
6.2.4 刪除用戶:userdel命令 151
6.2.5 修改用戶密碼:passwd命令 152
6.2.6 顯示用戶信息:id命令 153
6.2.7 用戶間切換:su命令 154
6.2.8 受限的特權:sudo命令 154
6.3 用戶組管理 157
6.3.1 添加用戶組:groupadd命令 157
6.3.2 添加用戶組:addgroup命令 157
6.3.3 修改用戶組:groupmod命令 157
6.3.4 刪除用戶組:groupdel命令 158
6.4 許可權管理 158
6.4.1 許可權概述 158
6.4.2 改變檔案所有者:chown命令 160
6.4.3 改變檔案所屬組:chgrp命令 161
6.4.4 設定許可權掩碼:umask命令 162
6.4.5 修改檔案訪問許可權:chmod命令 163
6.4.6 修改檔案ACL:setfacl命令 165
6.4.7 查詢檔案ACL:getfacl命令 166
第二篇 進階篇
第7章 系統啟動和關閉 169
7.1 Ubuntu啟動過程 169
7.1.1 BIOS階段 169
7.1.2 引導程式階段 170
7.1.3 核心階段 173
7.1.4 進入系統 174
7.2 引導相關組件 174
7.2.1 主引導記錄 174
7.2.2 GRUB啟動程式 175
7.3 登錄 181
7.3.1 login進程 181
7.3.2 選擇Shell 183
7.3.3 用戶初始化檔案 185
7.4 關閉系統 187
7.4.1 shutdown命令 187
7.4.2 init命令 188
7.4.3 其他命令 188
第8章 服務和進程管理 189
8.1 初始化程式概述 189
8.1.1 初始化程式 190
8.1.2 systemd 196
8.1.3 systemd基本配置檔案 197
8.2 systemd單元 198
8.2.1 單元類型 198
8.2.2 列出單元 200
8.2.3 查看單元狀態 203
8.2.4 單元依賴 205
8.2.5 單元配置檔案 207
8.3 systemd單元管理 209
8.3.1 啟動服務 210
8.3.2 停止服務 210
8.3.3 重啟服務 210
8.3.4 重新載入服務配置檔案 211
8.3.5 查看服務狀態 211
8.3.6 配置服務自動啟動 212
8.3.7 禁止服務自動啟動 213
8.3.8 重新載入單元配置檔案 214
8.3.9 顯示服務屬性 214
8.3.10 設定服務屬性 216
8.4 常用systemd命令 216
8.4.1 systemd-analyze命令分析系統啟動時的性能 216
8.4.2 hostnamectl命令 219
8.4.3 localectl命令 220
8.4.4 timedatectl命令 220
8.4.5 loginctl命令 221
8.5 目標 222
8.5.1 理解目標 222
8.5.2 切換目標 225
8.5.3 默認目標 226
8.6 日誌管理 226
8.6.1 讀取日誌 226
8.6.2 過濾輸出 227
8.6.3 日誌大小限制 229
8.6.4 手動清理日誌 230
8.7 進程管理 231
8.7.1 查詢進程及其狀態 231
8.7.2 監控進程及系統資源 233
8.7.3 終止進程 238
8.7.4 調整進程優先權 239
第9章 軟體包管理 241
9.1 軟體包管理概述 241
9.1.1 軟體包管理基本概念 241
9.1.2 軟體包管理工具 243
9.2 apt-get命令 245
9.2.1 搜尋軟體包 245
9.2.2 apt-get命令基本語法 247
9.2.3 安裝軟體包 248
9.2.4 重新安裝軟體包 249
9.2.5 刪除軟體包 250
9.2.6 更新和升級軟體包 251
9.3 apt命令 253
9.3.1 apt命令基本語法 253
9.3.2 搜尋軟體包 253
9.3.3 安裝軟體包 254
9.3.4 刪除軟體包 254
9.3.5 更新和升級軟體包 255
9.4 aptitude命令 255
9.4.1 aptitude命令基本語法 255
9.4.2 搜尋軟體包 257
9.4.3 安裝軟體包 259
9.4.4 刪除軟體包 259
9.4.5 更新和升級軟體包 260
9.4.6 圖形化界面 260
9.5 synaptic軟體管理工具 261
9.5.1 安裝軟體包 261
9.5.2 刪除軟體包 264
9.5.3 更新和升級軟體包 265
第10章 磁碟和檔案系統管理 266
10.1 磁碟管理基礎 266
10.1.1 磁頭 266
10.1.2 磁軌 267
10.1.3 柱面 267
10.1.4 扇區 267
10.1.5 磁碟分區 268
10.2 檔案系統基礎知識 268
10.2.1 常見檔案系統 269
10.2.2 塊 271
10.2.3 引導塊 272
10.2.4 超級塊 272
10.2.5 索引節點 272
10.3 創建檔案系統 273
10.3.1 創建分區 273
10.3.2 mkfs命令 278
10.3.3 創建ext2/ext3/ext4檔案系統 281
10.3.4 創建NTFS檔案系統 282
10.3.5 創建FAT檔案系統 282
10.3.6 調整檔案系統 284
10.4 掛載與卸載檔案系統 285
10.4.1 掛載點 285
10.4.2 mount和findmnt命令 286
10.4.3 /etc/fstab檔案 289
10.4.4 手工掛載檔案系統 290
10.4.5 自動掛載檔案系統 291
10.4.6 卸載檔案系統 291
10.5 檢查與修復檔案系統 292
10.5.1 fsck和e2fsck命令 293
10.5.2 互動式檢查與修復檔案系統 294
10.5.3 自動檢查與修復檔案系統 294
10.5.4 恢復嚴重受損的超級塊 295
10.6 磁碟陣列 296
10.6.1 磁碟陣列概述 296
10.6.2 磁碟陣列級別 296
10.6.3 創建磁碟陣列 299
10.7 邏輯卷管理 305
10.7.1 邏輯卷管理基本概念 305
10.7.2 安裝LVM 306
10.7.3 創建物理卷 306
10.7.4 創建卷組 309
10.7.5 創建邏輯卷 310
10.7.6 擴展邏輯卷 311
10.7.7 壓縮邏輯卷 312
第11章 網路管理 314
11.1 網路接口 314
11.1.1 查看網路接口 314
11.1.2 網路接口命名 319
11.1.3 配置網路接口IP位址 319
11.1.4 域名解析 323
11.2 常用網路配置命令 324
11.2.1 ifconfig命令 324
11.2.2 ip命令 326
11.2.3 route命令 333
11.2.4 netstat命令 335
11.2.5 nslookup命令 338
11.2.6 ping命令 339
11.3 防火牆 340
11.3.1 ufw簡介 340
11.3.2 ufw配置 340
11.3.3 ufw與套用系統的整合 342
11.3.4 ufw日誌管理 344
第三篇 精通Linux
第12章 Shell編程 347
12.1 Shell編程基礎 347
12.1.1 Shell 347
12.1.2 Shell腳本 348
12.1.3 Shell腳本的執行方法 349
12.1.4 位置參數 350
12.1.5 內部命令 351
12.2 變數 353
12.2.1 變數分類 353
12.2.2 變數聲明 354
12.2.3 變數賦值 355
12.2.4 變數的引用和替換 355
12.2.5 變數的間接引用 356
12.2.6 特殊變數替換 357
12.2.7 單引號和雙引號 358
12.2.8 命令替換 359
12.3 算術運算 359
12.3.1 let命令 360
12.3.2 expr命令 360
12.3.3 $(())表達式 361
12.3.4 $[]表達式 361
12.4 數組 361
12.4.1 定義數組 362
12.4.2 獲取數組長度 363
12.4.3 遍歷數組 363
12.4.4 刪除元素 365
12.4.5 數組切片 365
12.4.6 數組替換 366
12.5 條件測試 366
12.5.1 條件測試語法 367
12.5.2 檔案測試 367
12.5.3 字元串測試 370
12.5.4 整數值測試 371
12.5.5 邏輯運算符 372
12.6 條件語句 372
12.6.1 if語句 373
12.6.2 case語句 375
12.7 循環語句 377
12.7.1 for語句 377
12.7.2 while語句 379
12.7.3 until語句 381
12.7.4 select語句 382
12.7.5 嵌套循環 384
12.7.6 continue和break語句 384
12.8 信號的捕獲與處理 387
12.8.1 信號 387
12.8.2 捕獲信號 388
第13章 網路服務管理 391
13.1 SSH服務 391
13.1.1 SSH協定 391
13.1.2 配置SSH服務 392
13.1.3 管理SSH服務 395
13.1.4 使用賬號密碼登錄SSH服務 396
13.1.5 使用密鑰對登錄SSH服務 397
13.2 FTP檔案傳輸服務 402
13.2.1 FTP檔案傳輸協定 402
13.2.2 安裝vsftpd 402
13.2.3 vsftpd配置檔案 403
13.2.4 管理FTP用戶:匿名用戶、本地用戶、虛擬用戶 406
13.2.5 演示:使用FTP傳輸檔案 411
13.3 DNS域名服務 416
13.3.1 域名、IP位址、域名伺服器 417
13.3.2 BIND以及組件 418
13.3.3 BIND配置檔案 418
13.3.4 配置區域 424
13.3.5 資源記錄 425
13.3.6 演示:DNS伺服器配置實例 427
13.4 NFS服務 430
13.4.1 安裝NFS服務 431
13.4.2 已分享檔案系統 431
13.4.3 掛載NFS檔案系統 433
13.4.4 NFS檔案系統許可權 434
13.5 其他網路服務管理 437
13.5.1 Samba資源共享 437
13.5.2 Apache全球資訊網服務 441
13.5.3 MySQL資料庫服務 444
第14章 虛擬化和雲計算 447
14.1 虛擬化基礎知識 447
14.1.1 虛擬化技術 447
14.1.2 常用虛擬化方案 447
14.2 KVM 448
14.2.1 KVM及其相關組件 448
14.2.2 安裝KVM 448
14.2.3 創建虛擬機 449
14.2.4 管理虛擬機 451
14.3 Docker 452
14.3.1 Docker以及基礎知識 452
14.3.2 安裝Docker 453
14.3.3 使用鏡像 454
14.3.4 管理容器 456
14.3.5 使用網路:外部訪問容器 459
14.3.6 使用網路:容器互聯 461
14.4 LXC和LXD 461
14.4.1 LXC和LXD簡介 462
14.4.2 安裝LXD 462
14.4.3 創建容器 463
14.4.4 列出容器 464
14.4.5 查看容器 466
14.4.6 管理容器 466
14.4.7 與容器互動 467
14.4.8 管理鏡像 469
14.5 OpenStack 471
14.5.1 OpenStack的核心組件 471
14.5.2 通過DevStack部署OpenStack 473
14.5.3 儀錶盤 474
14.5.4 實例管理 478
14.5.5 鏡像管理 486
14.5.6 卷管理 488
14.5.7 網路管理:網路拓撲 489
14.5.8 網路管理:網路的修改和刪除 490
14.5.9 網路管理:路由 494
14.5.10 網路管理:安全組 496
第15章 系統和網路安全 499
15.1 用戶管理安全 499
15.1.1 管理好root用戶 499
15.1.2 用戶資料安全 500
15.1.3 密碼策略 501
15.2 防火牆 503
15.2.1 ufw 503
15.2.2 IP偽裝 504
15.2.3 日誌 504
15.3 AppArmor 505
15.3.1 安裝AppArmor 505
15.3.2 使用AppArmor 505
15.3.3 AppArmor配置檔案 507
15.4 數字證書 509
15.4.1 獲取數字證書 509
15.4.2 生成密鑰 509
15.4.3 生成證書籤署請求 510
15.4.4 安裝證書 511
15.5 弱點掃描 511
15.5.1 安裝OpenVAS 512
15.5.2 OpenVAS儀錶盤 514
15.5.3 掃描任務管理 514
15.5.4 掃描報表 516
15.6 入侵檢測 518
15.6.1 安裝Snort 518
15.6.2 Snort配置檔案 519
15.6.3 Snort檢測規則 519
15.6.4 測試Snort 521