现在的位置: 首页 > 综合 > 正文

Windows 到 Linux 之旅

2013年10月01日 ⁄ 综合 ⁄ 共 19994字 ⁄ 字号 评论关闭
标题:Windows 到 Linux 之旅
 Windows 到 Linux 之旅:第 1 部分. Linux 思想

IBM 电子商务架构师 Chris Walden 将通过他在 developerWorks 上发表的九篇系列文章来指导您如何在 Linux 环境中运用您的 Windows 操作技巧。我们首先来认识 Linux 和 Windows 之间的不同之处与相似之处,并学会不要总是通过重新引导系统来解决问题。 

您已经开始从 Windows 转向 Linux,这可能是您自己的决定,也可能是“不得已而为之”。无论出于何种原因,您原来非常熟悉的工作方式和工具可能都将变得完全不同。不但如此,您可能还需要培训别人如何去轻松地管理 Linux。管理绝不是循规蹈矩,成功地管理计算环境是一项创造性的工作。实现这一转变就如同一个熟练的油画家转而去从事雕塑一样。

开放的标准使得 Linux 也要遵循 Windows 管理的基本模式,这对用户来说的确是好消息。虽然两者的一些术语并不相同,工具也有一些区别,但是根本的原理是一样的。更好的消息是,当您习惯 Linux 的工作方式后,您将具有更大的工具集来控制和维护您的环境。Linux 的强大之处在于它的稳定性和灵活性。一旦您领悟了 Linux 的思想,您将可以完成更多的任务,使更多的任务自动化,更多地以远程方式完成任务。

Linux 与 Windows 有一些类似
在讨论 Linux 与 Windows 有多大不同之前,让我们先来看看这两者有哪些相似之处。

用户和组
Linux 和 Windows 都是多用户操作系统。都可以由许多不同的用户来使用,为每个用户提供单独的环境和资源。基于用户身份来控制安全性。都可以以组成员的方式来控制资源的访问权限,这样在用户数目较大时可以不必为每一个帐号设置权限。

用户和组可以集中管理,让多个服务器共享相同的用户和身份验证数据。

文件系统
Linux 和 Windows 都支持多种文件系统。文件资源可以通过 NetBIOS、FTP 或者其他协议与其他客户机共享。可以很灵活地对各个独立的文件系统进行组织,由管理员来决定它们在何处可以以何种方式被访问。

端口和设备
两种操作系统都支持各种物理设备端口,比如并口、串口和 USB 接口。支持各种控制器,比如 IDE 和 SCSI 控制器。Linux 还支持很多“刚刚上市”的标准硬件。

网络
Linux 和 Windows 都支持多种网络协议,比如 TCP/IP、NetBIOS 和 IPX。都支持多种类型的网络适配器。都具备通过网络共享资源的能力,比如共享文件和打印。都可以提供网络服务能力,比如 DHCP 和 DNS。

服务
Linux 和 Windows 都提供服务。所谓服务,指的是那些在后台运行的应用程序,可以为系统和远程调用该服务的计算机提供一些功能。在系统引导的时候可以单独控制并自动启动这些程序。(注意:Linux 中沿用了 Unix 的习惯,称这种应用程序为 daemon,)

Linux 与 Windows 的不同
虽然有一些类似之处 ,但 Windows 和 Linux 的工作方式还是存在一些根本的区别。这些区别只有在您对两者都很熟悉以后才能体会到,但它们却是 Linux 思想的核心。

Linux 的应用目标是网络而不是打印
Windows 最初出现的时候,这个世界还是一个纸张的世界。Windows 的伟大成就之一在于您的工作成果可以方便地看到并打印出来。这样一个开端影响了 Windows 的后期发展。

同样,Linux 也受到了其起源的影响。Linux 的设计定位于网络操作系统。它的设计灵感来自于 Unix 操作系统,因此它的命令的设计比较简单,或者说是比较简洁。由于纯文本可以非常好地跨网络工作,所以 Linux 配置文件和数据都以文本为基础。

对那些熟悉图形环境的人来说,Linux 服务器初看可能比较原始。但是 Linux 开发更多关注的是它的内在功能而不是表面上的东西。即使是在纯文本的环境中,Linux 同样拥有非常先进的网络、脚本和安全能力。执行一些任务所需的某些表面上看起来比较奇怪的步骤是令人费解的,除非您认识到 Linux 是期望在网络上与其他 Linux 系统协同执行这些任务。Linux 的自动执行能力也很强,只需要设计批处理文件就可以让系统自动完成非常详细的任务。Linux 的这种能力来自于其基于文本的本质。

可选的 GUI
Linux 有图形组件。Linux 支持高端的图形适配器和显示器,完全胜任图形相关的工作。现在,许多数字效果艺术家在 Linux 工作站上来进行他们的设计工作,而以前这些工作需要使用 IRIX 系统来完成。但是,图形环境并没有集成到 Linux 中,而是运行于系统之上的单独一层。这意味着您可以只运行 GUI,或者在需要时才运行 GUI。如果您的系统主要任务是提供 Web 应用,那么您可以停掉图形界面,而将其所用的内存和 CPU 资源用于您的服务。如果您需要在 GUI 环境下做一些工作,可以再打开它,工作完成后再将其关闭。

Linux 有图形化的管理工具,以及日常办公的工具,比如电子邮件、网络浏览器和文档处理工具等。不过,在 Linux 中,图形化的管理工具通常是控制台 (命令行) 工具的扩展。也就是说,用图形化工具能完成的所有工作,用控制台命令同样可以完成。同样,使用图形化工具并不妨碍您对配置文件进行手工修改。其实际意义可能并不是特别显而易见,但是,如果在图形化管理工具中所做的任何工作都可以以命令行的方式完成,这就表示那些工作也可以由一个脚本来实现。脚本化的命令可以成为自动执行的任务。Linux 同时支持这两种方式,并不要求您只用文本或者只用 GUI。您可以根据您的需要选择最好的方法。

