Linux 操作系统管理

13 2025年4月 | 阅读 20 分钟

什么是 Linux 系统管理?

Linux 系统管理是一套用于管理 Linux 系统的知识和技能,由于其平台的自由性、安全性和低成本,它被广泛应用于各个领域。因此,作为一名 Linux 系统管理员,您需要处理与服务器、网络和其他基础设施系统相关的基础设施故障。由于这是一本入门书籍,目标是建立和解释 Linux 系统管理的基本概念和期望。

Linux 系统管理涵盖了物理系统及其软件的各个方面,以确保它们高效、可靠且安全地运行。这可能包括安装、控制用户配置文件、监控系统运行以及实施安全措施等方面的事务。系统管理员非常重要,因为他们负责监督系统的运行,以满足用户和组织的要求。

Linux 在现代 IT 基础设施中的重要性

Linux 因多种原因已成为 IT 基础设施领域的佼佼者:

  • 开源: Linux 是一个基于开源模型的操作系统,这意味着操作系统的代码可以被任何人访问和修改。这使得协作成为可能,从而为该程序奠定了强大且不断发展的基础。
  • 稳定性和可靠性: Linux 非常稳定可靠,因此广泛用于服务器和关键应用程序。嗯,承受额外负载而不响应程序故障的能力是该预期程序的又一个重要优势。
  • 安全性: 基于 UNIX 的 Linux 非常安全,并且更加注重访问权限。开源软件的特性使得能够快速检测和修复薄弱环节。
  • 成本效益: 与专有操作系统不同,Linux 的部署无需支付任何许可费用,因此拥有成本更低。这使其受到从小到大各类企业的青睐。

Linux 系统管理员的必备技能

要胜任工作,Linux 系统管理员需要掌握各种技能,包括:

  • 命令行熟练度: 命令行是 Linux 的一项对管理员来说非常方便的功能,因为他们需要通过命令来执行任务和自动化流程。
  • 脚本编写和自动化: 使用 Bash、Python 或 Perl 脚本可以帮助避免重复性工作,同时最大程度地减少错误。
  • 网络知识: 了解概念、协议和工具可以对网络设置进行管理,因为无错误且安全的连接是必要的。
  • 安全意识: 管理员应了解安全措施和潜在威胁的信息,以成功保护系统。
  • 解决问题的能力: 测试也是系统管理的重要策略,因为在大多数情况下,诊断问题是管理过程的一部分,因此需要逻辑和批判性思维能力,使管理员能够有效地诊断并纠正问题。
  • 持续学习: 技术变化迅速,IT 管理员必须紧跟开发、工具和可用技术的发展步伐。

Linux 系统管理员的角色

尽管 Linux 和其他商业品牌的操作系统一样,但直接处理系统的人被称为 Linux 系统管理员,他们的职责包括主动监控 Linux 系统以取得最佳结果。主要职责包括:

  • 安装和配置: 像系统管理员这样的计算机系统人员会安装 Linux 操作系统,并以最适合公司的方式对其进行设置。这包括安装服务器操作系统、桌面操作系统、虚拟操作系统和虚拟机。
  • 用户和组管理: 用户帐户和组是管理员开发的管理控件,他们根据组织结构和安全协议授予用户访问权限。
  • 软件管理: 软件软件包的安装、更新和管理是管理员必须处理的最重要和最复杂的操作之一。这涉及到使用 apt 或 yum 等工具,通过这些工具可以部分完成安装和更新。
  • 系统监控: 超级用户使用 top、htop 和 vmstat 等工具来监视系统使用情况,并查找系统可能出现的任何问题迹象。

基本的 Linux 命令行技能

对于那些管理操作系统的人来说,命令行界面 (CLI) 是 Linux 不可或缺的组成部分,因为它提供了与系统交互的绝佳机会。事实上,虽然图形用户界面 (GUI) 色彩丰富、功能强大且易于用户操作,但命令行界面在管理系统及其组件方面更为有效。

然而,理解命令行界面的最基本操作对于任何从事 Linux 系统管理的人来说都至关重要。本节将介绍基本操作和概念,以满足日常高效运行 Linux 系统的需要。

