基礎篇:包含系統簡介、系統入門和shell與shell命令等三章。通過本篇的學習,用戶可以掌握Linux相關的入門知識,且可以處理一般問題。管理篇:包含用戶和密碼管理、文件系統管理、進程與任務和管理、系統安裝與系統管理、設備管理和網絡管理等六章。本篇是UNIX/Linux系統的管理核心,通過本篇的學習,用戶可以掌握UNIX/Linux系統的核心管理內容,勝任日常管理工作。編程與開發篇:包含shell編程和C編程環境兩章。通過本篇的學習,為系統管理和開發打下基礎,從而使用戶的管理水平提升一個新層次。網絡應用篇:包含DHCP、ftp與tftp、telnet與ssh、samba、防火墻與系統安全、Internet接入與代理服務器、DNS、郵件服務和WEB服務等九章。本篇重點介紹的是Linux的網絡應用和網絡安全。通過本篇的學習可以使用戶了解和掌握常用服務器的工作原理和配置方法。
基礎篇
第1章 系統簡介 2
1.1 UNIX系統簡介 3
1.1.1 UNIX系統的發展歷史 3
1.1.2 UNIX系統的特點 6
1.2 Linux系統簡介 8
1.2.1 Linux系統的發展歷史 8
1.2.2 Linux系統的特點 9
1.2.3 Linux系統的發行版本介紹 10
1.2.4 Linux系統的應用 12
習題1 13
第2章 系統入門 14
2.1 系統的開機與界面切換 15
2.1.1 系統的開機 15
2.1.2 兩種操作界面及切換 16
2.2 用戶的登錄與注銷 17
2.2.1 系統的登錄 17
2.2.2 注銷 19
2.2.3 CLI終端仿真界面 20
2.2.4 程序的啟動 20
2.3 Linux系統的關閉與重啟動 21
2.3.1 字符界面 21
2.3.2 系統的運行級別及切換 22
2.3.3 圖形界面 23
2.4 Linux系統的圖形界面介紹 23
2.4.1 GNOME桌面簡介 24
2.4.2 Ubuntu的Unity桌面簡介 26
2.4.3 設置中心(Settings) 27
2.5 Linux系統的在線幫助與資源 29
2.5.1 man 29
2.5.2 textinfo 31
2.5.3 yelp 31
2.5.4 Linux系統的其他幫助和
資源 31
2.6 LibreOffice辦公套件簡介 32
2.6.1 LibreOffice Writer 33
2.6.2 LibreOffice Calc 33
2.6.3 LibreOffice Impress 34
2.6.4 LibreOffice Draw 34
習題2 34
實驗2 35
第3章 shell與shell基本操作 36
3.1 shell基本功能與基本概念 37
3.1.1 shell基本功能 37
3.1.2 字符與保留字 37
3.1.3 文件命名及文件類型 39
3.1.4 結構與路徑 41
3.1.5 shell命令格式與命令編輯 43
3.1.6 標準流與輸入/輸出重定向 45
3.1.7 管道與三通 47
3.1.8 環境變量與變量 48
3.1.9 引號機制、命令替換與變量
替換 49
3.1.10 shell命令的執行 50
3.1.11 shell種類 51
3.2 Linux系統的基本命令 52
3.2.1 基本操作命令 52
3.2.2 文件操作基本命令 54
3.2.3 文件屬性基本操作 60
3.2.4 文本文件編輯與操作基本
命令 62
3.2.5 日期、時間與時區管理
命令 70
3.2.6 進程管理基本命令 73
3.2.7 文件或比較命令 78
3.2.8 其他操作命令 82
習題3 88
實驗3 89
系統管理篇
第4章 用戶、組和密碼管理 92
4.1 UNIX系統的用戶和組 93
4.1.1 用戶與uid 93
4.1.2 組與gid 93
4.2 與用戶和組管理相關的文件 93
4.2.1 /etc/passwd 93
4.2.2 /etc/shadow 94
4.2.3 /etc/group 95
4.2.4 /etc/login.defs 95
4.2.5 其他文件 95
4.3 用戶管理命令 96
4.3.1 增加用戶(useradd) 96
4.3.2 用戶刪除(userdel) 98
4.3.3 用戶修改(usermod) 98
4.4 組管理命令 98
4.4.1 組創建(groupadd) 99
4.4.2 組刪除(groupdel) 99
4.4.3 組修改(groupmod) 99
4.5 密碼管理 100
4.5.1 密碼管理綜述 100
4.5.2 密碼管理命令(passwd) 100
4.5.3 密碼管理示例 101
4.6 用戶、組和密碼管理圖形界面 101
4.6.1 添加用戶 102
4.6.2 用戶屬性修改 102
4.6.3 用戶刪除 103
4.7 與用戶身份和位置相關的其他
命令 103
4.7.1 顯示與用戶和組相關的
身份信息(id) 103
4.7.2 顯示已登錄用戶的信息
(who) 104
4.7.3 顯示使用者的用戶名
(whoami) 105
4.7.4 向系統中的指定用戶發信息
(write) 105
4.7.5 向系統中已登錄的所有用
戶發信息(wall) 105
4.7.6 確定用戶所使用的終端
設備(tty) 105
4.7.7 不退出系統而將自己切換
成其他用戶(su) 106
4.7.8 以其他用戶身份執行程序
(sudo) 107
習題4 109
實驗4 109
第5章 文件系統管理及使用 110
5.1 文件系統權限及管理 111
5.1.1 三種權限 111
5.1.2 三類人 111
5.1.3 權限控制 111
5.1.4 默認權限與umask 112
5.2 權限管理命令 113
5.2.1 設置文件創建掩碼
(umask) 113
5.2.2 改變文件的權限
(chmod) 114
5.2.3 改變文件的所有者
(chown) 114
5.2.4 改變文件的組(chgrp) 115
5.2.5 ext2+文件系統的新增屬性
及其管理 115
5.3 文件系統管理 117
5.3.1 UNIX/Linux支持的文件
系統 117
5.3.2 UNIX/Linux系統使用的存
儲設備 119
5.3.3 磁盤分區管理與文件系統
的創建 120
5.3.4 文件系統的使用 125
5.3.5 文件系統的檢查、修復與
同步 130
5.4 與文件系統管理相關的其他命令 132
5.4.1 文件綜合查找命令
(find) 132
5.4.2 文件按名查找命令
(locate) 134
5.4.3 文件復制命令(dd) 135
5.4.4 鏈接管理命令(ln) 136
5.4.5 特別文件創建(mknod,
mkfifo) 136
5.4.6 磁盤空間和文件系統的使
用情況統計(df) 137
5.4.7 使用磁盤空間情況
統計(du) 138
5.4.8 數據備份與文件歸檔管理
(tar,cpio) 138
5.4.9 文件的壓縮與解壓縮 142
5.5 圖形界面下的文件和管理 145
習題5 146
實驗5 147
第6章 進程、任務與作業管理 148
6.1 程序和進程的概念 149
6.1.1 程序、進程、作業和任務 149
6.1.2 調度策略與優先級的計算 149
6.1.3 Linux操作系統的啟動 149
6.1.4 0#進程與1#進程 150
6.1.5 進程狀態及查詢(ps) 151
6.1.6 三類進程 152
6.2 登錄shell的啟動與定制 153
6.2.1 用戶登錄過程與登錄shell
的啟動 153
6.2.2 用戶登錄控制與shell的
定制 154
6.3 Linux系統的啟動過程分析 155
6.3.1 SysVinit 155
6.3.2 upstart 158
6.3.3 systemd 161
6.4 服務管理 165
6.4.1 systemctl 165
6.4.2 早期的服務管理 166
6.4.3 超級服務器(xinetd) 168
6.4.4 rc-local.service 171
6.5 進程管理與調度命令 171
6.5.1 可執行文件的setuid、
setgid權限和的sticky
屬性 171
6.5.2 進程管理與調度命令 173
6.5.3 改變進程的家
(chroot) 177
6.6 任務的自動調度 179
6.6.1 at和batch 179
6.6.2 crontab 181
6.6.3 系統crontab 183
6.7 進程管理圖形界面 183
習題6 183
實驗6 184
第7章 系統安裝、擴充、啟動與管理 185
7.1 系統安裝 186
7.1.1 安裝任務與準備 186
7.1.2 硬盤的物理結構與分區
劃分 186
7.1.3 安裝Linux系統所需的基本
分區 190
7.1.4 安裝過程 191
7.1.5 虛擬機的安裝與使用 195
7.2 引導器(grub) 196
7.2.1 grub常用術語 196
7.2.2 操作界面 197
7.2.3 grub及其配置 198
7.2.4 系統的啟動及啟動參數
修改 203
7.3 軟件包管理 205
7.3.1 紅帽系統的軟件包管理 205
7.3.2 ubuntu的軟件包管理 209
7.3.3 其他格式軟件包管理 212
7.3.4 圖形界面 214
7.4 系統升級 214
7.5 日志管理 215
7.5.1 日志系統 215
7.5.2 常見日志文件及閱讀 217
7.5.3 日志滾動 219
7.6 系統管理 220
7.6.1 系統管理的任務 220
7.6.2 系統管理工具與命令 221
7.7 內核配置與參數在線調整 226
7.7.1 內核配置、編譯與安裝 227
7.7.2 編譯與安裝新內核 229
7.7.3 模塊管理 230
7.7.4 內核參數在線調整 231
習題7 231
實驗7 232
第8章 設備管理 233
8.1 設備管理概述 234
8.1.1 Linux系統支持的設備 234
8.1.2 設備發現與udev簡介 235
8.1.3 系統設置與查看 236
8.2 打印機的管理與使用 238
8.2.1 cups的安裝 239
8.2.2 打印機安裝與配置 239
8.2.3 cups系統的啟動管理 242
8.2.4 打印機使用 243
8.2.5 打印任務管理 244
8.2.6 cups的配置文件 245
8.3 交換區管理 245
8.3.1 概述 245
8.3.2 使用交換設備 246
8.3.3 使用交換文件 247
8.4 串口的管理與使用 247
8.4.1 Linux系統的串口設備 247
8.4.2 串口管理程序(setserial) 248
8.4.3 串口和調制解調器管理及
通信程序(minicom) 249
習題8 251
實驗8 252
第9章 網絡配置、管理與基本應用 253
9.1 TCP/IP基礎知識 254
9.1.1 IP地址 254
9.1.2 端口及服務 256
9.1.3 物理地址與邏輯地址 257
9.1.4 主機名及設置 257
9.1.5 網卡命名方案 258
9.2 TCP/IP配置 259
9.2.1 與網絡有關的配置文件 259
9.2.2 網絡服務及管理 264
9.2.3 IP地址配置 265
9.3 網絡管理命令 268
9.3.1 測試網絡是否通(ping) 268
9.3.2 檢查網絡狀態(netstat) 269
9.3.3 地址解析協議緩存中的
項目管理(arp) 271
9.3.4 網絡接口配置(ifconfig) 272
9.3.5 網絡IP管理(ip) 273
9.3.6 網絡接口的啟用與停止
(ifup/ifdown) 274
9.3.7 路由表維護(route) 274
9.3.8 主機及地址查詢
(nslookup/host) 276
9.3.9 網絡路由跟蹤
(traceroute) 277
9.4 網絡應用常用命令簡介 277
9.4.1 遠程登錄 277
9.4.2 文件傳輸 278
9.4.3 郵件收發 278
9.4.4 文件下載 280
習題9 280
實驗9 281
第10章 Linux系統的安全 282
10.1 Linux系統安全概述 283
10.1.1 Linux操作系統的基本安
全機制 283
10.1.2 Linux系統可能遇到的安
全問題及防范策略 284
10.2 檢查和監督系統的運行情況 287
10.2.1 檢查網絡 287
10.2.2 用ps或pstree檢查進程 287
10.2.3 檢查系統的日志文件 287
10.2.4 停止不需要的服務 287
10.2.5 去掉多余的具有SUID和
SGID屬性的文件 288
10.3 入侵檢測和事件報告 288
10.3.1 使用完整性檢查工具 288
10.3.2 事件報告制度 289
10.4 防火墻 290
10.4.1 iptables 290
10.4.2 Firewalld 292
10.4.3 ufw 296
10.5 SELinux 297
10.5.1 SELinux中的安全類型和
角色 297
10.5.2 SELinux中的策略 299
10.5.3 SELinux的Targeted
策略 299
10.5.4 SELinux的策略及改變 300
10.5.5 SELinux中的布爾值及
改變 301
10.5.6 檢查SELinux的狀態 301
10.5.7 SELinux安全上下文
管理 302
10.5.8 SELinux的應用 304
習題10 306
實驗10 306
編程與開發篇
第11章 bshell編程 308
11.1 正則表達式 309
11.1.1 字符集 309
11.1.2 shell正則表達式 311
11.2 流編輯(sed) 311
11.2.1 功能及用法 311
11.2.2 參數與說明 312
11.2.3 腳本命令 312
11.2.4 sed示例 313
11.3 模式搜索與處理(awk) 314
11.3.1 功能及用法 314
11.3.2 參數說明 314
11.3.3 記錄和域 314
11.3.4 變量 314
11.3.5 操作符 315
11.3.6 控制語句 316
11.3.7 常用函數 316
11.3.8 awk程序的執行 317
11.3.9 awk使用示例 317
11.4 Bourne shell及其編程 318
11.4.1 特殊字符 318
11.4.2 I/O重定向 319
11.4.3 變量與參數 320
11.4.4 shell的狀態 321
11.4.5 shell的調用與變量傳遞 322
11.4.6 shell程序設計 323
11.4.7 命令行參數與選項的
處理 336
11.4.8 shell程序調試 340
11.4.9 shell腳本程序格式 341
習題11 344
實驗11 345
第12章 C/C++及其他編程環境 347
12.1 編譯器 348
12.1.1 功能及用法 348
12.1.2 參數及說明 348
12.1.3 示例 349
12.1.4 gcc/g++的工作過程 351
12.2 頭文件 351
12.3 鏈接器與庫文件 352
12.4 靜態庫 352
12.4.1 靜態庫的管理 352
12.4.2 構造靜態庫 353
12.4.3 使用自己的庫 353
12.5 共享庫 354
12.5.1 共享庫構造 354
12.5.2 共享庫的管理 354
12.5.3 共享庫編程 355
12.5.4 共享庫使用示例 356
12.6 make與Makefile 357
12.6.1 make的用法簡介 357
12.6.2 Makefile文件 358
12.6.3 Makefile示例 360
12.7 調試器(gdb) 363
12.7.1 gdb功能 363
12.7.2 gdb基本命令 364
12.7.3 程序調試方法 364
12.8 UNIX/Linux其他編程工具簡介 366
12.8.1 常用庫與GNOME/GTK
開發 366
12.8.2 KDevelop/Qt開發 367
12.8.3 eclipse 367
12.8.4 Java開發 368
12.8.5 Perl開發 369
12.8.6 數據庫開發 370
12.8.7 PHP開發 371
12.8.8 Objective-C開發 371
12.8.9 Python 372
12.8.10 R語言 373
12.8.11 虛擬化、云計算和大數
據應用 376
習題12 377
實驗12 378
網絡服務與應用篇
第13章 網絡時間服務NTP 380
13.1 NTP協議 381
13.1.1 NTP簡介 381
13.1.2 NTP的工作模式 381
13.1.3 NTP服務器選擇 382
13.2 通過ntp配置NTP 382
13.2.1 軟件包安裝 382
13.2.2 服務管理 382
13.2.3 配置文件及配置 383
13.2.4 文件/etc/sysconfig/ntpd和
/etc/default/ntp 385
13.2.5 防火墻設置 385
13.2.6 配置文件實例 385
13.2.7 配置測試 386
13.2.8 無NTP服務的NTP客
戶端 388
13.3 通過chrony配置NTP 389
13.3.1 chrony軟件包安裝 389
13.3.2 服務管理 389
13.3.3 配置文件chrony.conf及
默認配置 390
13.3.4 配置實例 391
13.3.5 配置測試 392
13.3.6 其他說明 394
習題13 394
實驗13 394
第14章 基礎服務OpenSSH和VNC 395
14.1 OpenSSH 396
14.1.1 OpenSSH協議 396
14.1.2 軟件安裝與啟動管理 396
14.1.3 配置文件與服務器設置 397
14.1.4 客戶端及應用 400
14.1.5 與防火墻和SELinux的
關系 402
14.2 VNC 403
14.2.1 紅帽的TigerVNC 403
14.2.2 客戶端及使用 405
14.2.3 Ubuntu的x11vnc 405
習題14 406
實驗14 406
第15章 Web服務器Apache 407
15.1 Apache概述 408
15.2 Apache的安裝和啟動 408
15.2.1 Apache的安裝 408
15.2.2 Apache服務器啟動管理 409
15.2.3 Apache服務的測試 410
15.3 Apache的配置文件和配置指令 410
15.3.1 Apache主配置文件的
結構 410
15.3.2 Apache的配置指令 411
15.4 Web服務器配置實例 420
15.4.1 Web服務器配置實例 421
15.4.2 Fedora的圖形配置工具 425
15.5 httpd與防火墻和SELinux的
關系 425
15.5.1 httpd與防火墻的關系 426
15.5.2 httpd與SELinux的關系 426
習題15 427
實驗15 427
第16章 DHCP服務器 428
16.1 DHCP介紹 429
16.1.1 DHCP協議 429
16.1.2 DHCP的工作過程 430
16.2 DHCP服務器的安裝與啟動
管理 431
16.2.1 DHCP服務器軟件安裝 431
16.2.2 啟動管理 431
16.3 DHCP的配置 432
16.3.1 配置文件 432
16.3.2 配置文件中的定義、參數
和選項及意義 434
16.4 DHCP規劃 436
16.4.1 在不同的網絡中使用
DHCP 436
16.4.2 設置DHCP中繼 436
16.4.3 設置備份DHCP 437
16.5 DHCP客戶端設置 438
16.6 DHCP與防火墻的關系 438
習題16 439
實驗16 439
第17章 FTP與TFTP服務器 440
17.1 FTP與FTP服務器概述 441
17.1.1 FTP的相關概念 441
17.1.2 Linux系統的FTP服
務器 443
17.2 vsftpd服務器 444
17.2.1 vsftpd服務器的安裝與
啟動 444
17.2.2 vsftpd的配置 445
17.2.3 vsftpd.conf的常見應用
配置 450
17.3 FTP服務器的使用 451
17.3.1 用瀏覽器訪問 451
17.3.2 使用客戶端命令ftp 451
17.4 TFTP與TFTP服務器的使用
簡介 457
17.4.1 TFTP協議 457
17.4.2 TFTP的安裝和配置及
應用 457
17.5 與防火墻和SELinux的關系 459
17.5.1 與防火墻的關系 459
17.5.2 與SELinux的關系 460
習題17 460
實驗17 461
第18章 網絡資源共享服務 462
18.1 網絡資源共享簡介 463
18.2 Samba服務 463
18.2.1 SMB協議與 Samba 463
18.2.2 Samba的安裝與啟動
管理 465
18.2.3 Samba的配置 466
18.2.4 配置共享打印機 471
18.2.5 Samba共享服務使用 472
18.2.6 Samba圖形界面配置 474
18.2.7 關于防火墻和SELinux的
說明 475
18.3 NFS服務器 476
18.3.1 NFS介紹 476
18.3.2 NFS文件系統配置 477
18.3.3 NFS系統使用 480
18.3.4 NFS的其他功能 481
18.3.5 關于NFS的其他說明 484
習題18 485
實驗18 485
第19章 域名服務器DNS 486
19.1 DNS概述 487
19.1.1 IP與域名的轉換 487
19.1.2 域名空間和區域 488
19.1.3 DNS查詢 489
19.1.4 客戶端與域名解析相關的
配置文件 490
19.1.5 DNS服務器的類型 490
19.2 BIND 491
19.2.1 BIND簡介 491
19.2.2 安裝BIND 491
19.2.3 bind的啟動管理 492
19.2.4 DNS服務器的運行方式及
工作 492
19.2.5 DNS服務器配置基礎 493
19.3 DNS服務器配置示例 499
19.4 測試DNS服務器 501
19.5 DNS與防火墻和SELinux的
關系 503
19.5.1 DNS與防火墻的關系 503
19.5.2 DNS與SELinux的關系 504
習題19 504
實驗19 504
參考文獻 505