Linux 中的配置文件是人类可读的文本文件,这与过去的 Windows 中的 INI 文件类似,但与 Windows 的注册表机制在思路上有本质的区别。每一个应用程序都有其自己的配置文件,而且通常不与其他的配置文件放在一起。不过,大部分的配置文件都存放于一个目录树 (/etc) 下的单个地方,所以看起来它们在逻辑上是在一起。文本文件的配置方式使得不通过特殊的系统工具就可以完成配置文件的备份、检查和编辑工作。

文件名扩展
Linux 不使用文件名扩展来识别文件的类型。相反,Linux 根据文件的头内容来识别其类型。为了提高人类可读性您仍可以使用文件名扩展,但这对 Linux 系统来说没有任何作用。不过,有一些应用程序,比如 Web 服务器,可能使用命名约定来识别文件类型,但这只是特定的应用程序的要求而不是 Linux 系统本身的要求。

Linux 通过文件访问权限来判断文件是否为可执行文件。任何一个文件都可以赋予可执行权限,这样程序和脚本的创建者或管理员可以将它们识别为可执行文件。这样做有利于安全。保存到系统上的可执行的文件不能自动执行,这样就可以防止许多脚本病毒。

什么是内核?
Linux 实际上只是内核;它实现了多任务和多用户功能,管理硬件,分配内存,激活应用程序的运行。

对初学者来说,最重要的是要明白奇数的内核版本(比如 2.3、2.5、2.7)是实验用的、正在开发的内核。 稳定的、正式发行的内核版本号是偶数的(比如 2.4、2.6、2.8)。

重新引导是最后的手段
如果您使用 Windows 已经很长时间了,您可能已经习惯出于各种原因(从软件安装到纠正服务故障)而重新引导系统。在 Linux 思想中您的这一习惯需要改变。Linux 在本质上更遵循“牛顿运动定律”。一旦开始运行,它将保持运行状态,直到受到外来因素的影响,比如硬件的故障。实际上,Linux 系统的设计使得应用程序不会导致内核的崩溃,因此不必经常重新引导(与 Windows 系统的设计相对而言)。所以除了 Linux 内核之外,其他软件的安装、启动、停止和重新配置都不用重新引导系统。

如果您确实重新引导了 Linux 系统,问题很可能得不到解决,而且还会使问题更加恶化。学习并掌握 Linux 服务和运行级别是成功解决问题的关键。学习 Linux 最困难的就是克服重新引导系统的习惯。

另外,您可以远程地完成 Linux 中的很多工作。只要有一些基本的网络服务在运行,您就可以进入到那个系统。而且,如果系统中一个特定的服务出现了问题,您可以在进行故障诊断的同时让其他服务继续运行。当您在一个系统上同时运行多个服务的时候,这种管理方式非常重要。

命令区分大小写
所有的 Linux 命令和选项都区分大小写。例如, -R 与 -r 不同,会去做不同的事情。控制台命令几乎都是小写的。我们将在“ 第 2 部分. 控制台速成班”中对命令进行更详细的介绍。

我应如何定位 Linux?
从管理 Windows 到管理 Linux 的转变是很麻烦的。不过,作为一个 Windows 管理员,您有自己的优势。您对计算的工作方式的理解依然可用。能否成为一个成功的 Linux 管理员将取决于您对两者区别的认识以及操作习惯的调整。

Linux 相对于 Windows 的许多变化都是有益的。空闲的 GUI 的开销被归还给服务。任务可以脚本化并可以自动执行。配置文件基于文本并且人类可读。在大多数情况下不必重新引导系统。实际上,您应该抑制重新引导系统的冲动。

参考资料

* From DOS/Windows to Linux HOWTO 为那些具有 DOS 或 Windows 背景的人提供了一些快速上手的资料。

* 要开始在 Linux 上使用 IBM 的软件产品, 为您的 Linux 应用开发加油提速 将为您提供最好的参考资料。您可以找到关于 DB2、Lotus Domino、WebSphere Application Server、WebSphere Studio 等多种应用软件的安装提示和参考资料。您还可以登录获得免费的 Linux Software Evaluation Kit,里面有试用软件和培训资料。
* 到 developerWorks 的 从这里开始学习 Linux 页面继续学习 Linux 基本概念。

* “ Linux 用户技术 FAQ” (developerWorks, 2001 年 7 月) 也可以帮助您顺利地从 Windows 过渡到 Linux。

* Linux Documentation Project 是一个 Linux 文档仓库,它所收集的文档包括单独的软件、HOWTO 文档、FAQ,等等。

* Linux Online! 提供了无偏见的 Linux 新闻和信息。

* O'Reilly Network 是 Linux 技术书籍的极好资源。

* Linux at IBM 站点提供了软件、链接、端到端的 Linux 解决方案、 用户参考、IBM Alliances/Linux 产品伙伴和 IBM 开源产品。 特别的,请参阅 Linux at IBM 页面上的 Learning Linux 和 Linux Education 资料。
* IBM 提供 Linux 专业认证 服务以及 UNIX 和 Linux 硬件和各种软件系统 (包括 IBM 产品) 的 专业认证。

* IBM Partnerworld 为 IBM 的商务伙伴提供市场和销售支持。

* Linux lens 是 IBM 商务伙伴快速接触 Linux 的门户。

* 在 developerWorks Linux 专区可以找到更多 为 Linux 开发者准备的参考资料。

Linux 控制台快速指南

IBM 电子商务架构师 Chris Walden 将通过他在 developerWorks 上发表的九篇系列文章来指导您如何在 Linux 环境中运用您的 Windows 操作技巧。本部分将介绍各种不同的 shell 和一些最基本的 Linux 命令。

Linux 中的所有管理任务都可以在控制台中完成。许多情况下,使用控制台比使用图形化的程序更快捷,而且还可能实现额外的功能。不仅如此,所有的控制台任务都可以写到脚本中,这样就可以自动执行。为了真正地驾驭您的 Linux 环境,您将希望掌握如何在控制台中工作。如果您曾经使用过 DOS/Windows,本文将引导您开始使用 Linux 控制台。