文件系统导航

Linux 文件系统的划分是每个系统管理员都应该了解的基础知识之一。它还有一个分层的目录结构,最顶层的文件夹称为根目录 (/)。以下是一些用于导航和管理文件和目录的重要命令:

1. 列出文件和目录 (ls)

ls 命令用于在终端列出特定目录中的文件和目录。常用选项包括:

  • ls: 显示当前目录中的文件列表。
  • ls -l: 提供文件的详细信息,例如权限、所有者详细信息、文件大小和最后修改日期。
  • ls -a: 显示所有文件,包括系统文件和以“.”开头但不可见的文件。

2. 更改目录 (cd)

cd 命令用于更改当前目录。一些有用的形式是:

  • cd /path/to/directory: 打开指定目录;程序执行此命令并移至指定目录。
  • cd . . : 将用户向上移动一个层级到目录树,以访问父目录。
  • cd ~: 将用户返回到其主目录。

3. 打印当前工作目录 (pwd)

pwd 命令输出当前目录路径。

4. 创建和删除目录 (mkdir, rmdir)

这些命令用于管理目录:

  • mkdir 目录名: 为您创建一个目录。
  • rmdir 目录名: 用于删除空目录。
  • 查看文件内容 (cat, less, more)

这些命令用于显示文件内容:

  • cat 文件名: 显示文件的全部内容。
  • less 文件名 / more 文件名: 在分页器中,用户可以按页查看打开的文件内容。

管理文件和目录

除了导航之外,命令行还提供了强大的文件和目录管理工具。

  1. 复制文件 (cp)
    cp 命令用于复制文件和目录。
    • cp 源 目标: 将文件或目录复制到指定位置。
    • cp -r 源 目标: 递归地复制目录及其所有内容。
  2. 移动和重命名文件 (mv)
    mv 命令用于移动或重命名文件和目录。
    • mv 源 目标: 将文件或目录剪切、复制并粘贴到新位置。
    • mv 旧名称 新名称: 为文件或目录指定新名称。
  3. 删除文件 (rm)
    rm 命令用于删除文件和目录。
    • rm 文件名: 删除指定的文件。
    • rm -r 目录: 递归删除目录及其所有内容,包括所有子目录和文件。
  4. 文件权限和所有权 (chmod, chown)
    管理文件权限和所有权对安全性至关重要。
    • chmod 模式 文件名: 用于更改文件的权限。例如,chmod 755 filename 授予所有者读、写和执行权限,而对其他人只授予读和执行权限。
    • chown 所有者:组 文件名: 此命令用于更改给定文件及其所属组的所有者。

进程管理

Linux 允许管理员监控和控制进程,确保系统的最佳性能。

  1. 查看进程 (ps, top, htop)
    这些命令提供有关运行进程的信息。
    • ps: 列出当前进程。ps aux 以详细方式显示所有进程。
    • top: 提供实时查看正在运行的进程和系统利用率的可能性。
    • htop: top 的改进版本,具有更友好的用户界面(需要安装)。
  2. 终止进程 (kill, killall)
    管理员可以终止无响应的进程。
    • kill PID: 向具有由 PID 标识的唯一 ID 的操作发送终止信号。
    • killall 进程名: 终止具有命令行参数中提供的名称的所有任务。

使用 Shell 和 Shell 脚本

Shell 是一个允许用户通过使用命令与内核交互的界面。管理员通常使用 shell 脚本来自动化重复性任务。

  1. 基本的 Shell 命令
    Shell 支持各种用于日常任务的命令。
    • echo "文本": 将文本或变量输出到终端。
    • man 命令: 显示每个可用命令的手册页,并解释如何使用它。
  2. 创建简单的 Shell 脚本
    Shell 脚本是包含一系列命令的文本文件。
    • 以 #! 开头。此脚本应使用 bash 编写,如 shebang #!/usr/bin/env bash 所示,后跟 Shell 解释器 #!/bin/bash。
    • 应用变量、循环类型、条件判断类型以实现自动化。

