前 言
1991年10月5日,Linus Torvalds 在一个在线新闻组上发布了一条简单的消息,向全世界介绍了Linux 操作系统的第一个版本。他(以及其他任何人)不知道的是,他开发出的Linux 后来成为世界上最受欢迎、最具颠覆性的操作系统之一。今天,整个行业和社区都围绕Linux 建立起来并蓬勃发展。而且,你很可能已经以某种形式使用过它(或从中受益)!本书是我们延续开放、探索和学习这种传统的第8 次尝试(希望能成功)。当读者能从本书中学到一些东西,并应用它自信地解决现实问题,对我们来说就成功了。
本书读者对象本书书名的最后一部分是“入门经典”,但假设你已经熟悉“高级用户”级别或更高级别的Microsoft Windows 服务器(或其他操作系统),假定你熟悉用于中小型计算机网络的术语和一些概念。任何与更大的网络或高级Windows 技术相关的经验将令读者从书中获得更多,但这不是必需的。
市面上已经有足够多的书仅指出应点击什么,而没有说明为什么;本书不应属于这一类。
除了具备Windows 背景外,我们假设你对本书中主题的更多信息感兴趣,而不仅是书中的内容。
毕竟,一些主题只有15~35 页,而这些主题有时需要用一整本书来专门讨论!因此,一些章节插入了指向其他资源的链接。读者最好采纳这些建议。
我们相信,经验丰富的Linux 系统管理员也可以从本书中受益,因为它可以作为一本讨论各种主题的快速指南。
本书的内容本书由6 部分组成。
第Ⅰ部分:简介与安装
第Ⅰ部分包括3章。第1章很好地概述什么是GNU/Linux,以及在几个关键领域比较它与Windows。
第2 章详细介绍如何安装服务器级的Fedora 和Ubuntu Linux 发行版。第3 章概述如何在一些流行的云平台上启动Linux 服务器。
理想情况下,第Ⅰ部分的内容应足以让读者入门,有助于读者根据其他操作系统的现有知识,了解Linux 的工作方式。第Ⅰ部分完成的一些服务器安装任务和设计选择可作为本书其他部分的参考和起点。
第Ⅱ部分:单主机管理
第Ⅱ部分介绍管理“独立”系统(即不需要或不向网络上的其他系统提供任何服务的系统)的必要内容。尽管服务器不提供任何服务的概念乍一看与直觉不符,但它是构建其他许多概念的基础,在以后理解基于网络的服务时,它将派上用场。第Ⅱ部分共8章.
第4 章涵盖使用Linux 命令行接口(CLI)的基础知识,以便读者能在没有GUI 的情况下工作。尽管可在GUI 桌面中管理Linux 系统,但最好能同时使用CLI 和GUI——对于管理Windows 系统也是如此。不相信吗?打开命令提示符,运行netsh,并尝试在GUI 中执行netsh 所执行的操作。
第5 章涵盖如何从预先打包的二进制文件和源代码中安装软件,以及如何执行标准的软件管理任务。该章学到和使用的一些软件安装技术在本书的大部分内容中都会用到。
第6 章涵盖Linux 平台上用户和组概念的基础知识,以及日常管理任务,如添加、删除用户和组,多用户操作,Linux 权限模型等。
第7 章记录整个开机和关机过程。该章详细介绍如何正确启动、关闭、添加、启用和禁用服务。
这些基本技能在书的后面会派上用场。
第8 章继续介绍文件系统的基础知识——文件系统的组织、创建以及管理(最重要)。
第9 章讨论操作基础知识,介绍基本工具,如xinetd、rsyslog、cron、systemd、journald 等。xinetd是Linux 版的Windows svchost,rsyslog 在统一框架中管理所有应用程序的日志记录。rsyslog 和journald是更灵活的Windows 事件查看器版本。
第10 章解释在Linux 中配置、编译和安装自定义内核的过程。这个功能为Linux 管理员提供了大量对系统操作方式的细粒度控制。
第11 章涵盖通过/proc 和/sys 文件系统进行的一些内核级调整。如该章所述,通过/proc 和/sys 查看和修改某些内核级配置和运行时变量的能力,为管理员提供了几乎无限的系统微调可能性。当这些应用得当时,可以说是一种比Windows 平台更好、更容易调整内核的方法。
第Ⅲ部分:网络与安全
第Ⅲ部分开始进入网络和安全的世界。我们不太清楚为什么要把这两个主题放在同一部分,但如果非要证明这一点的话,可以说:“网络是最邪恶的根源,因此需要保护。”然后我们会耸耸肩走开。
随着Internet 上安全和隐私日趋重要,以及SOX、HIPAA 等合规要求的发布,需要在高安全性场景中使用Linux。我们特意决定,在介绍基于网络的服务(第Ⅳ部分和第Ⅴ部分)之前,先讨论安全问题,以便了解一些基本的安全最佳实践,这些最佳实践有助于保护基于网络的服务不受攻击。
该部分从第12 章开始,概述了系统(和/或网络)管理员需要了解的TCP/IP 内容。第12 章详细介绍如何使用故障排除工具(如tcpdump)捕获数据包,并将其读取回来,逐步分析TCP 连接是如何工作的。
这些工具应该能有效地排除网络特性的故障。
第13 章关注基本网络配置(IPv4 和IPv6),回到管理问题。这包括设置IP 地址、路由条目等。
第14 章扩展基础知识,深入研究先进的网络概念,展示如何构建基于Linux 的防火墙和路由器。
介绍新的nftables 项目,它将取代现有的、流行的iptables 框架。
第15 章和第16 章详细讨论系统和网络安全的各个方面,包括特定于Linux 的问题以及一般的安全提示、技巧和常识,以便更好地配置系统,保护它免受攻击。
第Ⅳ部分:Internet 服务
本书有两个不同的部分:“Internet 服务”和“内部网服务”。尽管它们听起来很相似,但有区别。
Internet 服务定义为运行在Linux 系统上、直接暴露于Internet 的服务。例如Web 和域名系统(DNS)服务。内部网服务则定义为通常在防火墙后运行、用于内部用户的服务,这些服务大部分仅供内部使用。
本部分从第17 章开始,它涵盖了安装、配置和管理DNS 服务器所需的信息。除了运行DNS 服务器的实际细节外,还提供了关于DNS 如何工作的详细背景知识以及故障排除的一些技巧和工具。
在DNS 之后,就进入第18 章,其中涵盖了FTP 服务器的安装和维护。该章还介绍了FTP 的背景知识和它的发展。
第19 章继续讨论当今Linux 最流行的可能用途之一:使用流行的Apache 软件运行Web 服务器。
该章介绍了Apache Web 服务器的安装、配置和管理。
第20 章和第21 章通过设置和配置SMTP、POP 和IMAP 服务器深入介绍电子邮件。将介绍配置这三种工具所需的信息,并展示它们如何交互。选择探讨Postfix SMTP 服务器,而不是传统的Sendmail服务器,因为Postfix 提供了更灵活的服务器和更好的安全记录。
第22 章在这个版本中做了全新的修订。我们做了大量工作,花费了大量精力,来酝酿和提炼VoIP这个非常广泛的主题。在该章末尾,基于Asterisk 软件构建了一个简单的基于VolP 的PBX;它很容易扩展,来取代商用PBX 解决方案,或与第三方VoIP 提供商交互,以便与世界其他国家交流。
第Ⅳ部分以第23 章结束,了解如何设置、使用和管理SSH 服务在几乎任何GNU/Linux 环境中都是至关重要的。
第Ⅴ部分:内部网服务
再次强调,内部网服务定义为通常在防火墙后运行、供内部用户使用的服务,而且大多数仅供内部使用。即使在这种环境中,Linux 也提供了很多功能。
第24 章介绍NFS。NFS 已经存在了近30 年,在过去几年里不断发展、成长和适应。该章介绍NFS 的功能,包括如何设置客户端和服务器,以及如何排除故障。
第25 章通过对Samba 服务的介绍,继续了共享磁盘和资源的思想。使用Samba,管理员可以共享磁盘和打印设施,并为Windows(和Linux)用户提供身份验证,而不必安装任何特殊的客户机软件。
因此,Linux 可成为一个有效的服务器,能在UNIX/Linux 系统和Windows 系统之间支持和共享资源。
如果你对这类事情感兴趣,甚至可将Samba 配置为成熟的Active Directory Microsoft Windows 服务器的临时替代品!
第26 章在第Ⅴ部分,而不是第Ⅳ部分,是一个掷硬币的问题,因为DFS 可以在Internet 和Intranet场景中使用/部署。在当今以云为中心的世界中,DFS 解决方案尤其重要。在许多可用的DFS 实现中,我们选择讨论GlusterFS,因为它易于配置,在不同发行版中都获得了支持。
第27 章讨论目录服务,包括LDAP 以及管理员如何使用这个标准服务来提供一个集中的用户数据库(目录),以便在异构操作系统之间使用,并管理大量用户。
第28章介绍Linux打印子系统。打印子系统与Samba结合使用时,允许管理员支持从基于Windows的客户机进行无缝打印。这样就可在一台服务器上集中Linux、Windows 甚至macOS 用户的打印选项!
第29 章涵盖了Linux 系统的另一种常见用法:DHCP 服务器。本章讨论了如何部署Internet SystemsConsortium (ISC) DHCP 服务器,它提供了一组强大的特性和选项。
接下来是第30 章。几个月以来,我们一直在为该章的标题而苦恼和斟酌,因为该章涵盖了虚拟化和容器(容器化)。这一章最终命名为“虚拟化”,因为我们甚至不确定“容器化”是不是一个词;据一位编辑说,这是航运业的一个词!虚拟化则无处不在。它允许公司将以前需要几个专用裸机的服务和硬件整合到更少的裸机中。我们将讨论基本的虚拟化概念,并简要介绍Linux 中一些流行的虚拟化技术。该章还通过示例详细介绍了基于内核的虚拟机(Kernel-Based Virtual Machine,KVM)的实现。我们讨论的KVM 概念将有助于学习附录B 介绍的新功能。第30.5 节介绍“容器”。容器背后的概念是旧的,但又是新的。就像虚拟化一样,容器也无处不在,而且会一直存在。我们使用流行的Docker 平台实现容器,并指导如何部署容器样式的Web 服务器!
最后的第31 章讨论“备份”。备份可以说是管理中最关键的部分之一。基于Linux 的系统支持几种备份方法,这些方法易于使用,也很容易用于磁带驱动器和其他介质。该章讨论一些方法,并解释如何将它们用作备份计划的一部分。除了备份机制外,还讨论了一般的备份考虑事项、设计和优化。
第Ⅵ部分:附录
在书的最后,包括了一些有用的参考资料和现实世界的资源,可以用于日常工作,可在家里、教室或实验室使用。
附录A 详细介绍在非光学介质(如USB 闪存驱动器、SD 卡等)上创建安装介质的替代和通用方法。
附录B 是本书的另一个新添加内容。它涵盖了一个新功能:获取和使用为本书专门创建的容器和虚拟机映像文件。一旦启动VM 或容器,你将看到本书中讨论的大多数命令、脚本、软件包、黑客和服务器/守护进程。