《Fedora 12 部署指南》

声明:本文翻译自 Fedora 项目的《Federa 12 Deployment Guide》文档。《Federa 12 Deployment Guide》文档由 Red Hat 公司遵守 “知识共享 - 署名 - 以相同方式共享 3.0 版许可协议” (CC-BY-SA) 发布。

重要声明:本文翻译自 Fedora 项目的《Fedora 12 Deployment Guide》文档。《Fedora 12 Deployment Guide》文档由 Red Hat 公司遵守 “知识共享 - 署名 - 以相同方式共享 3.0 版许可协议” (CC-BY-SA) 发布。
所以我所翻译的《Fedora 12 部署指南》同样遵守 CC-BY-SA 许可协议,任何复制、发行、展览、表演、放映、广播或通过信息网络传播本作品,均需要按以下信息进行署名。

署名信息:
中文名称:《Fedora 12 部署指南》
译者:Lugir (谦谦博客)
中文翻译地址:http://lugir.com/fedora/fedora-12-deployment-guide.html
原文名称:《Fedora 12 Deployment Guide》
原作者:Red Hat, Inc.
原文地址:http://docs.fedoraproject.org/deployment-guide/f12/en-US/html/

 

本文档不定期更新,建议大家收藏本页面。对于翻译的任何意见及建议,欢迎留言交流 :D

Fedora 部署指南介绍

《Fedora 12 部署指南》包含配置和管理 Fedora 操作系统所需要的各种知识,如果你想找到一部内容丰富,以实际应用为向导的 Fedora 指南图书,那么,这部指南就是为你而写的。

《Fedora 12 部署指南》包含配置和管理 Fedora 操作系统所需要的各种知识,如果你想找到一部内容丰富,以实际应用为向导的 Fedora 指南图书,那么,这部指南就是为你而写的。使用这部指南,能够帮助你更好、更快,也更容易地配置和自定义你的 Fedora 系统。

本指南将讨论许多进阶的技术话题,如:

  • Yum, PackageKits, RPM 等软件包管理工具的使用
  • 配置网卡
  • 配置 VPN
  • 配置 Samba 共享
  • 使用 RPM 管理你的软件包
  • 检测系统信息
  • 升级系统内核

本指南的内容主要分为以下几个类别

  • 文件系统
  • 软件包管理
  • 与网络相关的配置
  • 系统配置
  • 系统监测
  • 内核与驱动配置
  • 安全与认证
  • Red Hat 培训与认证

我们假设你对 Fedora 操作系统有基本的了解,如果还未使用过 Fedora 或其它 Linux 操作系统,你可以先通过学习《Fedora 教程 - 桌面篇》掌握一些相关的基础知识 :D

如果你已经准备好了,请开始阅读下一章《Yum 使用教程

Yum 使用教程

Yum 是 Fedora 下的软件包管理工具。通过它,你能够查询软件包信息、从软件仓库获取软件包、通过自动解析软件包依赖性对软件包进行安装/卸载,以及将整个系统的软件包进行升级。

Yum 是 Fedora 下的软件包管理工具。通过它,你能够查询软件包信息、从软件仓库获取软件包、通过自动解析软件包依赖性对软件包进行安装/卸载,以及将整个系统的软件包进行升级。

当你升级、安装或移除软件包时,Yum 会自动解析软件包的依赖性。因此,它能够自动决定和获取所有必需和可用的依赖性软件包。

你还能够为 Yum 配置新的软件包仓库 (repositories) 和软件源 (package sources),从而增加 Yum 可使用的软件包的数量和种类。除此之外,你还通过为 Yum 添加插件来增强和扩展它的功能。

Yum 能够实现许多 RPM 能实现 的功能,并且,两都有许多相似的命令行选项。不过使用 Yum 是方便的选择,它能够简单迅速地在单台或一组计算机中实现软件包的管理工作。

使用有 GPG 签名 的软件包
GPG 签名是用于验证软件包完整性和可靠性的工具,Yum 通过验证软件包的 GPG 签名以增强软件包管理的安全性。当 Yum 的“签名验证”机制启用时,Yum 会拒绝安装任何没有正确 GPG 签名的软件包。这样能够保护你只安装由受信任的软件源 (如 Fedora 项目) 下载并安装 RPM 软件包。
有关如何为 Yum 启用“签名验证”的详细内容,可以参考“配置Yum 和软件仓库”。有关如何对软件包的 GPG 签名进行验证,可参考“验证软件包的签名”。

Yum 是一项值得花时间学习的工具,它是实现系统管理任务的最快捷方式,同时它还提供了许多 PackageKit 不具备的功能。 ( PackageKit 是 Fedora 中默认的图形化软件管理工具,可参考 《PackageKit 使用教程》 了解有关 PackageKit 的详细信息。

 

Yum 使用教程目录

使用 Yum 检查可升级的软件包

通过使用 yum check-update 命令,能够查看到系统中的哪些软件包存在可以升级的新版本。

通过使用 yum check-update 命令,能够查看到系统中的哪些软件包存在可以升级的新版本。

你必须具备超级管理员权限,才可以使用 yum 安装、升级和移除软件包。本章节中的所有示例均假设你已经通过 su 或 sudo 命令取得了超级管理员权限。有关如何使用 sudo 命令可参考《使用 sudo 命令,以根用户身份执行命令
~]# yum check-update
Loaded plugins: presto, refresh-packagekit, security
PackageKit.x86_64 0.5.3-0.1.20090915git.fc12 fedora
PackageKit-glib.x86_64 0.5.3-0.1.20090915git.fc12 fedora
PackageKit-yum.x86_64 0.5.3-0.1.20090915git.fc12 fedora
PackageKit-yum-plugin.x86_64 0.5.3-0.1.20090915git.fc12 fedora
glibc.x86_64 2.10.90-22 fedora
glibc-common.x86_64 2.10.90-22 fedora
kernel.x86_64 2.6.31-14.fc12 fedora
kernel-firmware.noarch 2.6.31-14.fc12 fedora
rpm.x86_64 4.7.1-5.fc12 fedora
rpm-libs.x86_64 4.7.1-5.fc12 fedora
rpm-python.x86_64 4.7.1-5.fc12 fedora
yum.noarch 3.2.24-4.fc12 fedora

以上输出结果列出了可以升级的软件包的信息。以列表中的第一个软件包 PackageKit 为例,输出结果中包含了以下信息:

  • PackageKit ── 软件包的名称
  • x86_64 ── 软件包针对的 CPU 平台
  • 0.5.3-0.1.20090915git.fc12 ── 将被升级到的软件包的版本号
  • fedora ── 取得该软件包的软件仓库

上例中,除了 PackageKit 软件包,能够升级的软件包还包括 Kernel (内核) 、Yum 和 RPM,以及它们所依赖的软件包。学习如何升级软件包,请看下一节《使用 Yum 升级软件包

使用 Yum 升级软件包

使用 Yum 时,你可以升级一个软件包,或者多个软件包,甚至可以将整个系统中所有的软件包一次性全部升级。如果被升级的软件包所依赖的其它软件包也能够升级,这些依赖性软件包也将被升级。

使用 Yum 时,你可以升级一个软件包,或者多个软件包,甚至可以将整个系统中所有的软件包一次性全部升级。如果被升级的软件包所依赖的其它软件包也能够升级,这些依赖性软件包也将被升级。

要升级单个软件包,只需输入 yum update <package_name> 命令即可,以下以 glibc 软件包为例:

~]# yum update glibc
Loaded plugins: presto, refresh-packagekit, security
Setting up Install Process
Resolving Dependencies
--> Running transaction check
--> Processing Dependency: glibc = 2.10.90-21 for package: glibc-common-2.10.90-21.x86_64
--> Package glibc.x86_64 0:2.10.90-22 set to be updated
--> Running transaction check
--> Package glibc-common.x86_64 0:2.10.90-22 set to be updated
--> Finished Dependency Resolution
Dependencies Resolved
======================================================================
 Package             Arch        Version          Repository      Size
======================================================================
Updating:
 glibc               x86_64      2.10.90-22       fedora        2.7 M
Updating for dependencies:
 glibc-common       x86_64       2.10.90-22       fedora       6.0 M
Transaction Summary
======================================================================
Install       0 Package(s)
Upgrade       2 Package(s)
Total download size: 8.7 M
Is this ok [y/N]:

从以上输出信息中,你需要了解这些信息:

1. Loaded plugins: presto, refresh-packagekit, security  ── 这是 yum 加载已经安装的插件的名称,yum 总会在运行时显示这些 yum 插件信息。在这个例子中,yum 使用的插件有 presto, refresh-packagekit 和 security。

有关 yum 插件的信息请参考 《Yum 插件》,有关这些插件的描述请参考《常用 Yum 插件功能介绍》

2. glibc.x86_64 ── 你能够使用 yum 安全下载并安装的新软件

3. yum 显示出升级信息,并提示你是否 ([y/N]) 希望执行升级操作。

默认情况下,yum 使用交互式操作,如果你对于 yum 执行过程已经十分了解,可以使用 -y 选项为 yum 所提出的交互式操作给予 yes 回复 (即取消交互式操作)。但我们建议你使用默认的非交互模式,读取 yum 的输出信息,对你了解 yum 的行为以及以后排错都有相当大的帮助。

 

升级所有软件包 (以及相关依赖性软件包)

要升级系统中所有的软件包以及相关的依赖性软件包,只需简单地输入 yum update 即可

~]# yum update
...

更新与安全相关的软件包

找出哪些软件包存在安全性的更新,并对简单迅速地完成这些更新对于系统的安全性是至关重要的。 Yum 为实现这个目标提供了 security 插件,该插件为 yum 扩展了许多以安全为中心的实用命令、子命令和选项。有关 security 插件的更多信息可参考《Yum 常用插件功能介绍》

保护已更改的配置文件

在使用 Fedora (或其它任何) 操作系统时,你总会不可避免地改动程序的配置文件。yum 在升级软件包时,使用 RPM 实现对系统的更改,而 RPM 对于应用程序的配置文件提供了相当有效的保持机制。有关 RPM 在升级软件包的过程,如何做好配置文件管理的详细情况,可参考《使用 RPM 升级软件包》

下一节 - 《使用 Yum 搜索、罗列和显示软件包信息

使用 Yum 搜索、罗列和显示软件包信息

使用 yum search <term> [more_terms] 命令,能够在已启用的软件包仓库中,对所有软件包的名称、描述和概述中进行搜索,最后,yum 会以显示符合合条件的搜索结果列表。

使用 yum search <term> [more_terms] 命令,能够在已启用的软件包仓库中,对所有软件包的名称、描述和概述中进行搜索,最后,yum 会以显示符合合条件的搜索结果列表。

[lugir@hope ~]$ yum search totem
已加载插件:presto, refresh-packagekit, security
================================ Matched: totem ================================
gnome-python2-totem.i686 : 用于和 totem 交流的 python 绑定
oggconvert.noarch : Convert media files to Free formats
totem.i686 : Movie player for GNOME
totem-devel.i686 : Plugin writer's documentation for %{package}
totem-jamendo.i686 : Jamendo plugin for Totem
totem-lirc.i686 : LIRC (Infrared remote) plugin for Totem
totem-mozplugin.i686 : Mozilla plugin for Totem
totem-mythtv.i686 : MythTV plugin for Totem
totem-nautilus.i686 : Video and Audio Properties tab for Nautilus
totem-pl-parser.i686 : Totem Playlist Parser library
totem-pl-parser-devel.i686 : Development files for totem-pl-parser
totem-publish.i686 : Share your playlist with other Totems on the local network
totem-upnp.i686 : UPNP/DLNA plugin for Totem
totem-youtube.i686 : YouTube plugin for Totem

如果你不记得软件包的确切名称,但了解软件包的某些相关名词时,yum search 命令能够有效地帮助你找到想要的软件包。

软件包列表
yum list 以及相关的一些命令则能够为你提供有关软件包、软件包集和软件仓库的信息。

所有的 yum list 命令都能够使用 glob 表达式作为参数,对输出结果进行过滤。在 glob 表达式中,你可以使用 * 代表任何数量个字符,使用 ? 代表任何一个字符。通过后面的示例,你可以对 glob 表达式有些简单的认识。
  • yum list <glob_expr> [more_glob_exprs] ── 列出所有符合 glob 表达式的软件包
  • yum list all ── 列出所有已安装的和可用的软件包
  • yum list installed ── 列出所有已经安装在系统中的软件包。输出结果的最右边一列是取得该软件包的软件仓库。标识为 installed 的软件包则说明它是做为系统基本组件而预安装的。
  • yum list available ── 列出所有启用的软件仓库中可用的软件包
  • yum grouplist ── 列出所有软件包组
  • yum repolist ── 列出所有启用的软件仓库的 ID,名称 及其包含的软件包的数量

查看软件包信息

使用 yum info <package_name> [more_names] 命令可查看一个或多个软件包的信息 (此处同样可以应用 glob 表达式)。

[lugir@hope ~]$ yum info totem
已加载插件:presto, refresh-packagekit, security
已安装的软件包
名称       : totem
架构          : i686
版本          : 2.28.5
次要版本          : 1.fc12
大小          : 7.9 M
仓库          : installed
From repo  : updates
摘要          : Movie player for GNOME
URL        : http://projects.gnome.org/totem/
授权方式        : GPLv2+ with exceptions
描述          : Totem is simple movie player for the GNOME desktop. It features
              : a simple playlist, a full-screen mode, seek and volume controls,
              : as well as a pretty complete keyboard navigation.
              :
              : Totem is extensible through a plugin system.

yum info <package_name>rpm -q --info <package_name> 命令十分相似, 不过 yum 还能够提供软件包的软件仓库来源信息 (即输出结果中的 From repo 行)。

下一节 - 《使用 Yum 安装软件包和软件包集

使用 Yum 安装软件包和软件包集

使用 Yum 安装软件包十分简单,只需要在 install 选项后面加上要安装的软件包的名称即可,就像 yum install <package_name>,然后 Yum 就会帮你完成指定软件包以及相关的依赖性软件包的安装。

使用 Yum 安装软件包十分简单,只需要在 install 选项后面加上要安装的软件包的名称即可,就像 yum install <package_name>,然后 Yum 就会帮你完成指定软件包以及相关的依赖性软件包的安装。