打印“Hello, World!”的示例脚本

运行脚本

使脚本可执行并运行它。

Linux 用户和组管理

用户和组管理在 Linux 系统管理中被认为是至关重要的方面,这关系到安全性和控制。当用户和组得到妥善管理时,只有所需人员才能访问特定资源,并且他们的操作会得到监控和规范。本节将介绍 Linux 系统中用户和组的基本知识以及用于管理它们的基本命令。

1. 理解用户和组

Linux 用户拥有称为用户 ID (UID) 的个人标识符,并且可以在必要时将用户纳入具有组 ID (GID) 的组。这种系统提供了一种结构化的方式来管理对文件和资源的访问权限。

用户

  • 每个用户(帐户所有者)都有一个用户名,该用户名通过 UID 与其他用户帐户区分开来。
  • 用户创建自己的主目录,这些目录与其他用户分开,因此不存在隐私问题。
  • 有关用户信息将在 /etc/passwd 文件中找到。

群体

  • 进一步了解后,很清楚组实际上是用户的集合。它们有助于管理权限,以便管理员可以一次性授予多个用户相同的权限。
  • 一个用户可以属于多个组,因此设置权限的选项是多样的。
  • 其他组信息可在 /etc/group 文件中找到。

2. 创建和管理用户帐户

Linux 有许多命令用于创建新用户帐户以及修改或删除现有帐户。理解这些命令对于有效的用户管理至关重要。

创建新用户 (useradd)

‘useradd’ 工具用于创建新用户帐户。基本用法包括:

这会将用户添加到默认设置。创建用户后,下一步是创建一到多个对象。要自定义选项,请使用标志,例如:

  • -m: 为用户创建主目录。
  • -s /bin/bash: 登录时指定 Shell。
  • -G group1,group2: 将用户添加到附加组。

示例

3. 设置用户密码 (passwd)

passwd 命令用于设置或更改用户密码。

该命令将提示输入新密码和确认密码。

4. 修改用户帐户 (usermod)

usermod 命令用于修改现有用户帐户。

  • -l newname username: 可以更改用户名。
  • -G group1,group2: 修改用户所属的组。
  • -s /bin/zsh: 修改用户的默认 Shell。

示例

5. 删除用户帐户 (userdel)

userdel 命令用于删除用户帐户。

要同时删除用户的家目录,请使用 -r 选项。

6. 管理文件权限

Linux 文件权限的管理基于所有者、组和其他第三方。妥善管理可确保安全高效的访问控制。

权限类型

  • 读 (r): 允许读取文件内容或列出目录中的文件。
  • 写 (w): 允许修改文件,或在目录中添加、删除文件。
  • 执行 (x): 允许运行可执行文件或浏览目录。

更改文件所有权 (chown)

chown 命令用于更改文件的所有者和所属组。

更改文件权限 (chmod)

chmod 命令使用符号模式或数字模式修改文件权限。

  • 符号模式: chmod u+rwx,go-rwx filename
  • 数字模式: chmod 755 filename

数字模式将权限表示为一个三位数,分别代表所有者、组和其他用户。这在同时访问以及已建立的组织中很常见。

Linux 中的包管理

包管理是 Linux 系统管理的重要组成部分,用于管理软件包的安装、更新或卸载。与其他操作系统(软件可能以可执行文件或应用程序等不同形式存在)不同,Linux 的软件以整洁打包的软件包形式存在,这些软件包以已知的方式进行管理,以便安全安装。本节将涵盖包管理、包管理工具和包管理命令等问题。

包管理系统是一套工具和实用程序,可帮助最终用户在主机系统上安装、升级、操作、分析和删除后端软件软件包。

包管理系统涉及用于在系统中安装、配置、更新或卸载软件包的工具和过程。它通常由二进制文件、配置文件和有关包依赖项及其安装位置的元数据组成。这由包管理器完成,它负责处理这些问题,以确保相关软件能够融入操作系统。

