
本书以红帽系列Linux的**发行版Fedora 35为蓝本,坚持理论够用并侧重实用的原则,通过案例、示例讲解每个知识点,对Linux做了较为详尽的阐述。全书结构清晰、通俗易懂,力争使读者可以饶有兴趣地学习Linux。本书是一本优秀的Linux入门教材,主要针对技术型读者,尤其是计算机及相关专业的学生。
本书共7章,主要内容包括: Linux简介与安装、Linux的用户接口与文本编辑器、系统管理、磁盘与文件管理、软件包管理、组建Linux局域网、提供Internet服务。
本书适合作为本科院校及高职高专院校计算机相关专业学生的教材,也可供培养技能型紧缺人才的机构使用。
Linux是一款免费的类UNIX操作系统,它继承了UNIX操作系统的强大功能和极高的稳定性。Linux最初由芬兰赫尔辛基大学的学生Linus Torvalds创建,并于1991年首次发布。Linus允许免费和自由地使用该系统的源代码,并鼓励其他人进一步对其进行开发。为了更利于Linux的发展,根据GNU GPL(general public license,通用公共许可证)可以对其内核进行发布,从而赢得了许多专业人员的支持,将GNU项目的许多成果移植到了Linux操作系统上。在许多技术人员、研究人员和众多Linux爱好者的支持下,原Linux版本中的错误逐渐消除,并且不断添加新的功能。现在Linux已经成为一个功能强大、稳定可靠的操作系统。
Fedora是Red Hat公司开发的一种Linux发行版,是当今世界上最流行的Linux发行版之一,其版权遵循GNU GPL。它给PC带来了UNIX工作站的强大功能和灵活性,并且提供了全套的因特网应用软件和功能齐全、简单易用的GUI桌面环境。
为了满足Linux操作系统教学方面的需求,编者编写了本书。本书介绍了在实际项目中常用的知识点和操作技巧,是广大读者步入Linux殿堂不可多得的一本指导书,可以为读者以后深入学习Linux打下坚实的基础。
一本好的入门教材可以让读者快速领悟Linux的操作方式和系统的基本应用方法。
目前Linux的入门教材主要针对两类读者: 非技术型读者和技术型读者。
非技术型读者: 对Linux不是太感兴趣,只是用Linux上网、听音乐、编辑文档等。针对非技术型读者的入门教材以插图为主,讲的内容主要是在GUI下的操作(用鼠标),所以这种使用Linux的方式还是Windows的思维方式。
技术型读者: 对Linux很感兴趣。针对技术型读者的入门教材,一开始就从系统的基本命令开始讲解,脱离Windows的思维方式,这样不仅会给读者以后进一步的学习带来极大的帮助,也能使读者逐步领悟Linux的精髓(命令行)所在。
本书针对的是技术型读者,主要是计算机专业或相关专业的学生。
本书共有7章。第1章主要介绍了Fedora的详细安装过程、引导工具GRUB2的使用。第2章介绍了Linux中的用户接口,特别是命令行。通过这部分的学习,读者可以真正成为Linux命令行的入门者;然后详细地介绍了vim编辑器的使用。当远程维护Linux服务器时,vim是常用的工具。Fedora在系统和文件管理方面与标准的UNIX操作系统水平相当,这些功能在第3和第4章中介绍。第5章主要介绍如何使用rpm和dnf命令进行软件包的管理。一直以来,Linux的优势在于网络服务方面。第6章介绍了组建Linux局域网方面的内容,有DHCP、Samba、NFS服务器以及防火墙等的设置。第7章对Fedora中的常用网络服务进行了介绍,这些网络服务有DNS、WWW、FTP以及邮件服务器。
本书的重点在前4章,只有学好前4章,读者才算对Linux真正入门,后面几章的学习才会比较轻松,甚至可以自学。随着读者学习的不断深入,就可以在Linux的世界里纵深发展了。本书是一本优秀的入门教材,希望读者在学习的过程中重基础、重理论,切忌浮躁。
本书编写时以Fedora的最新发行版Fedora 35为蓝本。由于Fedora每隔半年会有新的发行版出现,因此,读者拿到本书时,很可能有Fedora 36/37/38/39/40等新的版本可以使用。在此,编者建议读者选用最新的Fedora发行版进行学习。因为本书的目的是为读者使用Linux打下坚实的基础,因此,本书所写多数内容为红帽系列Linux操作系统共性的知识和技术,仍然适用于Fedora 35的若干后续版本。
本书由高校教师、北京邮电大学计算机专业博士张同光担任主编,由田文强、石庆民、安子强、高雪霞、田乔梅担任副主编,参加编写的人员还有刘春红和陈明。刘春红工作于河南师范大学,陈明工作于郑州轻工业大学,其他编者工作于新乡学院。其中,田文强编写第1章的1.1节、1.2节和第2章,石庆民编写第1章的1.3~1.5节和第4章的4.1节,安子强编写第3章的3.1节、3.2节和第4章的4.7节,高雪霞编写第6章的6.2~6.6节,田乔梅编写第3章的3.3~3.5节,刘春红和陈明编写第4章的4.8节,张同光编写第4章的4.2~4.6节、第5章、第7章及其余部分。其他执笔者还有田孝鑫、楚莉莉、王根运、张家平、宋丽丽、沈林、王晓兵等。全书最后由张同光统稿和定稿。
本书得到了河南省科技攻关项目(No.202102210146)和网络与交换技术国家重点实验室开放课题(SKLNST2020101)的支持,在此表示感谢。
由于编者水平有限,书中欠妥之处,敬请广大读者批评指正。
编者
2021年11月
第1章Linux简介与安装1
1.1Linux简介1
1.1.1Linux的起源2
1.1.2Linux的特点4
1.1.3Linux的版本4
1.2硬盘分区7
1.2.1MBR分区7
1.2.2GPT分区9
1.3实例——在VirtualBox中安装Fedora11
1.3.1安装VirtualBox11
1.3.2安装Fedora12
1.4使用U盘安装Fedora19
1.4.1硬盘分区示例19
1.4.2实例——在Fedora中制作BIOS启动的U盘安装盘19
1.4.3实例——在Fedora中制作UEFI/BIOS启动的U盘安装盘21
1.5引导工具GRUB2的设置与应用22
1.5.1GRUB2与GRUB Legacy的区别22
1.5.2GRUB2配置文件23
1.5.3GRUB2脚本的修改24
1.5.4GRUB2多余引导项的删除27
1.5.5GRUB2命令行环境的常用命令27
1.5.6实例——GRUB2的应用30
1.6本章小结31
1.7习题31
第2章Linux的用户接口与文本编辑器33
2.1GNOME及其配置工具33
2.1.1GNOME33
2.1.2GNOME Shell和GNOME Classic34
2.1.3GNOME配置工具: gsettings、dconf、dconfeditor35
2.1.4GDM38
2.1.5gnomesession38
2.1.6输入法39
2.2Shell39
2.2.1控制台与终端40
2.2.2Shell命令行40
2.2.3命令、子命令、选项和参数的自动补全功能41
2.2.4历史命令: history41
2.2.5命令别名: alias43
2.2.6通配符与文件名44
2.2.7输入/输出重定向与管道46
2.2.8Linux快捷键49
2.3Linux中的文本编辑器简介51
2.3.1GNOME中的文本编辑器51
2.3.2vi、vim与Emacs文本编辑器51
2.3.3nano52
2.4vim的5种编辑模式53
2.5实例——使用vim编辑文件56
2.6本章小结60
2.7习题60
Linux操作系统实用教程(Fedora)
第3章系统管理62
3.1用户管理62
3.1.1用户管理命令: useradd、passwd、userdel、usermod、chage62
3.1.2组管理命令: groupadd、groupdel、groupmod、gpasswd、newgrp66
3.1.3用户查询命令: who、w、id、whoami、last、lastlog69
3.1.4su和sudo命令72
3.2进程管理79
3.2.1监视进程命令: ps、pstree、top79
3.2.2搜索进程命令: pgrep、pidof、ps|grep86
3.2.3终止进程命令: kill、killall、pkill、xkill87
3.2.4进程的优先级命令: nice、renice89
3.2.5前台进程和后台进程命令与快捷键: command &、Ctrl+z、jobs、fg、bg91
3.2.6周期性/定时执行任务命令: crontab、at、batch、watch91
3.2.7以守护进程方式执行任务命令: nohup97
3.2.8终端复用器: tmux97
3.3系统和服务管理97
3.3.1系统和服务管理器: systemd97
3.3.2监视和控制systemd的命令: systemctl98
3.3.3系统资源: 单元100
3.3.4单元的配置文件101
3.3.5target(目标)、runlevel(运行级别)104
3.3.6systemd定时器107
3.3.7使用systemd开机自动启动用户程序109
3.3.8使用rc.local开机自动启动用户程序110
3.3.9systemd系统管理111
3.3.10日志管理: journalctl112
3.4其他系统管理113
3.4.1查询系统信息: uname、hostname、free、uptime、dmidecode、lscpu、
lsmem、lspci、lsusb113
3.4.2/proc和sysctl命令117
3.4.3系统日志和dmesg命令119
3.4.4关机等命令: shutdown、halt、reboot、poweroff、runlevel、logout、
startx120
3.4.5其他命令: man、date/hwclock、cal、eject、clear/reset121
3.5系统监视124
3.5.1GNOME系统监视器: gnomesystemmonitor命令124
3.5.2系统活动情况报告: sar命令124
3.6本章小结128
3.7习题128
第4章磁盘与文件管理130
4.1磁盘管理130
4.1.1文件系统挂载命令和文件: fdisk l、mount、umount、findmnt、lsblk、
blkid、partx、/etc/fstab、e2label/xfs_admin130
4.1.2查看磁盘空间命令: df、du138
4.1.3其他磁盘相关命令: fdisk、mkfs、mkswap、fsck、vmstat、iostat140
4.1.4制作镜像文件命令: dd、cp、mkisofs148
4.1.5数据同步命令: sync150
4.2文件与管理151
4.2.1Linux文件系统的结构151
4.2.2查看内容命令: cd、pwd、ls、nautilus153
4.2.3查看文件内容命令: more、less、cat、tac、nl、head、tail、wc157
4.2.4检查文件类型命令: file、stat159
4.2.5文件完整性命令: cksum、md5sum161
4.2.6文件与的创建、复制、删除、转移及重命名命令: touch、mkdir、
rmdir、mv、rm、cp163
4.2.7文件搜索命令: find、locate、which、whereis、type168
4.2.8文件操作命令: grep、sed、awk、tr172
4.2.9文件的追加、合并、分割命令: echo、cat、uniq、cut、paste、join、split179
4.2.10文件的比较、排序命令: diff、patch、cmp、sort185
4.2.11文件的链接命令: ln190
4.2.12设备文件命令: mknod191
4.2.13进程与文件命令: lsof192
4.2.14文件下载命令: curl、wget、HTTPie194
4.3文件与的安全196
4.3.1chmod与umask命令196
4.3.2chown命令199
4.3.3chgrp命令200
4.3.4chroot命令200
4.4强制位与粘贴位201
4.5文件隐藏属性: lsattr、chattr命令203
4.6访问控制列表(ACL): getfacl、setfacl、chacl命令205
4.7文件的压缩与解压缩210
4.7.1gzip和gunzip命令210
4.7.2bzip2、bunzip2命令213
4.7.3xz命令213
4.7.47z、7za命令214
4.7.5zcat、zless、bzcat、bzless命令215
4.7.6tar命令215
4.7.7cpio命令218
4.8文件关联219
4.8.1MIME类型219
4.8.2添加自定义MIME类型220
4.9本章小结222
4.10习题222
第5章软件包管理225
5.1RPM225
5.1.1RPM简介225
5.1.2RPM的使用227
5.2DNF232
5.2.1DNF简介232
5.2.2使用dnf命令232
5.2.3DNF的配置文件234
5.2.4BaseOS和Application Stream237
5.2.5安装第三方源239
5.2.6创建本地仓库240
5.2.7升级系统(Fedora)241
5.3软件包管理GUI: gnomesoftware命令241
5.4本章小结241
5.5习题242
第6章组建Linux局域网243
6.1网络接口配置243
6.1.1GUI方式: gnomecontrolcenter、nmconnectioneditor命令244
6.1.2CLI方式: nmcli命令245
6.1.3systemdresolved和resolvectl命令247
6.1.4ifconfig、dhclient、route、ping、traceroute命令250
6.1.5nettools与iproute2工具包253
6.2DHCP服务器257
6.2.1DHCP概述257
6.2.2实例——设置DHCP服务器258
6.2.3实例——设置DHCP客户机264
6.3Samba服务器266
6.3.1Samba概述266
6.3.2实例——配置Samba服务器267
6.3.3Samba服务器的配置文件269
6.3.4SELinux: getsebool、setsebool、chcon、restorecon命令271
6.4NFS服务器276
6.4.1NFS服务简介276
6.4.2NFS服务器端的配置276
6.4.3NFS客户端的配置279
6.5防火墙的设置——iptables279
6.5.1Netfilter/iptables简介279
6.5.2iptables的语法及其应用280
6.5.3实例——防火墙的设置: iptables282
6.5.4实例——NAT的设置: iptables285
6.6防火墙的设置——firewalld289
6.6.1firewalld简介289
6.6.2firewalld配置: firewallconfig、firewallcmd命令292
6.6.3实例——NAT的设置: firewallcmd命令300
6.7代理服务器Squid的设置301
6.7.1代理服务器Squid简介302
6.7.2实例——局域网使用Squid共享上网303
6.8本章小结308
6.9习题308
第7章提供Internet服务311
7.1SSH311
7.1.1SSH简介311
7.1.2SSH服务器的设置312
7.1.3SSH客户端的应用312
7.1.4SSH客户端通过密钥访问SSH服务器313
7.2Linux终端复用器——Tmux313
7.2.1Tmux简介313
7.2.2Tmux的会话、窗口、窗格314
7.2.3实例——登录远程服务器使用Tmux316
7.3DNS服务及配置317
7.3.1DNS概述317
7.3.2Bind319
7.3.3实例——设置DNS服务器319
7.3.4view命令327
7.3.5测试DNS服务器: nslookup、host、dig命令330
7.3.6辅助DNS服务器332
7.3.7Cacheonly服务器332
7.4WWW服务器的设置——Apache333
7.4.1Apache333
7.4.2Apache服务器的默认配置333
7.4.3实例——静态网站建设335
7.4.4实例——为每个用户配置Web站点335
7.4.5实例——配置基于IP地址的虚拟主机337
7.4.6实例——基于主机的授权339
7.4.7实例——基于用户的认证340
7.4.8实例——组织和管理Web站点342
7.4.9CGI运行环境的配置343
7.5WWW服务器的设置——Nginx344
7.5.1安装 Nginx345
7.5.2安装PHP和PHPFPM345
7.5.3安装 MariaDB345
7.5.4MariaDB的简单应用346
7.5.5实例——动态网站建设(LNMP)350
7.6FTP服务器的设置351
7.6.1FTP概述351
7.6.2实例——设置FTP服务器(vsftpd)353
7.6.3FTP客户端(FileZilla)357
7.7邮件服务器简介358
7.8本章小结360
7.9习题361
附录网站资源362
参考文献363
本书的重点在前4章,只有学好前4章,读者才算对Linux真正入门,后面几章的学习才会比较轻松,甚至可以自学。随着读者学习、掌握越来越多的计算机主要课程的相关知识,你就可以在Linux的世界里纵深发展了。因此,本书是一本比较好的入门教材。也希望读者在学习的过程中重基础、重理论,切忌浮躁。
张同光,男,43岁,博士,副教授,主要从事计算机方面的教学及科研工作,发表论文30余篇,主编教材10余本,主持项目3个。
教授的课程:《Linux 0.11内核分析》、《Linux操作系统》、《嵌入式软件开发基础》、《Linux C编程》、《Linux网络服务与编程》、《Linux驱动程序设计》、《嵌入式软件开发高级》、《软件工程》、《C++程序设计》、《微机原理》、《网络原理》、《计算机专业英语》、《操作系统原理》、《离散数学》、《计算机组成原理》、《C程序设计》、《数据结构》、《汇编语言》、《网络安全技术》等。张同光,男,43岁,博士,副教授,主要从事计算机方面的教学及科研工作,发表论文30余篇,主编教材10余本,主持项目3个。
教授的课程:《Linux 0.11内核分析》、《Linux操作系统》、《嵌入式软件开发基础》、《Linux C编程》、《Linux网络服务与编程》、《Linux驱动程序设计》、《嵌入式软件开发高级》、《软件工程》、《C++程序设计》、《微机原理》、《网络原理》、《计算机专业英语》、《操作系统原理》、《离散数学》、《计算机组成原理》、《C程序设计》、《数据结构》、《汇编语言》、《网络安全技术》等。