~]# yum install totem

通过增加软件包的名称,能够同时安装多个软件包 yum install <package_name> [more_names]

如果在 AMD64 或 Intel64 这类多运行库 (multilib) 的系统上安装软件包,可以在软件包名称后面加上平台类型 (.arch) ,选择特定平台的软件包。常用的软件包平台包括 i386, x86_68, i586, i686, 以及不区分平台的 .noarch,以下以 i686 平台的 totem 软件包为例:

~]# yum install totem.i686

如果要安装多个名称相似的软件包,可以使用 glob 表达式来简化安装命令,如:

~]# yum install audacious-plugin-*

除了通过提供软件包的名称进行软件包的安装,还能够通过提供文件名给 yum install 来实现包的安装。比如你知道某个软件包所包含的文件路径,但不知道它的软件包名称,可以使用 yum install <file_path> 进行安装

~]# yum install /etc/samba/smb.conf

上面这种安装方式的原理很简单,由 yum 去搜索所有的软件包列表,寻找包含 /etc/samba/smb.conf 文件的软件包,然后返回查询结果。

如果你只知道文件的名称,如 named,但不知它的具体位置。这时,可以使用 yum provides 命令,并结合 glob 表达式进行查询,例如使用以下命令查询所有包含 named 文件的软件包

~]# yum provides "*/named"

在输出结果中找到合适的软件包后,就可以通过软件包名称,使用 yum install 进行安装了

yum provides 与 yum whatprovides 的效果相同,但我们当然愿意使用更简单的命令 :D

 

安装软件包(组)集

软件包集实际上就是一些功能相同或相近的软件包集合。软件包集有名称和组标识,使用 yum grouplist -v 命令能够列出所有可用的软件包集的名称和组标识 (组标识位于右则括号中,就像本例中的 kde-desktop 和 kde-software-development)

~]# yum -v grouplist kde-*
...
有效的组:
   KDE 软件开发 (kde-software-development)
   KDE (K 桌面环境) (kde-desktop)

使用 yum groupinstall 命令,就能够通过名称或者组标识对安装软件包集如

~]# yum groupinstall kde-desktop

下一节 - 《使用 Yum 移除软件包和软件包集

使用 Yum 移除软件包和软件包集

移除软件包和安装软件包同样简单,只需要使用 yum remove <package_name> 命令就可以移除指定的软件包,以及所有依赖于这个软件包的其它软件包。

移除软件包和安装软件包同样简单,只需要使用 yum remove <package_name> 命令就可以移除指定的软件包,以及所有依赖于这个软件包的其它软件包。通过在命令后面增加软件包的名称,能够一次性卸载多个软件包,如

~]# yum remove foo foo1 foo2

如同 install 选项一样,remove 也能够使用参数、软件包名称、 glob 表达式对软件包进行移除,具体用法可参考《使用 Yum 安装软件包和软件包集

移除软件包集

移除软件组的命令与安装软件组相似,以下三种方式都能够实现软件组的卸载。

~]# yum groupremove "KDE (K Desktop Environment)"
~]# yum groupremove kde-desktop
~]# yum remove @kde-desktop

下一节 - 《配置 Yum 和 Yum 软件包仓库

配置 Yum 和 Yum 软件包仓库

/etc/yum.conf 文件中包含的 [mian] 片段,使用户能够设置 yum 选项。[main] 片段中设置的值,对 yum 有全局影响,但可以被单独的 [repository] 片段中的值覆盖。

本部分内容包含

  • 通过编辑 /etc/yum.conf 文件中的 [main] 片段,更改  yum 全局全局全局选项。
  • 通过编辑 /etc/yum.conf 文件和 /etc/yum.repos.d/ 目录下的 .repo 文件中的 [repository] 片段,更改单独软件仓库的配置
  • 通过 /etc/yum.conf 文件和 /etc/yum.repos.d/ 目录中的文件使用变量,正确处理软件包的版本和平台值
  • 设置自定义软件包

/etc/yum.conf 文件中包含的 [mian] 片段,使用户能够设置 yum 选项。[main] 片段中设置的值,对 yum 有全局影响,但可以被单独的 [repository] 片段中的值覆盖。尽管可以在 /etc/yum.conf 文件中添加 [repository] 片段,但最好的方式还是在 /etc/yum.repos.d/ 目录中,创建新的或编辑已经存在的 .repo 文件。如果需要添加或编辑指定的软件仓库信息,情参考《设置 [repository] 选项》

Yum 配置文件 - [main] 选项的设置

/etc/yum.conf 配置文件中只包含一个 [main] 片段,用户可以向其中添加许多附加选项。其中一些选择的值影响 yum 的操作方式,一些影响 yum 对待软件仓库的方式。

/etc/yum.conf 配置文件中只包含一个 [main] 片段,用户可以向其中添加许多附加选项。其中一些选择的值影响 yum 的操作方式,一些影响 yum 对待软件仓库的方式。

了解有关 yum.conf 文件中的各个选项的值和说明信息,最好的方法是参考 yum.conf 的 man 文件,查看的命令为 man yum.conf

以下是 /etc/yum.conf 配置文件的示例:

[main]
cachedir=/var/cache/yum
keepcache=0
debuglevel=2
logfile=/var/log/yum.log
exactarch=1
obsoletes=1
gpgcheck=1
plugins=1
installonly_limit=3
[comments abridged]
# PUT YOUR REPOS HERE OR IN separate files named file.repo
# in /etc/yum.repos.d

 

有关 [main] 片段中常用的选项及说明

cachedir=/var/cache/yum
选项指定 yum 存储 (软件包) 缓存和数据库文件的默认位置。其默认值为 /var/cache/yum

keepcache=[1 or 0]
设置 keepcache=1,yum 在成功安装软件包之后保留缓存的头文件 (headers) 和软件包。默认值为 keepcache=0

reposdir=[包含 .repo 文件的目录的绝对路径]
该选项用户指定 .repo 文件的绝对路径。.repo 文件包含软件仓库的信息 (作用与 /etc/yum.conf 文件中的 [repository] 片段相同)。
yum 从所有 .repo 文件以及 /etc/yum.conf 文件的 [repository] 片段中收集软件仓库的信息,并依此创建一个主仓库列表,用于请求传输软件包。
有关 .repo 文件和 [repository] 片段中能用到的选项的信息,请参考《配置 Yum 配置文件中的 [repository] 选项》

gpgcheck=[1 or 0];
该选项为所有软件仓库中 (及本地) 的软件包启用或禁用 GPG 签名验证。默认值为1,即启用 GPG 签名检测。

用户可以在不同的软件仓库配置中设置这个选项,并且单独的软件仓库配置中的值会覆盖 /etc/yum.conf 中的值。有关 GPG 签名检测的更多信息请参考《使用 RPM 验证软件包签名》

assumeyes=[1 or 0]
    该选项决定 yum 对于危险操作时是否给出提示。默认值为0,即不提示。当 assumeyes=1 时,在不应用 -y 选项时,yum 会给出提示。

exclude="[package_name] [more_names]"
选项允许用户在安装/升级的过程中,排除指定的软件包。排除多个软件包时应该使用引号("")包起来。这里同样允许使用 glob 表达式。

retries=[number_of_retries]
该选项设置返回错误消息前,yum 重试的次数。0 表示一直重试,默认值为 6。

Yum 配置文件 - [repository] 选项的设置

可以通过向 /etc/yum.conf 文件中添加 [repository] 片段 (其中 repository 为软件仓库标识,如 fedora),或者通过向 /etc/yum.repos.d/ 目录中添加 .repo 文件,实现单独软件仓库的定义。

可以通过向 /etc/yum.conf 文件中添加 [repository] 片段 (其中 repository 为软件仓库标识,如 fedora),或者通过向 /etc/yum.repos.d/ 目录中添加 .repo 文件,实现单独软件仓库的定义。

/etc/yum.repos.d/ 中的所有 .repo 文件都会在 yum 下次运行时被读取。

最简单的 .repo 文件样式如下

[repository_ID]
name=A Repository Name
baseurl=http://path/to/repo

 

每个 [repository] 片段必须包含以下几部分

[软件包仓库标识]
软件包仓库标识是被方括号包围的单个单词(没有空格,没有下划线),并且不能与其它软件包仓库重名。

name=[软件包仓库名]
设置软件仓库的描述性信息

baseusrl=http://path/to/repo, ftp://path/to/repo, file://path/to/local/repo
设置软件仓库的 URL 目录,该目录包含软件仓库的仓库数据(repodata)目录,这个 URL 通常是 HTTP 链接,如 baseurl=http://download.fedoraproject.org/pub/fedora/linux/releases/$releasever/Everything/$basearch/os/

Yum 能够自动转换 URL 链接中的 $releasever, $arch 和 $basearch 变量,有关 yum 变量的说明,请参考《使用 Yum 变量

如果软件包仓库使用 FTP 地址,使用 ftp://path/to/repo
如果软件包仓库使用本地地址,使用 file://path/to/local/repo
如果软件包仓库使用基本的 HTTP 验证,可以在 baseurl 前扩展用户名和密码进行身份验证,如 baseurl=http://user:password@www.example.com/repo/

 

可选配置选项

enabled=[1 or 0]
当某个软件仓库被配置成 enabled=0 时,yum 在安装或升级软件包时不会将该仓库做为软件包提供源。使用这个选项,可以启用或禁用软件仓库。
通过 yum 的 --enablerepo=[repo_name] --disablerepo=[repo_name] 选项,或者通过 PackageKit 的"添加/删除软件"工具,也能够方便地启用和禁用指定的软件仓库。参考《刷新 PackageKit 软件源 (Yum 软件仓库)》

使用 Yum 变量

在《Yum 配置文件 - [repository] 选项的设置》中,提到 yum 命令和 yum 配置文件中需要使用到的一些变量,如 $releasever, $arch 和 $basearch,本节主要说明这些变量的来源及作用。

在《Yum 配置文件 - [repository] 选项的设置》中,提到 yum 命令和 yum 配置文件中需要使用到的一些变量,如 $releasever, $arch 和 $basearch,本节主要说明这些变量的来源及作用。

yum 配置文件是指 /etc/yum.conf 和 /etc/yum.repos.d/ 目录下的所有 .repo 配置文件

 

$releasever
此变量表示 Fedora 的发行版,yum 通过 /etc/yum.conf 文件,从 distrooverpky=<value> 行取得 $releasever 的值。如果 /etc/yum.conf 文件中没有这一行,yum 则从 redhat-release (应该是 fedora-release) 软件包中推算出正确的值.

$arch
此变量用于标识系统所用的 CPU 平台,变量的值通过 uname 命令得出,$arch 的有效值为 i586, i686 和 x86_64

$basearch
此变量用于参照系统的基本平台,例如,i686 和 i586 机器的基本平台是 i 386,AMD64 和 Intel64 机器的基本平台是 x86_64

$YUM0-9
$YUM0 ~ $YUM9 这十个变量分别被 shell 环境中的同名变量的值所替代。如果 /etc/yum.conf 文件中设置了这些变量,而 shell 环境中没有同名变量,它的值则不被代替。

创建 Yum 软件包仓库

按照以下步骤,即可以完成创建 Yum 软件包仓库的操作。这些命令会为你创建 Yum 软件包仓库必须的元数据,以及用于加速 yum 操作的 sqlite 数据库

按照以下步骤,即可以完成创建 Yum 软件包仓库的操作

1.安装 createrepo 软件包

~]# yum install createrepo

2.将所有软件包复制到某个目录下,如 /mnt/local_repo/
3.将第2步中使用的目录作为 createrepo --database 参数,执行命令

~]# createrepo --database /mnt/local_repo

以上命令会为你创建 Yum 软件包仓库必须的元数据,以及用于加速 yum 操作的 sqlite 数据库

启用、配置及禁用 Yum 插件

通过安装 Yum 插件,能够扩展及加强 Yum 的功能。当你使用 yum 命令的时候,yum 总是会向你显示已启用的插件信息。

通过安装 Yum 插件,能够扩展及加强 Yum 的功能。当你使用 yum 命令的时候,yum 总是会向你显示已启用的插件信息。

[lugir@hope ~]$ yum info yum
已加载插件:presto, refresh-packagekit, security
...
注意:跟在 “已加载插件”(Loaded plugins) 后面的就是插件名称,你可以通过使用
--disableplugins=<plugin_name> 禁用指定的插件。

要启用 yum 插件,确认 /etc/yum.conf 配置文件的 [main] 片段中存在以 plugins=1 的选项

plugins=1

将 plugins 的值设置为 0 即可禁用 yum 插件。

每个已安装的 yum 插件都有自己的配置文件,文件位于 /etc/yum/pluginconf.d/ 目录下,你可以在这些配置文件中设置与插件相关的选项,例如以下是 security 插件的配置文件 security.conf 文件中的内容

[main]
enabled=1

与 yum.conf 相同,插件配置文件总是包含一个 [main] 片段,其中包含 enable=<value> 选项,这个选项的值决定插件是否被启用。

如果 /etc/yum.conf 文件中配置了 enable=0,只有当插件在单独的配置文件中设置了启用,运行 yum 命令时,插件才会被使用。

如果你只是想在某个 yum 命令执行时禁用所有插件,可使用 --noplugins 选项。

如果你只是想在某个 yum 命令执行时禁用某个插件,可以使用 --disableplugin=<plugin_name>

~]# yum update --disableplugin=presto

如果禁用多个插件,插件名称之间用逗号分隔。使用插件名称时也支持 glob 表达式

~]# yum update --disableplugin=presto,refresh-pack*

常用 Yum 插件介绍

一般而言,Yum 插件软件包的名称都遵寻 yum-plugin-<plugin_name> 这样的格式,但也并非所有的插件都是如此,例如 presto 插件的软件包名称是 yum-presto。

一般而言,Yum 插件软件包的名称都遵寻 yum-plugin-<plugin_name> 这样的格式,但也并非所有的插件都是如此,例如 presto 插件的软件包名称是 yum-presto。

在对常用的 Yum 插件进行介绍之前,还是先向你说明如何安装 Yum 插件。实际上,安装 Yum 插件十分简单,就和安装其它软件一样,例如要安装 yum-plugin-security 插件,只需执行以下命令即可。