Linux 中有两种主要的包管理系统:

  • 二进制包管理器: 这些系统依赖于预编译的软件包,安装后即可使用。这些系统的一些指标包括以下内容。其中一些包括用于 Debian 系统的 APT(高级包工具)以及用于基于 Red Hat 的系统的 YUM(Yellowdog Updater Modified)或 DNF。
  • 源包管理器: 存在一些从源代码编译每个应用程序的系统,尽管这些系统更灵活,但它们耗时耗力。其中一些示例是 Gentoo 的 Portage 和 Arch Linux 的 Pacman。

常见的包管理系统

Linux 有许多“风味”和“发行版”,在软件工程术语中,它们都带有不同的包管理系统,这些系统是根据发行版的需要和原则选择的。以下是一些最常用的包管理器:

APT (Advanced Package Tool)

APT 用于 Debian 系列发行版,如 Ubuntu 和 Linux Mint。它用于使安装、更新和管理许多软件软件包变得相对容易。

安装包

更新包列表

升级已安装的软件包

移除软件包

APT 还有其他实用程序,包括 apt-cache,用于搜索软件包,以及 dpkg,这是一个用于安装和卸载 .deb 软件包的低级工具。

YUM (Yellowdog Updater Modified) 和 DNF (Dandified YUM)

YUM 和新的命令行工具 DNF 是用于管理基于 Red Hat 的发行版(如 CentOS 和 Fedora)中的软件包的工具。DNF 比 YUM 更新,在性能和软件包依赖管理方面有所改进。

安装包

更新软件包

移除软件包

与 APT 类似,YUM 和 DNF 都管理软件包依赖项;这意味着在安装给定程序之前,它们会确保安装了该程序的必需库和工具。

Zypper

Zypper 是一个软件管理器,可用于 SUSE 系列操作系统发行版,包括 openSUSE。它以其强大的依赖关系解析和简单的语法而闻名。

安装包

更新存储库和软件包

移除软件包

Pacman

Pacman 是 Arch Linux 使用的包管理器,所有派生自它的发行版都使用它。它非常易于使用且速度快,使用的软件包是 tar 存档。

安装包

更新系统

移除软件包

Pacman 可以处理二进制包和源代码构建,这对于希望紧密管理其安装的用户来说很方便。

依赖管理

然而,包管理器的基本功能之一是管理依赖项。一旦安装了一个包,它将依赖于其他软件库或工具才能正常运行或根本无法运行。这些依赖项由包管理器解决,它会下载并安装所有必需的依赖项。

例如,一个 Web 服务器包可能需要特定版本的网络库;然后包管理器将与 Web 服务器包一起安装正确版本的库。因此,不会发生冲突,网络中的所有软件都能高效运行。

存储库和源

存储库主要是包含软件包的服务器或库,软件包本身通常是发行版特定的。存储库可以由从事 Linux 发行版开发的实际开发人员、其他第三方开发人员或实际用户运行。

  • 官方存储库: 它们通常经过充分测试且安全,并由各自发行版的开发人员维护。
  • 第三方存储库: 这些允许用户下载可能未包含在官方存储库中的软件。虽然它们可能有其优点,但也有其缺点;例如,它们可能包含试用版、木马或病毒代码。
  • 本地存储库: 可以开发本地存储库来分发特定于组织内部开发的软件项。

可以使用一些命令行工具创建、修改或删除存储库,这些工具使用存储库列表及其密钥作为包真实性的证明。

更新和升级系统

维护更新对于使系统安全且高效运行非常重要。包管理器通过处理程序和计划工具来简化更新的下载和安装。

  • 系统更新: 更新所有已开发好的软件包非常重要,以便您使用的系统具有最新的安全更新和新功能。
  • 发行版升级: 一些包管理器支持升级到新版本的操作系统,换句话说,就是替换大多数软件包。

在过去的几年里,Linux 中的系统监控和性能调优已成为一个需要高度关注的重要方面。

理解系统监控

系统管理的一个重要特征是监控系统的各个方面,例如 CPU、内存、磁盘、网络和运行进程。目的是发现容量问题等问题,并寻找表明特定系统运行符合规格的模式。