进入控制台
如果您的系统引导进入文本模式(为了降低服务开销,服务器通常是这样配置的),那么您在以文本形式登录后就已经在控制台中了。在典型的 Linux 系统中,通过组合键 Ctrl + Alt + (F1 - F6) 您可以切换到另外的控制台。每一个控制台是系统中一个完全独立的会话,不同的用户可以同时使用。

这一多控制台的特点与 Windows 中的多桌面不同。在 Linux 中,每一个控制台可以分别由完全不同的用户来控制。例如,您可能在控制台 1 中以 root 身份登录,而在控制台 2 中以 joeuser 身份登录。两个控制台在各自的用户空间中运行不同的程序。与此类似,不同的用户可以远程登录到同一个 Windows 系统中。就这一点来说,Linux 更像是主机而不是简单的服务器或工作站。

如果您是在图形模式下,那么您可以打开一个 终端 (terminal) 以进入控制台窗口。通常在桌面的任务条上会有终端的按钮。您也可以从上下文菜单(在桌面上单击右键)打开终端 。

命令
在控制台中可以使用的命令很多。其中有一些实际上只在编写脚本时才会用到。这里介绍一些您最可能用到的命令。不要忘记,所有的命令和选项都区分大小写。-R 与 -r 不同,会去执行不同的操作。控制台命令几乎全都是小写的。

cd
使用我们所熟悉的 cd 命令可以在目录间切换。一定注意的是在 Linux 中用的是正斜杠 (/),而不是您所熟悉的反斜杠 ()。反斜杠也用到了,但只是用来说明命令需要换行继续,这样可以提高比较长的命令的可读性。

ls
ls 命令用于列出一个目录下的所有文件。可以使用许多不同的开关更改列表的表示形式:

列出文件
ls -l 以长格式列出文件,包括文件大小、日期和时间、属性
ls -t 对文件以时间排序
ls -S 对文件以大小排序
ls -r 与一个排序开关组合起来使用,逆序排列。ls -t 将最新的文件显示在列表的顶部。ls -t将最新的文件显示在底部。
ls -h 易读格式。使用 k、M、G 等来标识文件的大小,而不是以字节为单位。
ls -a 显示目录中所有的文件,包括隐藏文件

cp
使用 cp 命令来复制文件。这个命令与 DOS 下的 copy 命令基本一样。基本的开关如下:

复制文件
cp -R 递归地复制文件;当需要复制整个目录时会用到
cp -f 强制复制并覆盖已有的文件,不询问用户
cp -l 链接文件,而不是复制;见下面的说明

使用复制命令创建链接
用 cp 命令可以创建指向一个文件或者整个文件结构的硬链接。使用 -l 开关来指明操作是链接复制。所有的目录仍作为目录创建,但所有的文件会被设置为硬链接。

cp -lR /data/accounting/payroll /data/management/hr

上面的命令将把整个目录结构及其下面的文件从 /data/accounting/payroll 复制到 /data/management/hr/payroll。目录结构下的所有文件将被设置为硬链接。这样使一个文件在同一个文件系统中可以具备不同的视图。这也是有用的安全技术,使得在不同的目录下对同一文件有不同的访问权限。

mv
使用 mv 命令来移动和重命名文件。这个命令的工作方式基本上与 DOS 中的 move 命令一样,不过它可以移动整个目录结构及所有文件。

cat
使用 cat 命令来查看文件的内容。它相当于 DOS 中的 type 命令。它将把文件的内容转储到另一个文件、屏幕或者其他命令。cat 是concatenate 的简写,还可以将一系列的文件合并为一个大文件。

more
使用命令 more 可以以分页的方式查看文件。它基本上与 DOS 中的 more 命令相同。

less
less 命令也是用来查看文件,但是它支持上下滚屏以及在文档中进行文本搜索。

vi
有一些人可能会说 vi 表示“virtually impossible”。它是 Unix 中的一个历史悠久的文本编辑器。vi 并不真正直观,但是现在几乎所有的类 Unix 环境中都有 vi。对于 Linux 中安装的版本有一个内置的教程,一旦您熟悉了 vi,只需几次击键就可以完成不可思议的任务。说实话,没有任何编辑器能够取代 vi 来编辑密码和配置文件。

man
使用 man 命令来查看命令的文档。man 是 manual 的缩写。几乎每一个命令都有相应的文档。要深入了解 man,请输入以下命令:

man man

info
info 命令与 man 命令类似,不过它提供了超链接文本,可以更方便地浏览文档。

哪个 shell?
DOS/Windows 与 Linux 的最重要的区别之一是 Linux 的命令 shell 是与操作系统相分离的一层。不同的 shell 环境影响您具备不同的功能,比如可编辑的命令行和历史命令回查等。shell 还决定了脚本中函数的语法。在 DOS/Windows 中,编写脚本程序只有一种情况,那就是使用效率低下的 .BAT 文件。它的确可以完成很多功能,但除了完成那些基本的任务,复杂些的任务就需要脚本编写者具有极强的创造性。在 Linux 中,脚本中可以有循环,不仅可以执行基本的条件语句,很多在编程语言中才有的功能它都具备。如果您擅长编写 .BAT 文件,那么 shell 脚本更会使您大展才华。

默认的 shell 是每个用户帐号的一个参数。Linux 中典型的默认 shell 是 /bin/bash,不过也可以用其他的 shell。每个 shell 的 man 文档实际上都非常好,都对各种 shell 及其使用进行了详细的说明。仅仅阅读下面的解释是不够的,应该从下面列出的 shell 中选择一个,去查看它的 man 文档。

bash
bash shell 是 Bourne shell 的一个免费版本,它是最早的 Unix shell,包括许多附加的特点。Bash 有可编辑的命令行,可以回查历史命令,支持 tab 键补齐以使用户避免输入长的文件名。

csh
C shell 使用的是“类C”语法,借鉴了 Bourne shell 的许多特点,只是内部 shell 命令集有所不同。

ksh
Korn shell 的语法与 Bourne shell 相同,同时具备了 C shell 的易用特点。许多安装脚本都使用 ksh,即使您不把它作为您的主 shell,您也应该在系统中安装它。