~]# yum install yum-plugin-security
如果你对如何使用 Yum 安装软件包有疑问,可以参考《使用 Yum 安装软件包和软件包集

 

常用 Yum 插件介绍

presto (yum-presto)

presto 插件让 yum 在升级时能够下载差异 RPM 软件包(delta RPM packages) 。差异软件包仅包含了已安装软件包与升级软件包两者之间不同的内容,通过下载差异软件包,能够大大降低下载时间、加快下载速度。

不过使用差异软件包需要对已经安装的软件包进行重建 (rebuild),即将不同中的内容应用到已经安装的软件包中,这需要一定的时间。

因此,使用 presto 插件是在下载时间和安装时间中做出选择,对于网络较慢机器较快的情况,presto 插件能够迅速下载差异软件包并安装。另一方面,网速快而机器慢,则可以禁用 presto 下载完整软件包并安装 (安装完整软件包比应用差异软件包所需时间较少)。 presto 插件默认安装并启用。

 

protect-packages (yum-plugin-protect-packages)

protect-packages 插件用于避免 yum 软件包或其它 yum 所依赖的软件包被移除,它也能避免许多系统运行所必要的软件包被移除。另外,你可以编辑 /etc/sysconfig/protected-packages 配置文件 (如果不存在可以自己创建) ,向其中添加的软件包都将受保护不被移除,添加时每行一个。

也可以在 /etc/sysconfig/protected-packages.d/ 目录中创建 .list 文件,每行添加一个软件包,所有 .list 文件中的软件包也将同样受到保护不被移除。

如果要临时取消软件包保护,执行 yum 命令时加上 --override-protection 选项

 

refresh-packagekit (PackageKit-yum-plugin)

当 yum 运行时,这个插件为 PackageKit 更新元数据,该插件默认安装并被启用。

 

security (yum-plugin-security)

对于系统管理员而言,方便且经常发现安全更新信息十分重要。出于这个目的,yum 提供了 security 插件,它为 yum 扩展了一系列以安全为中心的实用命令、子命令和选项。

~]# yum check-update --security
Loaded plugins: presto, refresh-packagekit, security
Limiting package lists to security relevant ones
Needed 3 of 7 packages, for security
elinks.x86_64                   0.12-0.13.pre3.fc11       fedora
kernel.x86_64                   2.6.30.8-64.fc11          fedora
kernel-headers.x86_64           2.6.30.8-64.fc11          fedora
You can then update the system using only the security-related updates (and
 excluding all others, such as bug fix updates) with the command:
~]# yum update --security

通过运行 man yum-security 可以查看 security 插件为 yum 增加的新功能及它们的详细用法。

RPM 使用教程

RPM 软件包管理器是一套开放的软件包封装机制,除了 Fedora,在其它 Linux 和 Unix 操作系统上同样能够使用 RPM。红帽公司 (Red Hat, Inc.) 及 Fedora 项目组也建议其它软件厂商使用 RPM 来封装它们的产品。

RPM 软件包管理器是一套开放的软件包封装机制,除了 Fedora,在其它 Linux 和 Unix 操作系统上同样能够使用 RPM。红帽公司 (Red Hat, Inc.) 及 Fedora 项目组也建议其它软件厂商使用 RPM 来封装它们的产品。

RPM 基于 GPL (GNU 通用公共许协议) 发布的软件产品。

RPM 软件包管理器只能管理以 RPM 形式封装的软件包,并且 RPM 本身也是一个预先安装好的 rpm 形式的软件包。

对于终端用户而言,RPM 使得系统升级变得十分容易,同时只需要十分简单的命令就能完成 RPM 软件包的安装、卸载和升级。

RPM 为已安装的软件包,以及软件包所包含的文件建立了一份数据库,因此,你能够在系统上使用调用非常强大的请求和验证功能。

如果你更喜欢图形界面而不是命令行,你可以使用 PackageKit,详细信息请参考《PackageKit》

安装软件包之前,请确认所选择的软件包与你的操作系统和处理器平台相兼容。这一工作通常通过查看软件包名称就能完成,例如,为 AMD64/Intel64 平台编译的 RPM 软件包,它们的名称结尾看起来像 x86_64.rpm。

使用 RPM 升级/更新 软件包时,它会小心的处理你的配置文件,从而在软件升级之后依然保持你的自定义配置。而传统的 .tar.gz 软件包,并不能自动完成这项任务,而可能导致你的配置文件被覆盖。

对于开发人员而言,RPM 能够让你将软件源代码封装成源代码软件包和二进制软件包,然后供终端用户使用。这个过程十分简单,并且,RPM 会将单个文件与这个文件的补丁文件分离。通过这种分离结构,开发人员能够简单地创建和维护软件包的新版本。

在使用 rpm 命令安装、删除或升级 .rpm 软件包前,需要切换成 root 身份,可参考《使用 sudo 命令,以根用户身份执行命令

 

RPM 使用教程

RPM 软件包管理工具的设计意图

理解 RPM 的设计意图,有利于帮助你了解如何使用 RPM,以及 RPM 的某些功能是如何实现的,在这个基本上,方便你更好的使用它对系统中的 RPM 软件包进行管理和维护。

理解 RPM 的设计意图,有利于帮助你了解如何使用 RPM,以及 RPM 的某些功能是如何实现的,在这个基本上,方便你更好的使用它对系统中的 RPM 软件包进行管理和维护。

可升级性:
使用 RPM,你能够单独的升级系统上某个单独的组件,而无需重新安装整个软件包或者整个系统。当你取得一个基于 RPM 软件格式的新操作系统 (如 Fedora ) 的发行版时,你无需在机器上重新安装一个 Fedora 操作系统,RPM 能够聪明地、全自动化地为你升级系统。并且,所有软件包配置文件中的自定义设置都将被保留。
RPM 软件包既可用于安装,也可用于升级软件包,如果你要升级某个软件包,只需获得最新的 rpm 软件包就行了。

强大的查询功能:
RPM 被设计成拥有强大的查询功能,你能够通过搜索整个数据库查询软件包或者是软件包中的文件。你能够查询出某个文件属于哪个软件包,或者软件包是从哪里取得的。
RPM 软件包中的所有文件被包含在一个压缩档案中,另外还有一个自定义的二进制头文件,其中包含了软件包的相关信息以及包含的内容。这样一来,查询单个软件包的信息,就变得更快速、更容易了。

系统验证

RPM 的另一个强大的特性就是软件包验证功能。如果你担心自己不小心删除了某个软件包中的重要文件,你能够通过验证软件包得知。如果被通知软件包异常,则可以通过重新安装软件包来解决,并且会保持你的现有的配置文件不被更改。

原软件源 (Pristine sources)
RPM 的另一个重大设计目标是允许使用原软件源 (Pristine Software Source)。RPM 将原软件源与软件的补丁分开。这种机制有几个原因,例如,当某个程序的新版本发布了,你不必重头开始编译整个程序,只需要查看补丁,看看可能需要执行哪些操作对程序进行更新,当然普通用户不太需要关注这一部分特性。
保持原软件源看起来只有软件开发人员很重要,但从结果上来看,它也使得终端用户能够得到更高质量的可用软件包。

取得 RPM 软件包

RPM 一共有五个基本操作模式:安装、卸载、升级、查询和验证 。当然封装也算 RPM 的一大功能,但大众用户很少会用到。从本节开始,将逐个介绍 RPM 的五个基本操作模式。

RPM 一共有五个基本操作模式:安装、卸载、升级、查询和验证 。当然封装也算 RPM 的一大功能,但大众用户很少会用到。从本节开始,将逐个介绍 RPM 的五个基本操作模式。

有关 rpm 命令的用法、选项和参数的作用,可使用 rpm --help 或 man rpm 命令查看。也可以从《有关 RPM 的附加资源》中寻找有关 RPM 的参考信息。

 

获取 RPM 软件包

在使用任何 RPM 软件包之前,你必须先要知道从哪里能够取得它们。除了能从 Fedora 官方的软件包仓库取得由 Fedora 项目组创建的 RPM 软件包,也还能够通过互联网能够找到许多 RPM 软件包仓库,以及一些 RPM 软件包下载站点。
以下是常用来寻找 RPM 软件包的位置:

  • Fedora 安装媒体 (CD 或 DVD) 中有许多 RPM 软件包
  • Yum 软件包管理器提供的默认软件包仓库,有关使用 Fedora 官方软件包仓库的方法请参考《Yum 使用教程
  •  非官方的第三方软件仓库,如 rpmfusion.org
在将第三方软件仓库添加为软件包源之前,花点时间关注来自这个仓库的软件包的兼容性。因为第三方软件仓库所提供的软件包可能与原软件包有所不同,或者不完整。

使用 RPM 命令安装软件包

输入以下命令即可执行软件包的安装了,其中 -i 选择告诉 rpm 执行安装操作,v 和 h 选项不是必须的,它们的功能是用于显示一些输出信息和安装进程。

RPM 软件包的文件名称通常像 tree-1.5.2.2-4.fc12.x68_64.rpm。这个文件名中包含了软件包名称 (tree),版本号 (1.5.2.2),发行版 (4),操作系统主版本 (fc12) 以及 CPU 平台 (x86_64)。假设 tree-1.5.2.2-4.fc12.x86_64.rpm 软件包位于当前目录,在命令行中切换到 root 用户,输入以下命令即可执行软件包的安装了

rpm -ivh tree-1.5.2.2-4.fc12.x86_64.rpm

其中 -i 选择告诉 rpm 执行安装(install)操作,v 和 h 选项不是必须的,它们的功能是用于显示一些输出信息和安装进程。

另外,你也能够使用 -U 选项来升级 (或安装) 软件包

rpm -Uvh tree-1.5.2.2-4.fc12.x86_64.rpm
Preparing...                ########################################### [100%]
   1:tree                   ########################################### [100%]

就如你所看到的, 在执行软件包的安装/升级时,RPM 输出软件包的名称,并在后面打印一连串 # 号表示安装/升级进度。

当安装或升级软件包时,RPM 会自动检查软件包的签名。RPM 通过签名判断软件包是否经由被认可的机构。如果验证签名失败,则会看到以下信息:

error: tree-1.5.2.2-4.fc12.x86_64.rpm: Header V3 RSA/SHA256 signature: BAD,
 key ID d22e77f2

如果你没有安装合适的密钥(key)用于验证软件包的签名,信息中则会包含 NOKEY 字样:

error: tree-1.5.2.2-4.fc12.x86_64.rpm: Header V3 RSA/SHA256 signature: BAD,
key ID d22e77f2

有关验证软件包签名的更多信息,请参考《验证软件包签名》

 如果要安装内核 (Kernel) 软件包,请使用 rpm -ivh 命令,而不是 rpm -Uvh,因为安装内核软件包时, -i 与 -U 选项拥有特殊的含义。详细情况请参考《手动升级系统内核(Kernel)》

使用 RPM 安装软件包的常见问题

使用 RPM 命令安装软件包的常见问题包括:软件包已经被安装、文件冲突,以及未被解析的软件包依赖性。

软件包已经被安装

如果某个名称和版本号都相同的软件包已经被安装在系统中,在使用 rpm 命令进行安装时则会输出以下信息,提示你软件已经被安装 (already installed)

Preparing...                ########################################### [100%]
 package tree-1.5.2.2-4.fc12.x86_64 is already installed

使用 --replacepkgs 选项让 RPM 忽略上述错误信息,执行软件包的覆盖安装。

~]# rpm -ivh --replacepkgs tree-1.5.2.2-4.fc12.x86_64.rpm
通常在修复出问题的软件包时,可以使用覆盖安装

 

文件冲突

当你安装的某个软件包中包含的文件已经通过其它软件包安装到系统中,则会出现以下提示信息

Preparing...                ##################################################
 file /usr/bin/foobar from install of foo-1.0-1.fc12 conflicts
with file from package bar-3.1.1.fc12

使用 --replacefiles 选择能够忽略这个错误

~]# rpm -ivh --replacefiles foo-1.0-1.fc12.x86_64.rpm
注意:使用 --replacefiles 会替换系统中已经安装的相同的文件,除非你清楚这个文件的用途和替换可能产生的影响,否则不要轻易执行文件替换。

 

未被解析的软件包依赖性

RPM 软件包有时候需要依赖于其它的软件包,意思就是说在这个软件包安装之前,必须先安装一些其它的软件包才能保证它的正常运行。如果安装的软件包的依赖性没有被解决,则会显示类似于以下的输出信息

error: Failed dependencies:
 bar.so.3()(64bit) is needed by foo-1.0-1.fc12.x86_64
    Suggested resolutions:
        bar-3.1.1.fc12.x86_64.rpm

以上输出说明 foo-1.0-1.fc12.x86_64 这个软件包依赖于 bar.so.3 这个文件,并且建议你通过安装 bar-3.1.1.fc12.x86_64 软件包来解决这个依赖性问题。这时你只需要找到这个依赖性软件包,并将其安装即可。

但有时 RPM 不会作出以上提示,这时可以使用 --whatprovides 选项加上依赖的文件名进行查找

~]# rpm -q --whatprovides "bar.so.3"
bar-3.1.1.fc12.i586.rpm

由输出结果可知,通过安装 bar-3.1.1.fc12.i586 软件包就能解决这个问题了 :D

注意:通过 --nodeps 选项可以忽略软件包的依赖,让 RPM 强制安装某个软件包。但强制安装的软件包通常都无法正常工作,而且可能导致系统安全以及稳定性等多方面的问题,因此不建议强制安装软件包。
提示:yum 和 PackageKit 都能够自行解析并处理软件包依赖性的问题,并且在条件许可的情况下,建议使用 yum 执行软件包的管理工作。更多有关 yum 的信息可参考《Yum 使用教程

使用 RPM 命令卸载软件包

使用 RPM 卸载软件包十分简单,只需要通过命令行中输入 rpm -e <package_name> 即可,对于未解决依赖性的软件包,可以使用 --provides 选项可以查询文件所需的软件包

使用 RPM 卸载软件包十分简单,只需要通过命令行中输入 rpm -e <package_name> 即可

~]# rpm -e foo
 注意:卸载软件包时,只需要提供软件包的名称即可,即 foo,使用 RPM 软件包的全名 (foo-1.0-1.fc12.x86_64) 则会提示“错误的软件包”。