CPU 监控

  • 工具: top、htop、mpstat
  • 关键指标: CPU 使用率、平均负载
  • 描述: 监控 CPU 状态可以确定哪些进程是 CPU 密集型,并可能导致系统减速。平均负载用于指示 CPU 在过去一、五和十五分钟内的工作量。

示例命令

  • top: 显示有关进程和 CPU 利用率的即时信息。
  • htop: 一个新的、改进的 top,具有可操作命令等附加功能。
  • mpstat: 包括详细的 CPU 统计信息,并根据单个处理器拆分详细统计信息。

内存监控

  • 工具: free、vmstat、top
  • 关键指标: 总内存量、实际使用内存量、可用空闲内存量以及交换空间的使用情况。
  • 描述: 它使得了解系统是否拥有足够的 RAM 来支持特定应用程序和进程成为可能。高交换空间使用表明系统物理内存不足,这会降低系统性能。

示例命令

  • free -m: 以兆字节为单位显示总内存、已用内存和可用内存。
  • vmstat: 提供有关内存和交换以及系统其他方面的广泛定量数据。
  • top: 在每个进程的上下文中也显示 RAM 使用情况。

磁盘使用率和 I/O 监控

  • 工具: df、du、iostat
  • 关键指标: _可用磁盘空间、总磁盘空间、每秒操作数
  • 描述: 可以监控所有磁盘以确保它们有足够的空间;如果磁盘已满,应用程序可能会崩溃或失败。I/O 监控使用户能够发现哪些磁盘运行缓慢或即将出现故障,并了解正确的 I/O 模式。

示例命令

  • df -h: 报告所有已挂载文件系统的可用空间,并以人类可读的方式格式化输出。
  • du -sh /path/to/directory: 向用户报告特定目录的磁盘使用情况。
  • iostat: 提供有关 I/O 使用情况的统计信息,包括读写操作以及 I/O 操作期间的 CPU 使用情况。

网络调优

  • 描述: 通过调整 TCP/IP 的某些属性(例如缓冲区大小或 TCP 窗口缩放)可以优化网络性能。这些更改可以提高吞吐量,尤其是在高延迟网络上。

示例命令

  • sysctl -w net.ipv4.tcp_window_scaling=1: 启用 TCP 窗口缩放。
  • sysctl -w net.core.rmem_max=16777216: 用于增加最大接收缓冲区大小。

内核调优

  • 描述: Linux 内核通过其应用程序编程接口,通过根据应用程序的工作负载更改进程限制、文件描述符限制和调度器策略,使其更具可配置性。这些更改可能会影响这些系统的效率,尤其是在负载下运行时。
  • 示例命令
  • sysctl -w kernel.pid_max=32768: 修改进程 ID 的最大值。
  • ulimit -n 4096: 个人,它增加了进程一次可以打开的文件描述符的数量。

Linux 系统管理中的安全和备份

安全和备份是 Linux 系统管理稳健结构中两个受到严格保护的原则,因为它们涉及保护系统免受滥用或未经授权的访问,以及以易于恢复的方式保存关键数据,以防发生故障或灾难。

妥善采取安全措施和备份措施对于数据和服务的完整性、机密性和可用性至关重要。因此,本节将重点介绍保护 Linux 系统和备份系统的主要问题、技术和最佳实践。

理解 Linux 安全

Linux 安全是指旨在保护 Linux 系统免受外部和内部攻击的程序。这包括实施标准用户权限、保护网络服务以及确保系统安全补丁的集成。因此,本节将重点介绍保护 Linux 系统和备份系统的主要问题、技术和最佳实践。

用户和组管理

  • 最小权限原则: 在授予权限时,只授予用户履行其职责所必需的最少权限。这反过来又减少了系统被意外或以其他方式泄露的可能性。
  • 用户帐户: 定期清理不活动的用户的登录帐户,并删除不经常使用的帐户。为了最大限度地减少对系统的 root 攻击,并安全地使用“sudo”命令执行所有命令,您应该禁用通过 SSH 进行 root 登录。
  • 组: 最后,为了解决这个问题,可以使用组来更好地管理权限。例如,如果用户需要访问某些文件或目录,则为他们创建一个组并设置相应的权限。