tcsh
TC shell 是 C shell 的一个增强版本,与 C shell 完全兼容。

zsh
Z shell 是 Korn shell 的一个增强版本,具备 bash shell 的许多特色。

Shell 规则
您只需在控制台中执行相应的命令就可以随时切换 shell。只要在文件顶部放置一个井号 (#!) 指向需要的 shell,脚本就可以指定想要运行的 shell。当脚本运行的时候,不管用户所处的 shell 环境是什么,它都会在正确的 shell 环境中运行。下面例子中的这行代码指出脚本需要在 C shell 下运行:

#!/bin/csh

给我做链接,这样就更安全!
Linux 文件系统最重要的特点之一是它的文件链接。链接是对文件的引用,这样您可以让文件在文件系统中多处被看到。不过,在 Linux 中,链接可以如同原始文件一样来对待。链接可以与普通的文件一样被执行、编辑和访问。对系统中的其他应用程序而言,链接就是它所对应的原始文件。当您通过链接对文件进行编辑时,您编辑的实际上是原始文件。链接不是副本。有两种类型的链接:硬链接和符号链接。

硬链接 只能引用同一文件系统中的文件。它引用的是文件在文件系统中的物理索引(也称为 inode)。当您移动或删除原始文件时,硬链接不会被破坏,因为它所引用的是文件的物理数据而不是文件在文件结构中的位置。硬链接的文件不需要用户有访问原始文件的权限,也不会显示原始文件的位置,这样有助于文件的安全。如果您删除的文件有相应的硬链接,那么这个文件依然会保留,直到所有对它的引用都被删除。

符号链接 是一个指针,指向文件在文件系统中的位置。符号链接可以跨文件系统,甚至可以指向远程文件系统中的文件。符号链接只是指明了原始文件的位置,用户需要对原始文件的位置有访问权限才可以使用链接。如果原始文件被删除,所有指向它的符号链接也就都被破坏了。它们会指向文件系统中并不存在的一个位置。

两种链接都可以通过命令 ln <source> <target> 来创建。ln 默认创建的是硬链接。使用 -s 开关可以创建符号链接。

# Create a hard link from MyFile in the current
# directory to /YourDir/MyFile
ln MyFile /YourDir

# Create a symbolic (soft) link from MyFile in
# the current directory to /YourDir/YourFile
ln -s MyFile /YourDir/Yourfile

在上面的例子中,MyFile、/YourDir/MyFile 和 /YourDir/Yourfile 会被看成是同一个文件。

走出您的 shell
对 Linux 管理来说,必须学习在控制台环境下工作。虽然有一些工具可以让您避免使用控制台,但是您会受到那些工具的很多限制。进入控制台很简单,使用 man 和 info 命令访问命令文档也很方便。

一个基于浏览器的管理工具

IBM 电子商务架构师 Chris Walden 将通过他在 developerWorks 上发表的九篇系列文章来指导您如何在 Linux 环境中运用您的 Windows 操作技巧。本部分介绍了 Webmin 的安装和使用,它是一个基于浏览器的管理工具,可以应用于 Linux 和其他一些平台,提供了可以完成很多管理和操作任务的图形化界面。 

从 Windows 环境的管理转到 Linux 环境的管理时所面临的挑战之一是,您需要去学习利用新的工具。作为一个管理员,您希望理解操作系统的细节以发挥它的最大功效。但是,当您还处在学习阶段时,就需要去完成具体的工作。

为加速您驾驭 Linux 的进度,我们将安装一个叫做 Webmin 的程序。如 Webmin.com(参阅 参考资料 中的链接)所言:“Webmin 是一个基于 Web 的 Unix 系统管理界面。借助任何支持表格和表单的浏览器(和 File Manager 模块所需要的 Java),您就可以设置用户帐号、Apache、DNS、文件共享,等等。Webmin 包括一个简单的 Web 服务器和许多 CGI 程序,这些程序可以直接修改系统文件,比如 /etc/inetd.conf 和 /etc/passwd。Web 服务器和所有的 CGI 程序都是用 Perl 5 编写的,没有使用任何非标准 Perl 模块。”

Webmin 事实上可以运行于所有的类 Unix 平台,包括 Linux、AIX、HPUX、Solaris、OS X,等等。它具有一个 Web 前端,可以完成 Linux 中的诸多管理任务。它可以以本地方式或者远程方式运行于任意图形化浏览器中。Webmin 使用 SSL 来保证安全,防止侦听。当您学习 Linux 管理时,Webmin 将为您节省很多时间。Webmin 还可以帮您完成那些还不能自动执行的繁琐的任务。

Webmin 是可扩展的。作者提供了一个开发向导,而且已经出现了一些第三方的模块。您也可以设计您自己的模块,以使 Webmin 永远可以按您的需要进行调整。

安装 Webmin
使用 Webmin 的第一个步骤是安装。Webmin 在少数的发行版本中已经附带,不过从 Webmin 网站下载也很简单 (参阅 参考资料 中的链接)。

写作本文时,Webmin 的最新版本是 1.90 。根据您所使用的 Linux 发行版本,正确的安装方法不尽相同。如果您使用的是 Red Hat Linux 或者是 UnitedLinux 发行版本的一种(SuSE、Turbo、Connectiva 或者 Caldear),那么最简单的是使用 RPM 安装方法。如果您用的是其他的发行版本,那么您需要去阅读您的发行版本的文档和 Webmin 安装说明来选择最好的安装方式。以下我们假定是以 RPM 方式进行安装。

首先检查您的系统上是否已经安装了 Webmin。在文本终端中输入:

rpm -q webmin

如果您的系统已经安装了 Webmin,您会得到它的版本号:

Webmin-1.090-1

否则您会看到没有安装 Webmin 的提示:

package webmin is not installed

安装软件包
在 Linux 上大多数软件包的安装都是像本文中安装 Webmin 这样简单。要了解更多有关软件包的安装和缷载——甚至有关自源代码编译应用程序——的信息,请参阅本系列文章的 第 9 部分。

即便已经安装了 Webmin,它的版本也可能会低于当前可用的最新版本。在这种情况下,您可以使用下面的命令来对它进行升级或者重新安装:

rpm -Uvh webmin-1.090-1.noarch.rpm

在进行冗长的更新时会输出一行带有 # 标记的进度条。

RPM noarch
您会注意到 Webmin 被作为“noarch”软件包列出来。由于 RPM 是二进制文件,它们通常为特定的体系结构进行编译,比如 i386 或者 ppc。在错误的体系结构上安装软件包会导致错误的结果。因为 Webmin 是用 Perl 编写的,而 Perl 是体系结构无关的,所以 Webmin 被标识为“noarch”。

当 Webmin 安装后,默认是启用的。但是这样安装并没有启用 SSL。SSL 需要安装一个称为 Net::SSLeay 的 Perl 模块。如果不装这个模块,Webmin 只有从本地控制台运行时才是安全的。在本文的最后将简要介绍 Webmin 的安全使用。

Practical Extraction and Reporting Language (Perl)
Perl 是 1987 年出现的一种多平台的解释性编程语言。它在多种平台都可以使用,包括 Windows,具有成熟完善的脚本功能。Perl 的强项在于文本处理,广泛应用于 Web CGI 编程。Perl 可以通过添加模块来进行扩展,这些模块实际上是函数库,也是用 Perl 编写的。大多数模块,事实上包括 Perl 本身,都可以遵循 The Artistic License 这一许可而自由获得(参阅 参考资料 中的链接)。

使用 Webmin
使用您喜欢的 Web 浏览器来访问 Webmin。其中文件浏览器和 telnet/ssh 客户机这两个工具是基于 applet 的,需要在您的浏览器上安装有 Java Runtime Environment。这两个工具会带来便利,但并不是不可或缺的。其余所有模块都没有特殊的要求。

将您的浏览器指向系统的 10000 端口,以开始使用 Webmin。在本地系统的浏览器中,您应该输入 http://localhost.localdomain:10000/。首先您看到的将是一个登录界面。

Webmin 的用户与操作系统的用户是分开的。这就使得您不通过常规的 Unix 验证机制就可以通过 Webmin 来设置进行管理的用户。不过,如果您想让某些用户可以使用 Webmin,您可以将他们加入 Webmin 用户列表,让 Webmin 通过 Unix 工具来对其进行验证,而不再使用 Wemin 的内部验证机制。可以控制每个用户对 Webmin 模块的访问。例如,Helpdesk 职员只可以使用密码功能,而其他职员可以访问所有的模块。

安装完成后,root 用户会被自动创建,密码为系统的 root 密码。Webmin 根据登录记录日志,这样,在一个多管理员的环境中,可能更应该创建一个具有 root 用户权限的管理员组,并为使用此系统的每个人分别去创建用户。您第一次必须以 root 身份登录。

root 用户
在 Linux 中,首要的管理员用户称为 root。root 用户对整个系统有完全的控制权。不可以滥用 root。

Webmin 窗体
您看到的第一个屏幕将是 Webmin Configuration Section。在这里您可以配置 Webmin 用户、配置模块和查看活动日志。顶部的图标可以在 Webmin 中不同的模块窗体间进行切换。所有的模块都是可配置的,您可以根据自己的需要对它们进行重组。

[myimg]upload/webminwebmin2.png[/myimg]

System 窗体可以进行操作系统的总体配置。在这里,您可以配置文件系统、用户、组和系统通常的引导行为。您可以控制系统中运行的服务,通过选择 Bootup 和 Shutdown 图标来决定它们是否自动启动。不过,对那些服务的具体配置是由 Servers 窗体完成的。尤其要注意“Software Package”工具,它可以方便地查看您系统中已经安装的软件包,以及到发行版本升级库和 rpmfind.net 的接口,rpmfind.net 是 Internet 上的一个公用的 RPM 库(参阅 参考资料 中的链接)。

Servers 窗体可以对您可能会在系统中运行的各个服务进行配置。BIND 和 DHCP 工具非常便捷。同时 Samba 工具也很好用,可以为 Windows 和其他客户机配置文件和打印机的共享。SMTP 服务器 Sendmail 以其极复杂的配置文件而出名。Webmin Sendmail 工具同样为您解决了这一问题。

图 2. Webmin 服务器屏幕
[myimg]upload/webminservers2.png[/myimg]

Networking 窗体所提供的工具可以用来配置网络硬件和进行一些复杂的网络控制,比如防火墙。所有的工具都要去修改标准的配置文件,因此您在 Webmin 中所做的任何工作都可以由相对应的控制台工具来完成。

Hardware 窗体用于配置物理设备,主要是打印机和存储设备。特别值得关注的是逻辑卷管理 (Logical Volume Management,LVM) 工具,它可以帮您可视化地管理您的 Linux 系统上的动态卷。

Cluster 窗体中的工具用于管理集群系统。 集群 在这里指的是其配置需要同步的一组相关系统。系统可以在进行系统故障检测时同步用户、组、软件包等配置。这些工具可以帮助您构建热错误恢复系统和其他需要同步的系统。集群是一个高级的主题,可能需要安装一些您的 Linux 发行版本没有自带的软件包。

Others 窗体中有各种各样的工具,您可能会发现它们很有用。“SSH/Telnet Login”和“File Manager”工具需要 applet 支持,只有在您的浏览器上安装了 JRE 以后才可以运行。“Perl Modules”工具可以使您紧跟 Perl 模块的发展,它可以直接连接到 Internet 上的 CPAN。“File Manager”工具为服务器的文件系统提供了一个像浏览器一样的视图,如果您是在远程工作,那么不通过您的工作站的内存就可以对文件进行移动和复制。 “SSH/Telnet Login” 工具是一个远程 shell 控制台,使您可以通过浏览器进入控制台。

结束语
Webmin 是一个用 Perl 编写的基于浏览器的管理应用程序。Webmin 是可扩展的,除了用于 Linux 之外,还可以用于其他类 Unix 操作系统。安装完成后,可以在本地或者远程浏览器通过一个特定的端口,通常是 10000,来进入 Webmin。它具有可以指向和点击的界面,可以完成各种 Linux 管理任务,包括用户管理、网络防火墙和网络设备的配置。

Webmin 安装和使用都是免费的,它是一个很好的管理 Linux 环境的工具,如果您以前用的是 Windows 的图形化管理工具。Webmin 工具是基于控制台的工具的前端,因此使用这两种工具进行配置效果是一致的,它们都可以可靠地完成管理任务。

IBM 电子商务架构师 Chris Walden 将通过他在 developerWorks 上发表的九篇系列文章来指导您如何在 Linux 环境中运用您的 Windows 操作技巧。在本部分,我们使用 Webmin 界面和命令行添加、删除用户和组,并介绍了密码和组文件的映像。

Linux 中的用户管理与 Windows 中的用户管理很相似,但又很不相同。两个系统都是多用户系统,基于用户身份来控制他们对资源的访问。两个操作系统都允许将用户分组管理以简化访问控制,以避免为众多用户分别设置权限。不过,相同之处也仅此而已。

超级用户
在 Linux 中,超级用户称为 root。root 用户可以控制所有的程序,访问所有文件,使用系统上的所有功能。对 root 用户来说没有不可以做的事情。就管理的角度而言,root 的权限是至高无上的。所以,root 帐号一定要通过安全的密码保护起来,这一点非常重要。您不应该使用 root 身份来处理日常的事务。

其他用户也可以被赋予 root 特权,但一定要谨慎行事。通常您可以配置一些特定的程序由某些用户以 root 身份去运行,而不必赋予他们 root 权限。

创建新用户
可以通过命令行或者 Webmin 等工具来创建新用户。

添加用户的命令是 useradd。例如,从控制台中创建一个新用户:

useradd -c "normal user" -d /home/userid -g users
-G webadm,helpdesk -s /bin/bash userid

这个命令创建了一个名为“userid”(命令的最后一个参数)的新用户。“normal user”是对这个用户的注释。userid 的主目录将是“/home/userid”。userid 的主组将是 users,但他也被加入到“webadm”和“helpdesk”这两个组。userid 将使用“/bin/bash”shell 作为他的常规控制台环境。

使用 Webmin 创建新用户简单而且直观。使用您喜欢的浏览器登录到 Webmin,切换到 System 窗体。选择“Users and Groups”工具,然后点击 Create a new user。

图 1. Webmin 的 Create User 屏幕
[myimg]upload/webmincreateuser2.png[/myimg]

填写好用户的详细信息,然后点击 Create。用户创建完成。

用 GUI 工具添加用户在“Basic tasks for new Linux developers”一文中也讨论了。

修改密码
可以从控制台使用 passwd 命令来修改用户的密码:

passwd userid

只有 root 用户可以用 passwd 修改其他用户的密码。输入完命令后,系统将提示您输入并确认您要设置的密码。如果两次输入一致,用户的标识就会更新,密码修改成功。从控制台输入 passwd,用户可以修改自己的密码;在这种情况下,系统会向用户询问原来的密码,验证通过后才可以输入新密码。

大多数的 Linux 发行版本安装时都会启用 password cracker 模块,用于修改密码。这个模块将检查密码是否遵循了良好的密码设置习惯。如果用户使用了不安全的密码,它将自动警告用户。您可以将系统配置为要求用户必须使用安全的密码。root 在设置不安全的密码时也会被警告,但是仍然可以设置成功。

在 Webmin 中,可以使用 System 窗体中的“Change Passwords”模块来修改密码。在列表中选择一个用户,然后在空白处输入新密码。

删除用户
可以从控制台使用 userdel 命令来删除用户。

userdel -r userid

使用可选的 -r 开关可以将用户的主目录及所有相关信息全部删除。如果想要保留用户主目录,那么不要使用 -r 开关。这个开关不会自动删除系统中所有属于这个用户的文件,只是删除他的主目录。

如何组织用户
Linux 的配置是基于文本的。Linux 中的所有用户都存放于 /etc/passwd 文件中。您可以使用 more 命令来分页查看这个文件:

more /etc/passwd

/etc 目录
不要忘记,Linux 的大多数配置文件都是在 /etc 目录下。

这个文件的结构非常直观。每一行是一个新用户,参数用冒号隔开。

userid:x:75000:75000::/home/userid:/bin/bash

第一列是用户名。第二列是用户的密码。第三列是用户的数字 ID。第四列是用户的主组的 ID。第五列是用户的全名,或者是注释。第六列是用户主目录的位置,这个目录通常位于 /home 目录下,目录名与用户 ID 相同。第七列是用户的默认控制台 shell。

Password 文件结构
Login ID Password User ID Group ID Comment Home directory Default shell
userid x 75000 75000 /home/userid /bin/bash

注意上面的例子中 Password 列是一个“x”。这并不是说用户的密码是“x”。以前密码曾经是以平文本的形式存储在这个文件中。现在也还有这样的配置,但由于密码容易泄露,已经很少有人再这样做了。解决的方法是创建 shadow password。在 /etc/passwd 文件中存放密码的位置只是存放一个“x”,而经过加密的密码存放于 /etc/shadow 文件中。这项技术通过将用户信息与密码数据分离而提高了安全性。MD5 密码加密算法支持更为可靠的密码,从而进一步提高了安全性。一个映像密码条目的样例如下所示:

映像密码和用户权限
Linux 用户管理的特点之一在于它沿袭了 UNIX 风格,使用 passwd 文件。登录的用户必须可以读取 /etc/passwd 文件,以判断他的用户名是否存在。如果将用户名和密码存放在同一个文件中,潜在的攻击者就可能获得密码;他们可以下载 /etc/passwd 文件,然后以暴力破解的方法获得密码。映像文件不必所有人都可读,这样攻击者将不能获得任何形式的密码。

这种方法还是不最好的,因为攻击还是可以得到 一些 用户信息。更好的方法是将用户保存于一个单独的地方,比如使用 LDAP。

userid1$z2NXZR19$PZpyL84DmPKBXMeURaXXM.:12138:0:186:7:::

所有的映像密码过程都是在后台进行,您只需要启用这项功能,别的什么都不用去做。


Linux 中的组与 Windows 中的组很类似。您可以创建一个组,然后将成员添加到这个组的列表中。可以以组为单位来分配资源。隶属于同一个组的成员可以访问同一资源。

使用控制台命令 groupadd 创建组很简单:

groupadd mygroup

这将创建一个名为“newgroup”的没有任何成员的组。组存放于 /etc/group 文件中。每一个组由单独的一行列出,如下所示:

mygroup:x:527:

第一列是组的名字。第二列是一个密码。同样,“x”说明真正的密码存放在 /etc/gshadow 映像文件中。第三列是组的一个数字索引。在第三列之后将是以逗号隔开的组的成员的用户 ID。

可以使用 gpasswd 命令向组中添加成员,要使用 -a 开关,后面跟要添加的用户名:

gpasswd -a userid mygroup

删除组的成员还是使用这个命令,不过使用的开关是 -d 而不是 -a:

gpasswd -d userid mygroup

也可以通过直接编辑 /etc/group 文件来对组进行修改。

编辑 passwd 文件时要当心
直接编辑 /etc/passwd 文件和 /etc/group 文件的真正危险在于有可能偶然失误而造成 ID 编号的重复。所有的资源都通过 ID 编号而不是用户或组的名字来确定用户的身份。如果您不小心造成了 ID 编号的重复,那么可能会有一些意想不到的事情发生。例如,如果您将一个用户的 ID 编号设置为 0 (root 用户的 ID),那个用户的身份将是 root!。另外,如果您在文件中删除了用户行或者组行,那么对应的用户或组也就被删掉了。

这些都是人为的错误。使用工具可以避免这些错误。不过,有时直接去编辑 /etc/group 文件是解决问题最快捷的途径。您一定要记住,当您在编辑那些文件时,您管理的是实际的权力。一定要小心。

在 Webmin 中,可以使用前面用到的管理用户的工具来创建、编辑、除去组。

用户和组的关联
虽然在这里我们不能详尽地论述访问控制,不过您应该对用户和组对文件的访问权限有初步的了解。如果您以长格式列出一个目录下的文件,您看到的将如下显示。

-rw-r--r-- 1 userid mygroup 703 Jun 23 22:12 myfile

现在暂时忽略其他的列,只去看第三、四和最后一列。第三列是文件主人的名字,userid。第四列是关联到这个文件的组,mygroup。最后一列是文件名。每个文件只能属于一个主人和一个组。可以为不能归于这两类的其他用户 (Other)设置权限。可以认为 Other 相当于 Windows 中的 Everyone 组。

一个文件只能属于一个主人,这在操作系统中很常见,但是,文件只能属于一个组,初次使用这一规则的管理员可能会觉得受到了限制。事实并不如此。由于用户可以同时是多个组的成员,所以只需要创建新的组就可以安全使用资源。在 Linux 中,往往是基于所需要的资源访问权限而不是根据业务单位来定义组。如果系统的资源逻辑上是有组织的,那么可以创建更多的组来更好地控制对资源的访问。

在本文最后的 参考资料 部分,您可以找到关于关联用户和组的更多详细资料。查看 man chmod 可以获得如何改变文件权限的详细信息。

结束语
在 Linux 中管理用户和组的方式与 Windows 中本质上是相同的,但是 Linux 中只能有惟一的组可以关联到一个系统资源。应该这样认识 Linux 中的组管理:不要吝惜对组的使用,在复杂的环境中,不要害怕创建很多组。应该根据资源访问权限而不是基于业务单位去创建组。

用户和组信息分别存储在 /etc/passwd 文件和 /etc/group 文件中。您的系统可能还会有 /etc/shadow 和 /etc/gshadow 文件,它们存储的是为了安全而经过加密的密码。直接编辑这些文件来管理用户和组不是不可以,但您一定要谨慎行事。

所有的用户和组的管理都可以在控制台中完成,可以写成脚本。也可以使用 Webmin 等工具以图形化的方式管理用户和组。

IBM 电子商务架构师 Chris Walden 将通过他在 developerWorks 上发表的九篇系列文章来指导您如何在 Linux 环境中运用您的 Windows 操作技巧。在本部分,我们追踪、处理和轮循日志,以增强系统安全,收集信息。

成功地管理任何系统的关键之一,是要知道系统中正在发生什么事。Linux 中提供了异常日志,并且日志的细节是可配置的。

Linux 日志都以明文形式存储,所以您不需要特殊的工具就可以搜索和阅读它们。您还可以编写脚本,来扫描这些日志,并基于它们的内容去自动执行某些功能。

Linux 日志存储在 /var/log 目录中。这里有几个由系统维护的日志文件,但其他服务和程序也可能会把它们的日志放在这里。大多数日志只有 root 才可以读,不过只需要修改文件的访问权限就可以让其他人可读。

/var/log/messages
messages 日志是核心系统日志文件。它包含了系统启动时的引导消息,以及系统运行时的其他状态消息。IO 错误、网络错误和其他系统错误都会记录到这个文件中。其他信息,比如某个人的身份切换为 root,也在这里列出。如果服务正在运行,比如 DHCP 服务器,您可以在 messages 文件中观察它的活动。通常,/var/log/messages 是您在做故障诊断时首先要查看的文件。

/var/log/XFree86.0.log
这个日志记录的是 Xfree86 Xwindows 服务器最后一次执行的结果。如果您在启动到图形模式时遇到了问题,一般情况从这个文件中会找到失败的原因。

其他日志
根据您的 Linux 发行版本以及您所运行的服务和应用程序的不同,/var/log 目录下还会有其他日志文件。例如,可能会有与邮件服务器、资源共享、自动任务等相关的日志。

准备好了就开始轮循
您将看到,/var/log 目录下有一些文件以一个数字结尾,这些是已轮循的归档文件。日志文件会变得特别大,特别笨重。Linux 提供了一个命令来轮循这些日志,以使您的当前日志信息不会淹没在旧的无关信息之中。logrotate 通常是定时自动运行的,但是也可以手工运行。当执行后,logrotate 将取得当前版本的日志文件,然后在这个文件名最后附加一个“.1”。其他更早轮循的文件为“.2”、“.3”,依次类推。文件名后的数字越大,日志就越老。

您可以通过编辑 /etc/logrotate.conf 文件来配置 logrotate 的自动行为。通过 man logrotate 来学习 logrotate 的全部细节。

日志工具
任何文本工具都可以用来处理日志文件。下面是一些特别有用的工具。

dmesg
使用 dmesg 命令可以快速查看最后一次系统引导的引导日志。通常它的内容会很多,所以您往往会希望将其通过管道传输到一个阅读器。

dmesg | more

上面的命令将以分页的方式显示引导信息。

tail
有时,当某些行为发生时,您会希望密切关注一个日志文件。Tail 命令设计用于显示文本文件的最后几行。使用 -f 开关,当日志增加新的内容时,tail 将继续显示新的输出。

tail -f /var/log/messages

上面的命令将显示 /var/log/messages 文件的最后 10 行,然后继续监控那个文件,并输出新的行为。要停止 tail -f 命令,使用 Ctrl + C 来中止进程。

more
More 的工作方式与 DOS 版本相同。您可以将它指向一个文件,或者通过它以管道输出信息,以分页的方式来查看信息。例如,以分页方式显示 Xfree86 启动日志文件的内容:

more /var/log/XFree86.0.log

使用“q”或者 [Ctrl]-C 来停止查看文件。

less
Less 是另一个文本阅读器,不过它还允许在文件中滚动浏览以及检索信息。

less /var/log/messages

上面的命令将显示 /var/log/messages 文件的内容。使用“q”来停止查看文件。使用“h”来获得 less 的使用帮助。

logger
您可能会希望将自己的消息也记录到日志文件。您可以只是将日志消息附加到恰当的文本文件,但是您必须得套用日志信息格式。同样,如果日志系统被定制,您还将不得不修改您的代码。llogger 命令使您可以将自己的消息发送到日志工具。在脚本中使用它来提供关于执行和错误的消息。

定制的日志
有两个服务,或者称之为后台程序,在控制日志,分别是 klogd 和 syslogd。klogd 只处理内核消息,syslogd 处理其他系统消息,比如应用程序。您可以通过编辑 /et/syslog.conf 和 /etc/sysconfig/syslog 来配置它们的行为。完全定制日志超出了本文的范围,不过在本文最后的 参考资料 列表中可以找到详细的资料。您也可以查看 /etc/syslogd.conf 的 man 页面来进一步学习。

本质上,软件所产生的每一条消息都提供一些信息用于确定消息是从哪里来的以及这个消息是什么。/etc/syslog.conf 文件允许您来指定如何处理那种类型的消息。您可以将它转储到消息文件,也可以将它转储到一个定制的文件。您可以将它发送到远程的主机,由远程主机来根据其自己的 syslogd 配置来处理它。远程日志是一个非常好的安全功能。通过将您的日志放置到远程系统中,您可以防止有人通过改变日志文件来掩饰其踪迹。

下面是取自 man /etc/syslog.conf 页面中的一个定制日志的例子:
定制的日志

# Kernel messages are first, stored in the kernel
# file, critical messages and higher ones also go
# to another host and to the console
#
kern.* /var/adm/kernel
kern.crit @finlandia
kern.crit /dev/console
kern.info;kern.!err /var/adm/kernel-info

第一个规则将所有内核消息定向到 /var/adm/kernel 文件。

第二个语句将所有优先级为 crit 或者更高的内核消息定向到一个名为 finlandia 的远程主机。这是有用的,因为如果主机崩溃以及磁盘错误无法恢复,您将无法读取存储的消息。如果那些消息同时在远程主机上也存在,您就依然可以找出崩溃的原因。

第三个规则将这些消息定向到实际的控制台,这样,在这台机器上工作的人也可以看到它们。

第四行告诉 syslogd 将所有优先级为 info 到 warning 的内核消息保存到 /var/adm/kernel-info 文件。所有优先级为 err 以及更高的消息不包括在内。

像这种定制日志的能力为 Linux 环境提供了极大的灵活性与可控制性。

Webmin 中的日志配置
Webmin 有一个用于操作日志文件的模块。

图 1. Webmin 系统日志视图
[myimg]upload/webminsyslogs2.[/myimg]

显示了所有配置的日志文件。点击一个日志文件来编辑它的配置。

图 2. Webmin 日志编辑屏幕
[myimg]upload/webminsyslogslogedit2.png[/myimg]

或者您可以点击 View 来查看日志文件的内容。

在控制台中查看日志文件
由于 Linux 中的日志文件以明文的形式记录,所以不需要特殊的工具来解释它们。任何文本文件阅读器都可以显示 Linux 日志文件。浏览器,比如 Mozilla,可以显示日志文件,并且提供搜索功能。Linux 还有控制台工具可以查看文本文件。more,如同 MS DOS 版本一样以分页方式显示文件。less 命令将在只读阅读器中显示文件,这个阅读器具有双向滚动和搜索的功能。现在,在命令行中输入 less /var/log/messages,体会一下这个命令。

Webmin 模块与 /etc/syslog.conf 文件相关联,因此您对其中一个所做的修改会影响另一个。

您生活中的日志
Linux 中的日志文件对于系统的故障诊断和维护来说至关重要。Linux 日志记录到文本文件,所以不需要专门的工具来查看这些文件。文本文件也容易用于定制脚本和程序。

日志被轮循,以避免变得过大,同时可以将当前信息与老的数据相分离。日志轮循是可配置的。

日志是高度可配置的,为了安全和备份,日志甚至可以存储到单独的系统中。您可以让自己的脚本和程序产生系统日志消息,这些消息将被 syslogd 后台进程识别出并进行处理。
 
 

抱歉!评论已关闭.