如果你要卸载的软件包被其它软件包所依赖,系统则会提示"依赖性错误"

~]# rpm -e ghostscript
error: Failed dependencies:
 libgs.so.8()(64bit) is needed by (installed)
 libspectre-0.2.2-3.fc12.x86_64
 libgs.so.8()(64bit) is needed by (installed) foomatic-4.0.3-1.fc12.x86_64
 libijs-0.35.so()(64bit) is needed by (installed)
 gutenprint-5.2.4-5.fc12.x86_64
 ghostscript is needed by (installed) printer-filters-1.1-4.fc12.noarch

在《使用 RPM 安装软件包的常见问题》中提到,对于未解决依赖性的软件包,可以使用 --provides 选项可以查询文件所需的软件包

~]# rpm -q --whatprovides "libgs.so.8()(64bit)"
ghostscript-8.70-1.fc12.x86_64
注意:通过 --nodeps 选项可以忽略软件包的依赖,让 RPM 强制卸载某个软件包。但强制卸载软件包之后可能导致其它依赖于它的软件包都无法正常工作,并可能导致系统安全以及稳定性等多方面的问题,因此不建议强制卸载软件包。
提示:yum 和 PackageKit 都能够自行解析并处理软件包依赖性的问题,并且在条件许可的情况下,建议使用 yum 执行软件包的管理工作。更多有关 yum 的信息可参考《Yum 使用教程

使用 RPM 命令升级软件包

升级软件包与安装软件包的命令十分相似,只是升级使用 -U 选项,而安装是使用 -i 选项。当系统中没有安装先前版本的软件包时,-U 选项则会执行安装的操作。

升级软件包与安装软件包的命令十分相似,只是升级使用 -U 选项,而安装是使用 -i 选项。

假设名为 tree-1.5.3.0-1.fc12.x86_64.rpm 的软件名位于当前目录,并且我们已经在系统中安装了名为 tree-1.5.2.2-4.fc12.x86_64.rpm 的软件包,我们则可以通过以下命令对软件包进行升级

~]# rpm -Uvh tree-1.5.3.0-1.fc12.x86_64.rpm

作为升级软件包进程的一部分,RPM 会自动卸载之前老版本的 tree 软件包。当系统中没有安装先前版本的软件包时,-U 选项则会执行安装的操作。因此使用 -U 选项,即能够安装,也能够升级软件包。

注意:不推荐使用 -U 选项对内核 (kernel) 软件包进行安装,这样做会让 RPM 完全地覆盖先前版本的内核软件包。这个操作不会马上影响当前系统,但如果下次你无法使用新的内核启动系统,你就没有其它可用内核进行启用了。 使用 -i 选项将会将新安装的内核添加到你的 GRUB 启用菜单 (即 /etc/grub.conf 文件)。同样,移除某个内核软件包时,也会从 GRUB 菜单中删除相应内容。使用 yum 升级内核软件包时,它等同于 -i 选择的 rpm 命令,因此可以放心升级。

RPM 会聪明地处理配置文件以名升级过程中出现配置丢失,所以你可能会在升级软件包时看到以下信息

saving /etc/foo.conf as /etc/foo.conf.rpmsave

出现这个消息,则说明新版本软件包中的配置文件不向前兼容(forward-compatible),所以 RPM 为你备份并添加一份最新的配置文件。 你需要了解两份配置文件的不同,并解决其中的问题,从而保证你能够将旧配置文件中的设置过渡到新的软件中。

或者,RPM 不会变更旧的配置文件,而是将新的配置文件保存为 foo.conf.rpmnew。不论是哪种情况,依然建议你查看两份配置的不同,并解决配置方面的问题。比对两个文件,可以使用 diff 程序。

如果你想将软件包更新为版本号更低的软件包,则会得到以下输出

package foo-2.0-1.fc12.x86_64.rpm (which is newer than foo-1.0-1) is already installed

使用 --oldpackage 选项,能够强制地将软件包更新为旧版本的软件包

~]# rpm -Uvh --oldpackage foo-1.0-1.fc12.x86_64.rpm

使用 RPM 命令更新软件包

更新 (Freshening) 选项 与升级 (Upgrading) 选项十分相似,唯一的不同是 -F 选项只会更新系统中已安装的软件包,对于没有安装的软件包,不会像 -U 选项那样,直接对其进行安装。

更新 (Freshening) 选项 与升级 (Upgrading) 选项十分相似,唯一的不同是 -F 选项只会更新系统中已安装的软件包,对于没有安装的软件包,不会像 -U 选项那样,直接对其进行安装。

~]# rpm -Fvh foo-2.0-1.fc12.x86_64.rpm

RPM 的 -F 选项会对比已安装的软件包的版本和要提供的软件包的版本,如果提供的软件包的版本更新,RPM 则执行升级操作。但当系统中没有安装某软件包的老版本时, -F 选项不会安装软件包 (-U 选项会执行安装操作)。

以下是一个使用 -F 选项的场合。比如你得到一张新的软件包光盘,你想对系统中的软件包做一次大面积地更新,却又不想安装那些光盘中有,而系统中没有安装的软件包。使用 -F 选项,就能做到只对安装的软件包进行更新。

~]# rpm -Fvh *.rpm

使用 RPM 命令查询软件包

RPM 数据库中存储了安装在系统中所有软件包的信息,数据库的位置是 /var/lib/rpm/ 使用这个数据库,你能够查询到系统中安装了哪些软件包、软件包的版本号是多少、软件包中的文件自安装之后进行了多少更改,以及其它方面查询。

RPM 数据库中存储了安装在系统中所有软件包的信息,数据库的位置是 /var/lib/rpm/ 使用这个数据库,你能够查询到系统中安装了哪些软件包、软件包的版本号是多少、软件包中的文件自安装之后进行了多少更改,以及其它方面查询。

查询这个数据库,需要使用 -q 选项。例如使用 rpm -q <package_name> 命令查询软件包是否已经安装,对于已安装的软件包,则会返回 rpm 包的全名

~]# rpm -q tree
tree-1.5.2.2-4.fc12.x86_64

在查询时,你还可以通过使用以下选项与 -q 选项配合,加强 RPM 的查询功能 ( rpm 的查询功能十分强大而且有效,更多信息可以参考 man rpm)

  • -a - 查询所有已安装的软件包
  • -f <file_name> - 从 RPM 数据库中查询哪个软件包包含指定的文件,查询时要指定文档的绝对路径,即使用 rpm -qf /bin/ls 而不是 rpm -qf ls
  • -p <package_file> - 对还未安装到系统中的软件包文件进行查询

请求软件包信息 以下选项用于指定以何种形式显示你所搜索的信息,这些选项被称为“软件包查询选项 (Package Query Options)”

  • -i - 显示有关软件包的详细信息,包含软件包名称、描述、发行版、大小、封装日期、安装日期、软件提供商以及其它许多信息
  • -l - 显示软件包所包含的文件列表
  • -s - 显示软件包中所有文件的状态
  • -d - 显示软件包中标识为文档 (如 man 文档,info 文档 和 README 文档) 的文件列表
  • -c - 显示软件包中标识为配置文件的文件列表 (如 smb.conf, passwd, inittab 等文档)

为以上给出文件列表的选项加上 -v 选项,能够显示长文件信息,格式与 ls -l 相似。

使用 RPM 命令验证软件包

验证软件包,通常是指比较安装的文件的信息与原软件包中的信息进行比对。其中包含每个文件的大小、MD5 校验值、权限、类型、用户及用户组的验证。

验证软件包,通常是指比较安装的文件的信息与原软件包中的信息进行比对。其中包含每个文件的大小、MD5 校验值、权限、类型、用户及用户组的验证。

使用 -V 选项对软件包进行验证,例如使用 rpm -V tree 命令,就会将 tree 软件包中的所有文件与它们最开始的安装时的情况进行对比验证。

~]# rpm -V tree

验证指定的文件可以使用以下命令

~]# rpm -Vf /usr/bin/tree
说明:执行指定文件的验证时,需要使用文件的绝对路径。

结合 -a 参数,可以对系统中所有安装的软件包进行验证(所需要时间较长)

~]# rpm -Va

验证已安装的 RPM 软件包

~]# rpm -Vp tree-1.5.2.2-4.fc12.x86_64.rpm

如果验证结果通过,系统则不会给出任何输出。如果验证时发现有差异,则会显示相关文件的验证信息。输出的前8位为验证状态,验证通过的那一位以点 (.) 表示,验证不通过则以相应字符表示,以下为每个字符所表示的含义

  • 5 - MD5 校验值
  • S - 文件大小
  • L - 符号链接
  • T - 文件修改时间
  • D - 设备
  • U - 用户
  • G - 组
  • M - 模式 (包含权限和文件类型)
  • ? - 不可读文件 (如文件权限出错)

当验证的软件包出现问题,并给出以上输出时,请你用你认为最好的方式去处理它,包括移除软件包、重装软件包或者用其它各种方法对问题进行修复

检查 RPM 软件包及签名

如果你希望检查一个软件包是否损坏或者被窜改,你可以通过 RPM 命令检查软件包的 MD5 校验值。并且在成功导入 GnuPG 密钥之后,还能使用 RPM 命令对 RPM 软件包进行签名验证

检查软件包完整性

如果希望检查一个软件包是否损坏或者被窜改,可以通过以下命令检查软件包的 MD5 校验值 (注意将 <rpm_file> 更改为你希望检查的软件包的路径或名称)

~]# rpm -K --nosignature <rpm_file>
<rpm_file>: rsa sha1 (md5) pgp md5 OK

类似于上下输出结果则表示得到的是正确的(未损坏的、未被篡改的)软件包

如果希望看到详细的输出信息,可以使用 -Kvv 选项代替 -K 选项。

~]# rpm -Kvv --nosignature <rpm_file>

另外,怎样辨别软件包的真正开发者是不是可信的呢 ? 如果软件包使用了开发人员的 GnuPG 密钥进行签名,你就能知道谁是真正的软件开发者了。没有 GPG 签名的软件包不一定不可信,但我们更愿意相信有签名的软件包。

通过使用 GnuPG (Gnu Private Guard) 签名的软件包,能够帮助我们确定软件包的可信赖性。

GnuPG 是一个保证传输安全的工具,它是 PGP 加密技术的免费替代程序。使用 GnuPG,你能够确认你从另处所收到的文档、数据的可信赖性和有效性。GnuPG 还支持 PGP 5.x 版本文件的验证。

GnuPG 在系统安装就被默认安装上了,从而保证你能够马上使用它验证下载来的 RPM 软件包。在进行验证之前,还需要导入正确的密钥。

 

导入密钥

Fedora 的 GnuPG 密钥位于 /etc/pki/rpm-gpg/ 目录。以 Fedora 项目组为例,要验证来自 Fedora 项目组的软件包,需要先导入与你处理器平台相应的密钥。

~]# rpm -import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-x86_64

输入以下命令,则可以查看所以已经安装的密钥

~]# rpm -qa gpg-pubkey*
gpg-pubkey-57bbccba-4a6f97af
...

输出结果中的内容,即是已经安装在系统中的密钥

使用 rpm -qi <key> 则可以查看指定密钥的详细信息

~]# rpm -qi gpg-pubkey-57bbccba-4a6f97af

 

验证软件包签名

成功导入 GnuPG 密钥之后,使用以下命令即可对 RPM 软件包进行签名验证

~]# rpm -K <rpm_file>

如果不出问题,将会显示类似于 “rsa sha1 (md5) pgp md5 OK” 的信息,这说明软件包的签名已经通过验证,软件包完整并能够安全安装。

更多关于 Fedora 项目的密钥的信息,可参考 http://fedoraproject.org/en/keys

RPM 命令常见用法实例

RPM 不仅是管理系统软件包的强力工具,还是论断和修复难题得力助手。通过查看和学习各个选项的实际示例,能让你更好的理解这一点。

RPM 不仅是管理系统软件包的强力工具,还是论断和修复难题得力助手。通过查看和学习各个选项的实际示例,能让你更好的理解这一点。

也许你不小心删除了某个文件,但是又不确定删除的是什么。通过验证整个系统的软件包,RPM 能够帮你找出哪些文件丢失,或者出现了其它问题。

~]# rpm -Va

如果文件丢失,或者不通过验证,你可以考虑重新安装软件包来解决这个问题。

有时你看到某个不认识的文件,可以使用以下命令找出它属于哪一个软件包

~]# rpm -qf /usr/bin/ghostscript
ghostscript-8.70-1.fc12.x86_64

如果你想查看某个程序的更多信息,可以使用以下命令列出与该程序相关的文档资料

~]# rpm -qdf /usr/bin/free
/usr/share/doc/procps-3.2.8/BUGS
/usr/share/doc/procps-3.2.8/FAQ
/usr/share/doc/procps-3.2.8/NEWS
/usr/share/doc/procps-3.2.8/TODO
/usr/share/man/man1/free.1.gz
/usr/share/man/man1/pgrep.1.gz
/usr/share/man/man1/pkill.1.gz
/usr/share/man/man1/pmap.1.gz
/usr/share/man/man1/ps.1.gz
/usr/share/man/man1/pwdx.1.gz
/usr/share/man/man1/skill.1.gz
/usr/share/man/man1/slabtop.1.gz
/usr/share/man/man1/snice.1.gz
/usr/share/man/man1/tload.1.gz
/usr/share/man/man1/top.1.gz
/usr/share/man/man1/uptime.1.gz
/usr/share/man/man1/w.1.gz
/usr/share/man/man1/watch.1.gz
/usr/share/man/man5/sysctl.conf.5.gz
/usr/share/man/man8/sysctl.8.gz
/usr/share/man/man8/vmstat.8.gz

你有一个新的软件包,却不知道它是干什么用的。可以使用以下命令查看软件包的详细信息

~]# rpm -qip crontabs-1.10-31.fc12.noarch.rpm
Name        : crontabs                     Relocations: (not relocatable)
Version     : 1.10                              Vendor: Fedora Project
Release     : 31.fc12                       Build Date: Sat 25 Jul 2009
 06:37:57 AM CEST
Install Date: (not installed)               Build Host:
 x86-6.fedora.phx.redhat.com
Group       : System Environment/Base       Source RPM:
 crontabs-1.10-31.fc12.src.rpm