示例命令

  • usermod -aG groupname username: 将用户添加到组。
  • passwd -l username: 这是“锁定”特定用户帐户的过程。
  • chage -l username: 提供给定用户的密码过期详细信息。

文件权限和所有权

  • 权限: Linux 文件权限分为三类:所有者、组和其他成员。这三类权限(读、写和执行)分别应用于每个类别,同时限制和允许对文件和目录的访问。
  • 所有权: 在 Linux 操作系统中,每个文件和目录都有所有权,即所有者和所属组。它提供了一种控制数据访问的方法,以便只有授权用户才能使用它。

示例命令

  • chmod 750 /path/to/file: 这为所有者授予读、写和执行权限,为组授予读和执行权限,而为其他用户不授予任何权限。
  • chown user:group /path/to/file: 更改文件的所有权。

防火墙配置

  • 防火墙: 网络入口和出口处设有防火墙,只允许合法流量通过。在 Linux 环境中,iptables 和 firewalld 被广泛用于配置防火墙。
  • 基本防火墙规则: 需要建立策略,从根本上拒绝所有传入连接,并只允许当前需要的实用连接,例如 ssh 和 http/https。

示例命令

  • sudo ufw enable: 允许在 Ubuntu 上轻松使用简单的防火墙 (UFW)。
  • sudo ufw allow ssh: 允许 SSH 流量,即通过安全 Shell 协议访问远程安全服务器的流量。
  • sudo firewall-cmd --permanent --add-service=http: 当然,这个简单的功能允许 HTTP 流量通过防火墙系统。

实施备份策略

备份对于在硬件崩溃、数据矩阵损坏或有意或无意删除的情况下进行数据恢复至关重要。有效的备份策略应包括定期备份、将备份存储在安全介质上以及进行备份恢复演练(最好定期进行)。

备份类型

  • 完全备份: 要备份的所有数据的精确副本,包含数据源中的所有数据。这种备份耗时较长,需要更多存储空间,但提供最简单的恢复方法。
  • 增量备份: 仅复制自上次完全备份或增量备份以来已更改的文件部分。这种方法在节省时间和存储空间方面非常有效。
  • 差异备份: 复制自上次完全备份以来已发生更改的数据部分。与增量备份相比,它需要更多的存储空间,但恢复更容易。

备份工具

  • rsync: 一个简单的应用程序,用于在位置之间复制文件和目录树,网络流量最小。它经常用于本地和远程备份。
  • tar: 用于创建压缩归档文件的多功能实用程序。它可以用于在将文件移至备份位置之前进行归档。
  • 备份软件: 还有一些专门用于备份的工具,如 Bacula、Amanda、Duplicity 等,它们具有更强大的功能,如计划、加密和增量备份。

示例命令

  • rsync -avz /source/directory /backup/directory: 将一个目录的项目复制到另一个目录。
  • tar -czvf backup.tar.gz /path/to/directory: 创建一个目录的 tarball,该目录默认经过压缩。

备份频率和保留策略

  • 备份频率: 根据数据的重要性、敏感性和处理量来确定备份的频率。对于关键应用程序等数据处理量大且动态的数据,可能需要更频繁地执行数据备份,例如每天一次,而不太敏感的数据可以不那么频繁地备份,例如每周一次。
  • 保留策略: 实施一个保留期策略,规定备份的保留期限。可以删除旧备份以回收磁盘空间,但必须保留足够的备份副本以发现未被注意到的问题。

结论

因此,了解安全问题和备份计划对于成为一名高效的 Linux 系统管理员至关重要。有效的安全措施,如适当的用户管理、正确配置防火墙和频繁更新,可以保护系统免受威胁和入侵。

同样重要的是开发冗余解决方案,以便在发生故障和灾难的情况下,数据能够保持安全且可访问。总而言之,它们构成了一个全面的框架,用于在各种具有挑战性的使用场景中建立稳定、安全的 Linux 环境,同时确保系统的可靠性能。