Size        : 2486                             License: Public Domain and
 GPLv2
Signature   : RSA/SHA1, Tue 11 Aug 2009 01:11:19 PM CEST, Key ID
 9d1cc34857bbccba
Packager    : Fedora Project
Summary     : Root crontab files used to schedule the execution of
 programs
Description :
The crontabs package contains root crontab files and directories.
You will need to install cron daemon to run the jobs from the crontabs.
The cron daemon such as cronie or fcron checks the crontab files to
see when particular commands are scheduled to be executed.  If commands
are scheduled, it executes them.
Crontabs handles a basic system function, so it should be installed on
your system.

如果你想知道 crontabs 软件包向系统中安装了哪些文件,可以使用以下命令查看

~]# rpm -qlp crontabs-1.10-31.fc12.noarch.rpm
/etc/cron.daily
/etc/cron.hourly
/etc/cron.monthly
/etc/cron.weekly
/etc/crontab
/usr/bin/run-parts
/usr/share/man/man4/crontabs.4.gz

以上只是一些简单的示例,相信你在实际使用 RPM 之后,会发现它更多有用的地方。

Linux 网络接口

在 Fedora 中,所有的网络通讯都发生在软件接口与物理网络设备之间。与网络接口配置相关的文件,以及控制网络接口状态的脚本文件,全都位于 /etc/sysconfig/netwrok-scripts/ 目录下。

在 Linux 中,所有的网络通讯都发生在软件接口与物理网络设备之间。与网络接口配置相关的文件,以及控制网络接口状态的脚本文件,全都位于 /etc/sysconfig/netwrok-scripts/ 目录下。虽然在不同的系统之间,这些文件的类型和数量并不一定相同,但大致来讲,都包含以下几类与网络相关的配置文件:

  • 网络接口配置文件
  • 网络接口控制脚本
  • 与网络相关的函数库文件(function files)

各种的网络设备都需要用到这些文件保证设备的正常动作

本章将深入探讨这些文件的用途,以及使用它们的方式。

 

Linux 网络接口

网络接口配置文件

在 Linux 中,网络接口配置文件用于控制系统中的软件网络接口,并通过接口实现对网络设备的控制。当系统启动时,系统通过这些接口配置文件决定启动哪些接口,以及如此对这些接口进行配置。

在 Linux 中,网络接口配置文件用于控制系统中的软件网络接口,并通过这些接口实现对网络设备的控制。当系统启动时,系统通过这些接口配置文件决定启动哪些接口,以及如何对这些接口进行配置。接口配置文件的名称通常类似于 ifcfg-<name>,其中 <name> 与配置文件所控制的设备的名称相关。

在所有的网络接口中,我们日常中最常用到的接口类型就是以太网接口。

以太网接口

在所有的网络配置文件中,最常用的就是 ifcfg-eth0,因为它是系统中第一块网卡的配置文件。如果系统中有多块网卡,ifcfg-eth 后面的数字就会依次递增。正因为每个设备都有对应的一个配置文件,因此管理员也能够单独地控制每一个设备。

以下是一个 ifcfg-eth0 配置文件的示例,在配置中已经为网卡设置好了 IP 地址。

DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
NETWORK=10.0.1.0
NETMASK=255.255.255.0
IPADDR=10.0.1.27
USERCTL=no

在接口配置文件中,选项之间存在着一些关联,如果不像上例中那样使用固定 IP,使用 DHCP 获取 IP 地址的配置文件又会不一样。以下就是将网卡配置成通过 DHCP 获取 IP 地址的配置:

DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
使用网络管理工具(system-config-network) 对网络接口文件进行更改是比较方便的一种方式,但通过学习手动更改配置文件,能够更好的在各种 Linux 发行版中执行网络配置的工作。
有关网络管理工具的使用方法,可以参考下一章翻译文档 - 《Fedora/Linux 网络配置工具》

下面是以太网接口配置文件中常用的一些选项:

BOOTPROTO=<protocol>

<protocol> 的值能够是以下几种:

  • none - 不指定启用协议
  • bootp - 使用 BOOTP 协议
  • dhcp - 使用 DHCP 协议

BROADCAST=<address>

<address> 表示广播地址。ifcalc 程序会自动计算这个地址,不推荐手动对它进行配置。

DEVICE=<name>

<name> 表示物理设备的名称 ,对于动态寻址的 PPP 设备则是指它的逻辑名称。

DNS{1,2}=<adderss>

<address> 表示名称服务器的 IP 地址。如果 PEERDNS 选项被设置为 yes,这里设置的 IP 地址将会替代 /etc/resolv.conf 中的设置

IPADDR=<address>

<address> 的值就是分配给网卡的 IP 地址

NETMASK=<mask>

<mask> 表示子网掩码

GATEWAY=<address>

<address> 的值为路由器或其它网关设备的 IP 地址

NETWORK=<address>

<address> 表示网络地址,ifcalc 程序会自动计算这个地址,不推荐手动对它进行配置。

ONBOOT=<yes|no>

  • yes - 系统启动时激活设备
  • no - 系统启动时不激活设备

PEERDNS=<yes|no>

  • yes - 使用 DNS 选项的值替代 /etc/resolv.conf 中的配置。如果使用 DHCP,yes 则为这个选项的默认
  • no - 不更改 /etc/resolv.conf 中的配置

USERCTL=<yes|no>

  • yes - 允许非 root 用户控制这个设备
  • no - 不允许非 root 用户控制这个设备

以上是有关以太网配置的常用选项,更多配置选项请参考《Linux 以太网接口配置

网络配置文件

在开始对 Linux 进行网络配置之前,我们先要认识与网络配置相关的一些主要配置文件。了解这些配置文件如何控制和影响网络,对你自定义 Fedora 系统的网络非常有帮助。

在开始对 Linux 进行网络配置之前,我们先要认识与网络配置相关的一些主要配置文件。了解这些配置文件如何控制和影响网络,对你自定义 Fedora/Linux 系统的网络非常有帮助。

以下是 Linux 中主要的几个网络配置文件,目前你只需要大致了解一下,在之后的教程中会详细讲解各种网络配置:

/etc/hosts

这个文件用于设置主机名与 IP 映射关系,为那些无法通过其它方式 (如通过 DNS 服务器) 解析的主机名进行解析,它还能够在没有 DNS 的小型网络中充当主机名解析的角色。不论计算机在什么类型的网络上,hosts 文件中都有关于环回链路(127.0.0.1)的主机记录 (localhost.localdomain)。

更多有关 hosts 文件的信息,请参考 hosts 文件的 man 文档。

/etc/resolv.conf

这个文件用于设置 DNS 的 IP 地址和搜索域,除非另行配置,否则网络初始化脚本总是使用这个文档中的配置信息。更多信息请参考 resolv.conf 的 man 文档。

/etc/sysconfig/network

这个文件用于为所有网络接口设置路由和主机信息。有关此文件的更多信息,请参考《/etc/sysconfig/network 配置文件》

/etc/sysconfig/network-script/ifcfg-<interface-name>

每一个网络接口,都有一个与之对应用的配置脚本,这些脚本文件为相应的网络接口设置指定的配置信息。有关这类文件的信息以及如何使用这类文件,请参考《网络接口配置文件》

/etc/sysconfig/networking/ 目录中包含着网络管理工具使用的文档,请不要人工更改这些文件。有关网络管理工具的更多信息,可参考《网络配置》

以太网接口配置

本文是对以太网接口配置文件中选项的补充,有关 Linux 网络的基本配置,还请参考《Linux 网络接口配置文件》。

本文是对以太网接口配置文件中选项的补充,有关 Linux 网络的基本配置,还请参考《Linux 网络接口配置文件》。

 

BONIDNG_OPTS=<parameters>

这个参数用于 /etc/sysconfig/network-scripts/ifcfg-bond<N> 配置文件中,用于绑定设备 (Bonding Device) 设置参数。这些参数与 /sys/class/net/<bonding-device>/bonding 中使用的参数是相同的。

这项配置被应用之后,多个绑定设备就能够应用不同的配置。如果你在 ifcfg-<name> 文件中使用了 BONDING_OPTS 选项,则不要再使用 /etc/modprobe.conf 配置文件对绑定设备进行配置。

BOOTPROTO=<protocol>

<protocol> 的值能够是以下几种:

  • none - 不指定启用协议
  • bootp - 使用 BOOTP 协议
  • dhcp - 使用 DHCP 协议

BROADCAST=<address>

<address> 表示广播地址。ifcalc 程序会自动计算这个地址,不推荐手动对它进行配置。

DEVICE=<name>

<name> 表示物理设备的名称 ,对于动态寻址的 PPP 设备则是指它的逻辑名称。

DHCP_HOSTNAME

某些 DHCP 服务器要求客户端设置这个主机名才能获取到 IP 地址,一般无需使用这个选项。

DNS{1,2}=<adderss>

<address> 表示名称服务器的 IP 地址。如果 PEERDNS 选项被设置为 yes,这里设置的 IP 地址将会替代 /etc/resolv.conf 中的设置

ETHTOOL_OPTS=<options>

<options> 的值可以是 ethtool 程序所支持的任意值,例如你希望将网卡强制配置成百兆全双工工作模式,可以进行以下配置:

ETHTOOL_OPTS="autoneg off speed 100 duplex full"

GATEWAY=<address>

<address> 的值为路由器或其它网关设备的 IP 地址

HWADDR=<MAC-address>

<MAC-address> 的值为以太网设备的 MAC 地址,格式如 AA:BB:CC:DD:EE:FF。当机器上安装有多块网卡时,一定要使用这个选项,以确保接口被分配到正确的设备上 (为每个 NIC 模块配置了启用顺序的情况除外)。注意不要将这个选项与 MACADDR 选项一起使用。

MACADDR=<MAC-address>

<MAC-address> 的值为以太网设备的 MAC 地址,格式如 AA:BB:CC:DD:EE:FF。这个选项用于替换网卡原有的 MAC 地址。注意不要将这个选项与 HWADDR 选项一起使用

IPADDR=<address>

<address> 的值就是分配给网卡的 IP 地址

MASTER=<bond-interface>

<bond-interface> 的值是以太网卡连接到的通道绑定接口的名称,这个指令与 SLAVE 指令配合使用。

SLAVE=<yes|no>

  • yes - 表示此设备可以由 MASTER 指令中配置的通道绑定接口进行控制。
  • no - 表示此设备不能由 MASTER 指令中配置的通道绑定接口进行控制。

NETMASK=<mask>

<mask> 表示子网掩码

NETWORK=<address>

<address> 表示网络地址,ifcalc 程序会自动计算这个地址,不推荐手动对它进行配置。

ONBOOT=<yes|no>

  • yes - 系统启动时激活设备
  • no - 系统启动时不激活设备

PEERDNS=<yes|no>

  • yes - 使用 DNS 选项的值替代 /etc/resolv.conf 中的配置。如果使用 DHCP,yes 则为这个选项的默认
  • no - 不更改 /etc/resolv.conf 中的配置

SRCADDR=<address>

<address> 的值为出栈数据包的源 IP 地址

USERCTL=<yes|no>

  • yes - 允许非 root 用户控制这个设备
  • no - 不允许非 root 用户控制这个设备

IPSec 接口配置

在上面的配置文件中,X.X.X.X 要替换为支持 IPsec 的目标路由器的公网 IP 地址。除了以上的选项和指令外,IPSec 接口配置文件中还可以使用以下选择和指令

使用 Fedora/Linux 操作系统,能够轻易的实现 IPSec 接口的配置,以下是一个网络间 IPsec 连接的接口配置文件的示例。它的配置文件名中具备唯一的连接标识符 ipsec<N>,文件的绝对路径类似于 /etc/sysconfig/network-scripts/ifcfg-ipsec1

TYPE=IPsec
ONBOOT=yes
IKE_METHOD=PSK
SRCNET=192.168.1.0/24
DSTNET=192.168.2.0/24
DST=X.X.X.X

在上面的配置文件中,X.X.X.X 要替换为支持 IPsec 的目标路由器的公网 IP 地址。除了以上的选项和指令外,IPSec 接口配置文件中还可以使用以下选择和指令:

DST=<address>

<address> 表示支持 IPsec 的目标主机或路由器的 IP 地址,分别用于配置主机对主机和网络对网络间的 IPsec。

DSTNET=<network>

<network> 表示 IPsec 目标网络的网络地址,这个配置只用于网络对网络间的 IPsec

SRC=<address>

<address> 表示使用 IPsec 的源主机或源路由器的 IP 地址,这一选项只能用于主机间的 IPsec 的可选配置。

SRCNET=<network>

<network> 表示使用 IPsec 的源网络的网络地址,这一配置只用于网络间的 IPsec

TYPE=<interface-type>

<interface-type> 的值为 IPSEC,它属于 ipsec-tools 软件包中定义的一部分。

提示:如果 IPsec 使用人工密钥方式进行加密,可参考 /usr/share/doc/initscripts-<version-number>/sysconfig.txt, 其中 <version-number> 为安装在系统中的 initscripts 软件包的版本号。

racoon IKEv1 密钥管理守护程序为 IPSec 协商并配置一系列参考,它能够使用预定义密钥、RSA 签名或 GSS-API,如果使用 racoon 程序自动管理密钥加密,则要求配置以下附加选项:

IKE_METHOD=<encryption-method>

<encryption-method> 表示加密方式,它的值为 PSK, X509 或者 GSSAPI。如果值为 PSK,还必须设置 IKE_PSK 选项,如果值为 X509,就必须设置 IKE_CERTFILE 选项。

IKE_PSK=<shared-key>

<shared-key> 为使用 IPsec 两端共享的密钥值,这个值应该保密。

IKE_CERTFILE=<cert-file>

<cert-file> 是对本机有效的 X.509 证书文件

IKE_PEER_CERTFILE=<cert-file>

<cert-file> 是对远程计算机有效的 X.509 证书文件

IKE_DNSSEC=<yes|no>

yes - racoon 守护程序通过 DNS 取得远程计算机的 X.509 证书文件。

如果设置了 IKE_PEER_CERTFILE 选项,就不应该再使用这个选项。

更多有关 IPsec 可用的加密算法的信息,可参考 setkey 的 man 文档。更多有关 racoon 程序的信息,可参考 racoon 和 racoon.conf 文件的 man 文档。

通道绑定接口配置

Fedora/Linux 操作系统允许管理员通过使用“绑定内核模块”(bonding kernel model),将多个网络接口绑定成一个”通道绑定接口“(channel bonding interface),或称“绑定接口”。

Fedora/Linux 操作系统允许管理员通过使用“绑定内核模块”(bonding kernel model),将多个网络接口绑定成一个”通道绑定接口“(channel bonding interface),或称“绑定接口”。

绑定接口能够让两个或多个网络接口变成一个,从而增加网络带宽,提供网络冗余。

通过在 /etc/sysconfig/network-scripts/ 目录下创建 ifcfg-bond<N> 文档,就能够创建绑定接口。文件名称中的 <N> 为接口的编号,如第一个通道绑定接口的名称一般为 ifcfg-bond0。

ifcfg-bond<N> 文件的内容与以太网接口的配置文件(如 ifcfg-eth0)基本相同,只是 DEVICE 选项的值,应该为 bond<N>。

有关以太网接口配置文件,可参考《Linux 网络接口配置文件

以下是一个绑定接口的配置文件样本:

DEVICE=bond0
BONDING_OPTS="mode=1 miimon=500"
BOOTPROTO=none
ONBOOT=yes
NETWORK=10.0.1.0
NETMASK=255.255.255.0
IPADDR=10.0.1.27
USERCTL=no

通过配置文件创建一个绑定接口,之后还需要在被绑定的网络接口的配置文件中添加从属关系选项(MASTER 和 SLAVE)。 例如,将名为 eth0 和 eth1 的两块以太网上进行了绑定,则它们的配置文件内容类似于:

DEVICE=eth<N>
BOOTPROTO=none
ONBOOT=yes
MASTER=bond0
SLAVE=yes
USERCTL=no
绑定接口通过内核模块进行控制,有关 bonding 模块的更多信息,请参考《Channel Bonding 模块》

拨号接口配置

如果你是拨号上网用户,你也需要一个与拨号接口相关的配置文件。PPP 接口配置文件的名称规范为 ifcfg-ppp<X>,其中 <X> 是指定接口的唯一标识号。

如果你是拨号上网用户,你也需要一个与拨号接口相关的配置文件。PPP 接口配置文件的名称规范为 ifcfg-ppp<X>,其中 <X> 是指定接口的唯一标识号。

当使用 wvdial 命令、网络配置管理工具或者 Kppp 创建拨号帐户时,会自动生成 PPP 接口配置文件。

本文及本章节,都是说明如何对各种网络接口配置文档进行人工创建和编辑。有关网络管理工具的使用教程,可参考下一章翻译文档《网络管理工具》

以下是一个典型的 ifcfg-ppp0 配置文件

DEVICE=ppp0
NAME=test
WVDIALSECT=test
MODEMPORT=/dev/modem
LINESPEED=115200
PAPNAME=test
USERCTL=true
ONBOOT=no
PERSIST=no
DEFROUTE=yes
PEERDNS=yes
DEMAND=no
IDLETIMEOUT=600

 

以下是拨号接口配置文件中各个选项及指令的用法和说明

DEFROUTE=<yes|no>

  • yes - 将此接口作为默认路由
  • no - 不将此接口作为默认路由

DEMAND=<yes|no>

  • yes - 启用按需要拨号。即当用户需要网络连接时允许 pppd 程序自动初始化拨号连接
  • no - 必须手动建立拨号连接

IDLETIMEOUT=<value>

<value> 为空闲超时的值,即在指定的时间内如果没有网络通讯,则自动断开拨号连接

INITSTRING=<string>

这个选项主要与 SLIP 接口配合使用,用于将初始化值 <string> 传送给调制解调器设备。

LINESPEED=<value>

<value> 为设置的波特率值,可用的值一般为 57600, 38400, 19200 和 9600

MODEMPORT=<device>

<device> 的值为为此接口建立拨号连接的串行设备的名称

MTU=<value>

<value> 的值为此接口的最大传输单元 (MTU)。MTU 传输单元是指每一帧数据包能传输的最大字节数,这个值不将头部信息的大小计算在内。在一些拨号连接解决方案中,将 MTU 的值设为 576,用于减少掉包,并稍稍提升网络的呑吐量。

NAME=<name>

<name> 是一个名称值,用于标识此拨号连接。

PAPNAME=<name>

<name> 的值为使用密码认证协议 (PAP) 时分配的用户名,只用于某些需要认证的拨号连接。

PERSIST=<yes|no>

  • yes - 始终保持接口为激活状态,即使调制解调器已经断开。
  • no - 当调制解调器断开后,取消接口激活状态。

REMIP=<address>

<address> 的值为远程系统的 IP 地址,通常不配置。

WVDIALSECT=<name>

<name> 的值为 /etc/wvdial.conf 配置文件中的某个拨号器配置的名称。这个文件中包含了拨号的电话号码和其它与接口相关的重要信息。

别名接口和克隆接口配置文件

别名(Alias) 文件和 克隆(clone) 文件是 Linux 中用得比较少的两类网络接口配置文件。其中别名文件可以将多个 IP 地址绑定到一个网络接口上,克隆文件则用于为接口定义附加选项。

别名(Alias) 文件和 克隆(clone) 文件是 Linux 中用得比较少的两类网络接口配置文件。其中别名文件可以将多个 IP 地址绑定到一个网络接口上,克隆文件则用于为接口定义附加选项。

 

别名文件

别名文件的命名结构为 ifcfg-<if-name>:<alias-value>,如 ifcfg-eth0:0。假设 eth0 接口已经配置成 DHCP 自动获取 IP 地址,你可以在 ifcfg-eth0:0 配置文件中定义 DEVICE=eth0:0,并指定 IP 地址为 10.0.0.2。如此一来 eth0 接口使用 DHCP 分配的动态 IP,同时也能够接收到传给 10.0.0.2 的数据请求。

有关以太网接口配置文件(如 ifcfg-eth0),可参考《Linux 网络接口配置文件
注意:以太网接口 (ifcfg-eth0) 能够配置成 DHCP,但别名接口 (ifcfg-eth0:0) 不能配置成 DHCP。

 

克隆文件

克隆接口的命名结构为 ifcfg-<if-name>-<clone-name>,克隆文件用于为指定接口添加附加选项。例如,一个使用 DHCP 的网络接口 eth0,看起来像

DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp

以上配置没有设置 USERCTL 选项,因此 USERCTL 使用默认值 no,即非 root 用户无法控制接口的启用状态。通过将 ifcfg-eth0 文件复制成 ifcfg-eth0-user,并向克隆文件中添加 USERCTL=yes 指令,普通用户则能够通过 /sbin/if-up eth0-user 命令启用 eth0 接口了。

使用克隆文件时,实际上是整合了接口配置文件 (如 ifcfg-eth0) 和克隆文件 (如 ifcfg-eth0-user) 中的配置。

使用网络管理工具是创建别名文件和克隆文件较为简单,有关这个工具的使用信息,请参考下一章翻译文档《网络配置》

其它网络接口配置

除了之前讲到的以太网接口、IPSec 接口、通道绑定接口、别名接口、克隆接口及拨号接口的配置文件,Linux 还能够配置以下几种不太常用的网络接口。

 

ifcfg-lo

本地环回链路接口。环回链路通常用于测试,被不少应用程序所使用。任何发送到环回链路的数据都会马上返回到主机的网络层。

环回链路接口脚本位于 /etc/sysconfig/network-scripts/ifcfg-lo, 在任何情况下,都不要手动编辑这个文件,极可能导致系统不正常。

ifcfg-irlan0

红外线接口,它与以太网设备的配置方式差不多,但它通常用于 红外线设备间的点对点连接。

ifcfg-plip0

PLIP (平行链路接口协议) 与以太网设备连接的工作方式大致相同,不同之处在于它采用平行化端口。

ifcfg-tr0

令牌环网络拓扑与以太网络很不相同,以太网的流行使得令牌环网络很少被用到。

网络接口控制脚本

在 Linux 中,接口控制脚本用于激活和取消激活系统接口, /sbin/ifdown 和 /sbin/ifup 是两个最主要的接口控制脚本,它们通过调用 /etc/sysconfig/network-scripts/ 目录中的配置文件起作用。

在 Linux 中,接口控制脚本用于激活和取消激活系统接口, /sbin/ifdown/sbin/ifup 是两个最主要的接口控制脚本,它们通过调用 /etc/sysconfig/network-scripts/ 目录中的配置文件起作用。

ifup 和 ifdown 接口脚本是指向 /sbin/ 目录的链接符号,在使用这两个脚本时,需要指定接口的名称,如

~]# ifup eth0
普通用户也能够使用 ifup 和 ifdown 命令,但能够控制指定的接口还与接口的配置有关。

网络接口被启动时需要完成许多网络初始化的工作,其中大部分工作都由 /etc/rc.d/init.d/functions 和 /etc/sysconfig/network-scripts/network-functions 这两个文件实现,详情可参考《Linux 网络相关函数文件》。

当验证某个接口已经被配置完成,并且用户拥有控制接口的权限之后,相应的脚本则会启用或关闭这个接口。以下是位于 /etc/sysconfig/network-scripts/ 目录中常用的接口控制脚本:

ifup-aliases

当有别名接口配置文件时,为指定接口配置多个 IP 地。

ifup-ippp 和 ifdown-ippp

启用和关闭 ISDN 接口。

ifup-ipsec 和 ifdown-ipsec

启用和关闭 IPsec 接。

ifup-ipv6 和 ipdown-ipv6

启用和关闭 IPv6 接口。

ifup-plip

启用 PLIP 接口。

ifup-plusb

为网络连接启用 USB 接口。

ifup-post 和 ifdown-post

包含接口被启用或被关闭后要执行的命令

ifup-ppp 和 ifdown-ppp

启用和关闭 PPP 接口。

ifup-routes

当接口被启用时,为设备添加静态路由。

ifup-sit 和 ifdown-sit

包含在 IPv4 连接中启用和关闭 IPv6 通道所要被调用的函数。

ifup-sl 和 ifdown-sl

启用和关闭 SLIP 接口。

ifup-wireless

启用无线接口。

删除或更改 /etc/sysconfig/network-scripts/ 目录下的任何脚本,都可能导致接口连接出错或失败。因此,所以只在你对这些内容非常熟悉的情况下,才对它们进行更改。

同时操作所有网络脚本的最简单方法,就是使用 /sbin/service 命令对网络服务(/etc/rc.d/init.d/network)进行操作,如

~]# /sbin/service network <action>

<action> 可以是 start, stop 或 restart (启动、停止或重启)

使用以下命令,则可以查看已配置的设备及当前激活的网络接口的状态

~]# /sbin/service network status

配置静态路由

路由功能可以在路由设备上得以实现,因此在 Fedora/Linux 服务器或客户端上配置静态路由并不是十分必要。但如果有要求为每个接口配置静态路由,也是能够实现的。

路由功能可以在路由设备上得以实现,因此在 Fedora/Linux 服务器或客户端上配置静态路由并不是十分必要。但如果有要求为每个接口配置静态路由,也是能够实现的,尤其当机器上的多个接口分别位于不同的网段时,这一功能是相当有用。并且通过 route 命令能够显示当前的 IP 路由表。

静态路由配置存储在 /etc/sysconfig/network-scripts/route-<interface> 文件中,例如,eth0 接口的静态路由配置文件的名称为 route-eth0

route-<interface> 文件的内容有两种格式,一种是 IP 命令行参数格式,别一种是“网段/子网掩码”格式。

 

IP 命令行参数格式的静态路由配置

这种格式的静态路由配置首先定义接口的默认网关,然后配置文件中的每一行都被单独解析成一条路由条目。 以下是一个配置样本

default x.x.x.x dev <interface>
x.x.x.x/x via x.x.x.x dev <interface>

在第一行中,x.x.x.x 表示默认网关的 IP 地址,<interface> 是连接或通向默认网关的接口名称。后面的条目都是用于定义路由的静态路由条目。

注意:如果网卡被配置成通过 DHCP,并可以通过 DHCP 设置其默认网关,则不需要定义默认网关,即不要定义 default x.x.x.x dev <interface> 条目,否则在启动或激活接口时可能会出现一些错误信息。为多个静态路由同时使用相同的默认网关,也可能导致该问题。

在后面的静态路由条目中,x.x.x.x/x 表示路由指向的网段及其子网掩码,x.x.x.x 和 <interface> 分别表示达到目标网段的默认网关,以及连接或通向目标网段的网络接口。

上例中只写了一条路由条目,只要遵循这个格式,可以添加任意多的静态路由条目。

例1:系统中有一个 eth0 接口,它的默认网关为 192.168.0.1,并且可以通过 192.168.0.1 这个网关连接到 10.10.10.0/24 和 172.16.1.0/24 这两个网段,则静态路由配置的内容应该如下:

default 192.168.0.1 dev eth0
10.10.10.0/24 via 192.168.0.1 eth0
172.16.1.0/24 via 192.168.0.1 eth0

实际上,因为到达 10.10.10.0/24 和 172.168.1.0/24 的网关,与默认网关是相同的,因此不配置静态路由也能实现通信,这个例子主要用作说明罢了。下面的例 2 则是个实际的配置情景。

例2:系统中有 eth0, eth1 和 eth2,其中 eth0 连接到默认网关,eth1 和 eth2 分别通过网关 10.10.10.1 和 172.168.1.1 连接到网络 10.10.10.0/24 和 172.168.1.0/24,则静态路由配置的内容应该如下:

default 192.168.0.1 dev eth0
10.10.10.0/24 via 10.10.10.1 eth1
172.16.1.0/24 via 172.16.1.1 eth2

 

有关网段/子网掩码格式的静态路由配置,请看《Linux 配置静态路由 (二)

配置静态路由 (二)

使用“网段/子网掩码”格式的静态路由配置文件时,每三条记录为一组静态路由配置,并且需要使用连接的数字对静态路由的顺序进行标识,如: ADDRESS0, ADDRESS1, ADDRESS2 ...

本文主要做为第二种静态路由配置格式的示例,有关 Linux 下静态路由的基本知识和第一种静态路由配置格式,请参考《Linux 配置静态路由

 

网段/子网掩码 格式的静态路由配置

ADDRESS0=x.x.x.x
NETMASK0=x.x.x.x
GATEWAY0=x.x.x.x

说明:

  • ADDRESS0=x.x.x.x - 指定静态路由的目标网段
  • NETMASK0=x.x.x.x - 指定静态路由的子网掩码
  • GATEWAY0=x.x.x.x - 指定默认网关的 IP 地址

例:系统中有一个 eth0 接口,它的默认网关为 192.168.0.1,并且可以通过 192.168.0.1 这个网关连接到 10.10.10.0/24 和 172.16.1.0/24 这两个网段,则静态路由配置的内容应该如下:

ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=192.168.0.1
ADDRESS1=172.16.1.0
NETMASK1=255.255.255.0
GATEWAY1=192.168.1.1

使用“网段/子网掩码”格式的静态路由配置文件时,每三条记录为一组静态路由配置,并且需要使用连接的数字对静态路由的顺序进行标识,如: ADDRESS0, ADDRESS1, ADDRESS2 ...

在上例中,因为到达 10.10.10.0/24 和 172.168.1.0/24 的网关,与默认网关是相同的,因此不配置静态路由也能实现通信,这个例子主要用作说明罢了。下面的例 2 则是个实际的配置情景。

例 2:系统中有 eth0, eth1 和 eth2,其中 eth0 连接到默认网关,eth1 和 eth2 分别通过网关 10.10.10.1 和 172.168.1.1 连接到网络 10.10.10.0/24 和 172.168.1.0/24,则静态路由配置的内容应该如下:

ADDRESS0=10.10.10.0
NETMASK0=255.255.255.0
GATEWAY0=10.10.10.1
ADDRESS1=172.16.1.0
NETMASK1=255.255.255.0
GATEWAY1=172.16.1.1

 

对于 Fedora 和其它 Linux 操作系统而言,这些配置均可以通过 DHCP 自行完成,因此没有必要在 Fedora/Linux 服务哭和客户端上配置静态路由。

网络函数

在 Linux 中,系统通过这些网络函数可执行以下功能:获取接口状态改变信息、设置主机名、寻找网关设备、验证指定设备的启用情况,以及添加静态路由……

Linux 将启用和停用接口的一些重要的常用函数存放在文件中,例如 /etc/sysconfig/network-scripts/network-functions 文件包含最常用的 IPv4 函数。系统通过这些函数可执行以下功能:获取接口状态改变信息、设置主机名、寻找网关设备、验证指定设备的启用情况,以及添加静态路由……

而应用 IPv6 的接口所使用的函数与 IPv4 不同,它的函数存储在 /etc/sysconfig/network-scripts/network-functions-ipv6 文件中。这些函数可用于:配置和删除 IPv6 静态路由、创建和删除通道,添加和删除接口上的 IPv6 地址,以及接口上的 IPv6 地址测试……

通常查看网络函数文件能够帮助你更好的认识各个函数的功能和机制,从而加强配置和管理 Linux 网络环境的技巧和能力。

网络配置

不论是何种操作系统下,要实现计算机之间的通信,在计算机之间建立网络连接都是必要的。而要实现这个目标,只需要操作系统识别出网卡,并为网络接口做出了正确的配置即可。

不论是何种操作系统下,要实现计算机之间的通信,在计算机之间建立网络连接都是必要的。而要实现这个目标,只需要操作系统识别出网卡 (如以太网网卡、ISDN 调制解调器或无线网卡等等),并为网络接口做出了正确的配置即可。

Fedora 自带的“网络配置工具” (system-config-network) 能够用于配置和管理以下网络连接:

  • 以太网连接
  • ISDN 连接
  • 调制解调器连接
  • xDSL 连接
  • 令牌环网络连接
  • CIPE 连接
  • 无线网络连接

除此之外,网络配置工具还可以被用于配置 IPsec 连接、管理 DNS,以及管理 /etc/hosts 配置文件。

使用网络配置工具需要 root 权限。要打这个应用程序,可以通过 GNOME 菜单(系统->管理->网络),或者在命令行下执行 system-config-network 命令。

如果要使用命令行版的网络管理工具,可以以 root 身份执行 system-config-network-cmd 命令。有关该命令的用法和选项可使用 --help 选项查看。

以下是网络配置工具在 Fedora 12 中的截图

网络配置工具

 

Linux 网络配置

配置网络连接

为 Linux 操作系统建立以太网连接的步骤如下:1. 打开“网络配置”工具(系统->管理-> 网络) 2. 选中“设备”面板,点击“新建” 3. 在弹出的新窗口中选择“以太网连接”,点击&a

要建立一个以太网连接,需要一块以太网网卡,一根 CAT-5 网线,以及一个可供连接的以太网网络 (如电信、网通提供的接入网络)。

为 Fedora/Linux 操作系统建立以太网连接的步骤如下:

  1. 打开“网络配置”工具(系统->管理->网络)
  2. 选中“设备”面板,点击“新建”
  3. 在弹出的新窗口中选择“以太网连接”,点击“前进”
  4. 新出现在以太网卡列表中已经有你要添加的以太网卡,直接选中它,如果没有,则选择“其它以太网卡”,点击“前进”
说明:在安装操作系统的过程中,系统会自动检测并完成大多数网卡的配置,完成配置的网卡会出现在上述的设备列表中。对于没有检测到、无法完成配置以及之后添加的网卡,则可以通过选择“其它以太网卡”完成配置。
  1. 如果上一步选择了“其它以太网卡”,则会出现“选择以太网适配器”窗口,从中选择你的以太网卡型号,并将它分配给指定的设备(eth0 表示第一块网卡,eth1 为第二块,依次类推),然后点击“前进”
  2. 出现“配置网络设置”窗口,根据实际情况为网络接口配置好 IP 地址及 DNS,完成后点击“前进”
  3. 出现“创建以太网设置”页面,点击“应用”
  4. 新添加的网络连接会出现在“网络配置”工具的设备列表中,点击菜单“文件->保存”即完成了连接的创建。

完成以太网设备的添加之后,从设备列表中选择某个接口,然后点击“编辑”即可打开“以太网设备”配置窗口。
配置网络连接

提示:为了使用方便,可以在“以太网设备”配置窗口中勾选“当计算机启动时激活设备”,点击“确定”,这样做可以避免每次计算机启动之后都要人为的激活设备。

从设备列表中选中某个网络连接,还可以通过面板上 的“激活”和“取消激活”按钮更改接口状态。如果没有设置“当计算机启动时激活设备”,在使用这个连接之前需要你手动进行激活。

如果你用一个以太网卡关联了多个设备,从第二个设备开始,它们都被称为设备别名 (device aliases)。设备别名的作用是让你使用一个物理设备,创建多个虚拟设置,从而可以为同一个物理设备分配多个 IP 地址,例如,你可以用一块以太网卡,创建一个 eth1 接口和一个 eth1:1 接口。有关更详细的内容,请参考《设备别名》

Linux 网络配置是比较常见的问题,对于创建网络连接的过程中的任何问题,可能留言进行交流。

配置 ISDN 连接

为 Linux 操作系统建立 ISDN 连接的步骤如下:1. 打开“网络配置” 工具(系统->管理->网络) 2. 选中“设备”面板,点击“新建”,3. 在弹出的新窗口中选择“ISDN 连接”,点击“

ISDN 网络连接是指以使用 ISDN 调制解调器,通过一种特殊的电话线连接到网络的方式,ISDN 连接在欧洲比较流行。

为 Fedora/Linux 操作系统建立 ISDN 连接的步骤如下:

  1. 打开“网络配置” 工具(系统->管理->网络)
  2. 选中“设备”面板,点击“新建”
  3. 在弹出的新窗口中选择“ISDN 连接”,点击“前进”
在建立 ISDN 连接时,网络配置工具要求系统中已经安装了 isdn4k-utils 软件包,如果系统中没有安装 isdn4k-utils 软件包,则会弹出提供框,无法继续以下步骤。有关安装软件包的文章可使用本站的搜索功能进行查找。
  1. 出现“选择 ISDN 适配器”窗口,从下拉菜单中选择 ISDN 适配器,配置好资源及 D 通道协议后,点击“前进”
  2. 出现“选择提供商”窗口,如果你的网络提供商 (ISP) 已经位于左侧的预选列表中,直接选中它。没有的话,请输入与你 ISP 账户相关的信息。如果你不清楚,可以打电话问 ISP,填写完成之后,点击“前进”
  3. 出现“IP 设置”窗口 (图1),根据实际情况为网络接口配置好 IP 地址及 DNS,完成后点击“前进” 
  4. 出现“建立拨号连接”页面,点击“应用”
  5. 新添加的网络连接会出现在“网络配置”工具的设备列表中 (图2),点击菜单“文件->保存”即完成了连接的创建。

图1
配置 ISDN 连接 (图1)

图2
配置 ISDN 连接 (图2)

   完成 ISDN 连接的建立之后,从设备列表中选择某个设备,然后点击“编辑”即可打开设置配置窗口。

提示:为了使用方便,可以在设置配置窗口中勾选“当计算机启动 时激活设备”,点击“确定”,这样做可以避免每次计算机启动之后都要人为的激活设备。

从设备列表中选中某个接口,还可以通过面板上 的“激活”和“取消激活”按钮更改接口状态。如果没有设置“当计算机启动时激活设备”,你需要每次在使用这个接口之前手动激活。

配置拨号连接

为 Linux 操作系统建立调制解调器连接的步骤: 1. 打开“网络配置” 工具(系统->管理->网络) 2. 选中“设备”面板,点击“新建” 3. 在弹出的新窗口中选择“调制解调器连接”…

使用“网络配置”工具,也能为 Fedora/Linux 创建经由调制解调器建立的网络连接,这类连接通过电话线连接到网络,并且需要用到服务提供商 (ISP) 提供的拨号帐户。

本节所讲的调制解调器拨号连接并大多数普通家庭所使用 ADSL 拨号连接,有关 ADSL 拨号连接的配置,请参考《Linux 配置 ADSL 拨号连接

为 Fedora/Linux 操作系统建立调制解调器连接的步骤如下:

  1. 打开“网络配置” 工具(系统->管理->网络)
  2. 选中“设备”面板,点击“新建”
  3. 在弹出的新窗口中选择“调制解调器连接”,点击“前进”
说明:如果系统中没有安装相应的软件包,“网络配置”工具会弹出提示窗口,其中包含所需要安装的软件包的名称。需要使用 yum, rpm 或者任何其它方式安装这个软件之后,才能继续创建连接。
  1. 在选择设备窗口中选择要用于建立连接的调制解调器设备,如果没有配置好的设备,系统则会花点时间进行检测并进行配置,如果没有可用的设备,则会提示无可用设备。
说明:在安装操作系统的过程中,系统会自动检测并完成大多数调制解调器的配置,完成配置的设备会出现在上述的设备列表中。
  1. 在“选择调制解调器窗口”中,选择调制解调器设备,并配置其它各选项 (不了解则保持默认值不变)。如果没有使用按键拨号,请取消“使用按钮拨号”(Use touch tone dialing) 选项前的勾选框。完成后点击“前进”
  2. 从列表中选择你的 ISP,如果找不到则需要自行配置 ISP 给你的帐户信息。如果不知如何配置,可能咨询你的 ISP。完成后点击“前进”
  3. 在配置 IP 页面,根据实际情况配置好 IP 信息,完成后点击确定。
  4. 在“创建拨号连接”页面,点击“应用”
  5. 新添加的 网络连接会出现在“网络配置”工具的设备列表中,点击菜单“文件->保存”即完成了连接的创建。

网络连接添加完成之后,连接则会出现在设备列表中。从设备列表中选择某个连接,然后点击“编辑”即可打开连接配置窗口。

提示:为了使用方便,可以在连接配置窗口中勾选“当计算机启动时激活设备”,点击“确定”,这样做可以避免每次计算机启动之后都要人为的激活设备。

从设备列表中选中某 个网络连接,还可以通过面板上 的“激活”和“取消激活”按钮更改接口状态。如果没有设置“当计算机启动时激活设备”,在使用这个连接之前需要你手动进行激活。

配置 ADSL 拨号连接

为 Linux 操作系统建立 xDSL 拨号连接的步骤如下:1. 打开“网络配置” 工具(系统->管理->网络) 2. 选中“设备”面板,点击“新建” 3. 在弹出的新窗口中选择“ xDSL 连接”…

DSL 是数字订阅线路的缩写, xDSL 则表示 ADSL, IDSL 和 SDSL 的简略表示。使用 Fedora/Linux 系统中的“网络配置”工具,可以建立以上各种形式的 DSL 连接,包括大部分的宽带用户所使用 ADSL 拨号连接。

为 Fedora/Linux 操作系统建立 xDSL 拨号连接的步骤如下:

  1. 打开“网络配 置” 工具(系统->管理->网络)
  2. 选中“设备”面板,点击“新建”
  3. 在弹出的新窗口中选择“ xDSL 连接”,点击“前进”
    Linux 配置 ADSL 拨号连接 (图)
说明:如果系统中没 有安装相应的软件包,“网络配置”工具会弹出提示窗口,其中包含所需要安装的软件包的名称。需要使用 yum, rpm 或者任何其它方式安装这个软件之后,才能继续创建连接。
  1. 在“配置 DSL 连接”窗口,选择以太网设备、设置 ISP 提供商 (可为任意名称)、帐户类型选择“普通”、输入“登录名”及“口令”,配置完成后点击“前进”
    Linux 配置 ADSL 拨号连接 (图2)
注意:电信星空极速用户不能直接使用星空极速帐户进行登录,一般情况下需要在帐户前添加 ^^ 符号。即星空极速帐户为 abcabcabc,创建 xDSL 连接时的登录名应该使用 ^^abcabcabc。通常电信用户无法在 Linux 下建立连接都是因为这个原因。以上方法不一定适用于所有星空极速帐户,如有问题可留言。
非电信星空极速用户,可直接使用帐户和密码进行登录
  1. 在“建立 DSL 连接”页面,点击“应用”
  2. 新添加的网络连接会出现在“网络配置”工具的设备列表中,点击菜单“文件->保存”即完成了连接的创建。

网络连接添加完成之后,连接则会出现在设备列表中。从设备列表中选择某个连接,然后点击“编辑”即可打开连接配置窗口。

提示:为了使用方便,可以在连接配置窗口中勾选“当计算机启动时激活设备”,点击“确定”,这样做可以避免每次计算机启动之后都要人为的激活设备。

从设备列表中选中某 个网络连接,还可以通过面板上 的“激活”和“取消激活”按钮更改接口状态。如果没有设置“当计算机启动时激活设备”,在使用这个连接之前需要你手动进行激活。

配置无线网络连接

为 Linux 操作系统建立 xDSL 拨号连接的步骤如下: 1. 打开 “网络配置” 工具(系统->管理->网络) 2. 选中“设备”面板,点击“新建” 3. 在弹出的新窗口中选择“ 无线连接”…

无线网络已经越来越普及了,为了使用方便,笔记本用户都更倾向于使用配置无线网络。在 Fedora/Linux 下的配置无线网络的方式和步骤基本上与以太网连接的配置基本相同,不同点就是无线网络增加了 SSID 和密钥的配置。

为 Fedora/Linux 操作系统建立 xDSL 拨号连接的步骤如下:

  1. 打开 “网络配 置” 工具(系统->管理->网络)
  2. 选中“设备”面板,点击“新建”
  3. 在弹出的新窗口中选择“ 无线连接”,点击“前进”
  4. 新出现在无线网卡列表中选择你的无线网卡,如果没有,则选择“其它无线网卡”,点击“前进”
说明:在安装操作系统的过程中,系统会自动检测并完成大多数无线网卡的配置,完成配置的网卡会出现在上述的设备列表中。对于没有检测到、无法完成配置以及之后添加的无线网卡,则可以通过选择“其它无线网卡”完成配置。
  1. 如果上一步选择了“其它以太网卡”,则会出现“选择以太网适配器”窗口,从中选择你的无线网卡型号,并将它分配给指定的设备(eth0 表示第一块网卡,eth1 为第二块,依次类推),然后点击“前进”
  2. 在“配置无线连接窗口”,根据实现情况完成配置,然后点击“前进”
    Linux 配置无线网络连接 (图)
  3. 在“配置网络设置”窗口,根据实际情况 为网络接口配置好 IP 地址及 DNS,完成后点击“前进”
  4. 出现“创建无线连接”页面,点击“应用”
  5. 新添加的网络连接会出现在“网络配置”工具的设备列表中,点击菜单“文件->保存”即完成了连接的创建。

网络连接添加完成之后,连接则会出现在设备列表中。从设备列表中选择某个连接,然后点击“编辑”即可打开连接配置窗口。

提示:为了使用方便,可以在连接配置窗口中勾选“当计算机启动时激活设备”,点击“确定”,这样做可以避免每次计算机启动之后都要人为的激活设备。

从设备列表中选中某 个网络连接,还可以通过面板上 的“激活”和“取消激活”按钮更改接口状态。如果没有设置“当计算机启动时激活设备”,在使用这个连接之前需要你手动进行激活。

服务访问控制

服务的启动和停止可以通过以下三种应用程序进行配置,除了以上几种工具之外,通过手动编辑 /etc/xinetd.d 目录下的 xinetd 配置文件,或者 /etc/rc.d/ 目录下的符号链接,也能够实现对服务的配置。

当别人能够访问你的系统服务时,对于服务的访问控制是相当重要的。如果你不需要提供某项服务,最好将它关闭,因为你所启用的服务越多,系统中存在的漏洞就可能越多。

对于系统服务的管理可以通过多种方式实现,至于使用哪一种,则需要根据服务的类型、系统配置和你的 Linux 应用水平来决定了。

拒绝别人访问某项服务的最简单方法就是将服务关闭掉。由 xinetd 和 /etc/rc.d/init.d/ 目录结构(常称为 SysV 服务) 管理的服务,它们的启动和停止可以通过以下三种应用程序进行配置:

 

服务配置工具

图形界面的服务管理工具,它包含对每个服务的描述,运行状态和启动状态。用户可以使用这个工具启动、重启动和停止服务。

 

ntsysv

命令行文字界面的服务管理工具,使用它能够配置服务在不同运行级别 (runlevel) 的启动状态。使用这个程序,无法启动、重启动和停止非 xinetd 服务


chkconfig

命令行的服务管理工具,使用它能够启动和停止各个运行级别的服务。与 ntsysv 命令相同,chkconfig 工具无法启动、停止和重启非 xinetd 服务

除了以上几种工具之外,通过手动编辑 /etc/xinetd.d 目录下的 xinetd 配置文件,或者 /etc/rc.d/ 目录下的符号链接,也能够实现对服务的配置。相比之下,使用前三种工具会显得更方便一些。

 

防火墙及 SELinux

管理他人对服务的访问,还可以通过 iptables 配置 IP 防火墙,如果你还是 Linux 新手,这个方法则不太适合你。iptables 的配置十分复杂,最好让经验丰富的 Linux 系统管理员来执行这项工作。

使用 iptables 控制服务访问的优点是灵活性,即使你需要自定义特定主机访问特定服务的解决方案,iptables 也能够轻易地实现你的要求。更多信息请参考《iptables》

另外,如果你在找一个为家用机器设置访问规则的工具,或者你对 Linux 不太熟悉,则可以图形界面的“防火墙配置”工具 (system-config-firewall) 对系统的防火墙策略进行配置。

注意:当你在配置某项新服务时,务必记得 Fedora/Linux 默认同时配置了防火墙和 SELinux。很多时候导致服务无法被访问,最常见的一个问题就是忘记在防火墙或者 SELinux 中添加相应的策略。

运行级别 (Runlevels)

在配置服务访问控制之前,需要先对 Fedora/Linux 的运行级别 (runlevels) 有所了解。在不同的运行级别下,系统所启用的服务也不相同,每个运行级别对应的 /etc/rc.d/rc[x].d 目录下包含了此运行级别下的服务。

在配置服务访问控制之前,需要先对 Fedora/Linux 的运行级别 (runlevels) 有所了解。在不同的运行级别下,系统所启用的服务也不相同,每个运行级别对应的 /etc/rc.d/rc[x].d 目录下包含了此运行级别下的服务。

运行级别

  • 0 - 关机
  • 1 - 单用户模式
  • 2 - 未使用(用户可自定义)
  • 3 - 多用户模式
  • 4 - 未使用(用户可自定义)
  • 5 - 多用户模式(使用基于 X 的图形界面)
  • 6 - 重启

如果使用命令行界面的登录框,说明系统的运行级别为 3,如果使用图形界面的登录窗口,则说明系统的运行级别为 5。

通过编辑 /etc/inittab 文档,可以更改系统的默认运行级别,只需要将指定的运行级别替换下面这一行中的数字 5 (运行级别 5) 即可:

id:5:initdefault:

通过编辑 /etc/inittab 完成对默认运行级别的更改之后,新配置会在重新启动系统时后生效。

有关 Linux 系统启动时各运行级别的服务如何被启动的内容,请参考《Linux 系统启动流程

使用 TCP Wrapper 实现 xinetd 服务访问控制

使用 TCP Wrapper 能够管理对特定服务的访问,任何由 xinetd 管理的网络服务都能够使用 TCP Wrapper 实现对它的访问控制。

使用 TCP Wrapper 能够管理对特定服务的访问,任何由 xinetd 管理的网络服务都能够使用 TCP Wrapper 实现对它的访问控制。

在 Linux 中,xinetd 能够通过 /etc/hosts.allow/etc/hosts.deny 配置文件,实现对用户的服务访问控制。/etc/hosts.allow 与 /etc/hosts.deny 是可自定义的访问控制列表 (ACL),顾名思义,hosts.allow 文件包含了允许访问网络服务的规则,而 hosts.deny 包含了拒绝访问的规则,并且 hosts.allow 文件的优先级高于 hosts.deny 文件。用户可以定义基于 IP 地址主机名匹配字段的访问控制规则。

有关 TCP Wrapper 的详情可参考 hosts_access 的 man 文件(man 5 hosts_access)

xinetd 是 inetd 的安全升级版本。xinetd 一直保持运行状态,监听所有由它管理的服务的端口,当一个连接请求访问由它管理的服务时,xinetd 都会为那个服务启动相应的服务器。

 

xinetd 守护程序具有以下功能:

  • 节省系统资源
  • 提供访问控制和记录
  • 启动指定的服务
  • 添加或拒绝对指定主机的访问
  • 提供定时访问控制
  • 限制入栈连接的速率
  • 限制连接的负载
  • ……

xinetd 的配置文件是 /etc/xinetd.conf,但这个文件中只包含了一些默认配置,和一条包含 /etc/xinetd.d/ 目录的指令。要启用或禁用一个 xinetd 服务,只需编辑 /etc/xinetd.d/ 目录中的配置文件即可。如果配置文件中的 disable 属性被设置为 yes,这个服务则被禁用,设置为 no,则表示启用。你可以手动编辑 xinetd 文件来更改服务的启动状态,也可以使用服务配置工具、ntsysv 和 chkconfig 工具来管理服务的运行状态。

如果想要知道 xinetd 守护进行控制着哪些服务,只需要使用 ls /etc/xinetd.d 命令查看 /etc/xinetd.d/ 目录下的内容即可。

服务配置工具

“服务配置”工具是由 Red Hat 开发的一款图形化的服务配置工具,它能够用于管理 /etc/rc.d/init.d/ 目录下的 SysV 服务,以及 xinetd 服务。使用服务配置工具,能够启动、停止、重启动 SysV 服务,以及重载 xinetd 服务。

“服务配置”工具是由 Red Hat 开发的一款图形化的服务配置工具,它能够用于管理 /etc/rc.d/init.d/ 目录下的 SysV 服务,以及 xinetd 服务。使用服务配置工具,能够启动、停止、重启动 SysV 服务,以及重载 xinetd 服务。

可以使用桌面主菜单“系统->管理->服务”,或者在命令行输入 system-config-services 命令来打开“服务配置工具”。

服务配置工具 [图]

“服务配置”工具中会列出 /etc/rc.d/init.d/ 目录中的服务,以及 xinetd 控制的所有服务。从左侧窗口的列表中点击服务的名称,即可从右则看到服务的状态和描述信息。对于非 xinetd 服务,状态窗口显示服务是否正在运行,对于 xinetd 服务,状态窗口通常显示为“通常在系统引导时启动,在后台运行,并在需要时醒来。”

使用“服务配置”工具启动、停止和重启动某个服务,首先从左侧列表中选中那个服务,然后通过点击上方工具栏相应的动作按钮(开始、停止、重启),或者通过菜单栏“服务”的下拉菜单执行这些操作。对于 xinetd 服务,以上按钮和菜单则是禁用的。

使用工具栏的“定制”按钮,或者“服务->定制”菜单栏,可以实现对服务运行级别的控制。

ntsysv - 服务管理工具

ntsysv 是 Linux 下文字模式的服务管理工具,它为启用和禁用服务提供了简单的文字界面。使用 ntsysv,能够管理及由 xinetd 守护程序所控制的服务,以及 SysV 服务的启动状态。

ntsysv 是 Linux 下文字模式的服务管理工具,它为启用和禁用服务提供了简单的文字界面。使用 ntsysv,能够管理及由 xinetd 守护程序所控制的服务,以及 SysV 服务的启动状态。

默认情况下,ntsysv 工具配置的是系统当前运行级别,要对其它运行级别进行配置,需要使用 --level 选择,例如 ntsysv --level 345 命令对运行级别 3、4 和 5 进行配置。

ntsysv 的界面看起来有点像 Fedora/Linux 在文字模式下的安装程序,使用上下箭头移动光标在列表中的位置,空格用于更改当前选中服务的状态(启动/禁用),方括号有 * 的服务表示开机时自动启动,使用 F1 按可以看到有关服务的描述信息

注意:F1 查看帮助信息功能仅在控制台终端下有效,在 Shell 中使用 F1,则会打开 Shell 的帮助文档

ntsysv [图]

ntsysv 所做的更改会立即对 xinetd 服务生效,其它服务的则不会产即生效果。如果你希望马上更改某个服务的运行状态,可以使用 service <daemon> <action> 命令,其中 <daemon> 为服务的名称,如 httpd,<action> 则为希望执行的操作,如 start/stop/restart (启动/停止/重启)

chkconfig 命令用法

chkconfig 是 Linux 中基于命令行的服务管理工具,chkconfig 可以用于启用和禁用系统服务。执行 chkconfig --list 命令能够得到所有系统服务的列表,以及它们在每个运行级别的启动状态(启用/关闭)。输出结果中不包含 xinetd 服务。

chkconfig 是 Linux 中基于命令行的服务管理工具,chkconfig 可以用于启用和禁用系统服务。执行 chkconfig --list 命令能够得到所有系统服务的列表,以及它们在每个运行级别的启动状态(启用/关闭)。输出结果中不包含 xinetd 服务。

虽然在列表中不会显示 xinetd 服务,但使用 chkconfig --list <xinetd_service> 命令,则可能查看 xinetd 服务的运行状态

~]# chkconfig --list rsync
rsync 禁用

输出结果显示 rsync 服务为停止,如果 rsync 服务处于运行状态,输出结果则显示为 rsync 启用

如果在 chkconfig --list 命令后面添加 sysv 服务(位于/etc/rc.d/ 目录下的服务)名称,则会显示服务在所有运行级别下的启动状态,而不是像 xinetd 服务那样显示当前运行状态

~]# chkconfig --list httpd
httpd 0:禁用 1:禁用 2:禁用 3:启用 4:禁用 5:启用 6:禁用

除了查看服务状态信息外,chkconfig 命令还能够配置 sysv 服务在不同运行级别下的启动状态。如希望在 3, 4, 5这三个运行级别上禁用 nscd 服务,则可以执行以下命令

~]# chkconfig --level 345 nscd off
说明:chkconfig 命令管理 xinetd 服务的运行状态,因此执行类似 chkconfig rsync on 命令时会立即启动服务。对于 SysV 服务,chkconfig 命令管理它们的启动状态,因此 chkconfig --level 345 nscd off 命令不会自动停止 nscd 服务,而需要等待系统重启后才生效。
希望马上启用或停止某个服务,可以使用 service <service> <action> 命令,其中 <service> 为服务名称,<action> 对操作动作,一般可以为 start (启动)、stop (停止)、restart (重启)。