系统管理-第4部分 系统配置

背景:这篇文章将解释元素中的第二部分――系统配置
水平集:系统配置和管理包含与标准化,如果可能,同时也集中化配置主机相关的所有任务。这个范畴内的很多设计方案都是提供一个普通的配置接口,或者是命令行式的,或者是基于图形用户界面(GUI)的,都是为了减轻系统管理员的任务量。还有其他一些设计方案,特别是Cfengine,提供了一个更高水平的,基于政策(policy-based)的系统来为一个系统集提供一致的配置和统一的管理。此外,在这个范畴内也有很多可用的不同的工具,但是我们只讨论最流行的,例如Webmin,YaST,SSH,VNC和Cfengine。以下段落,我们在OSSL使用后,尝试列出我们的理解:
I.  WEBMIN:“Webmin是一个为Unix系统管理员提供的基于网络的接口。使用任何支持表格和表单(和为了文件管理模块的java)的浏览器,你就可以建立用户帐户,Apahce服务器,域名服务器(DNS),文件共享等等。”Webmin在设计上是非常模块化的,允许第三方开发者很容易的为一个特殊的服务或是任务添加支持。很多任务是为了减轻或自动化系统管理员的任务,或者用特殊的语法编辑一个配置文件。Webmin当前由OpenCountry公司支持,该公司出售Linux管理解决方案。OpenCountry网站上有Webmin的信息,包括他们支持的该系统的两个变更版本。
◆Webmin Plus:是Opencountry支持的一个Webmin的版本。根据网站提供的信息,Webmin Plus版本已经经过了公司的测试,并且包含新特性,特别是支持叫做Bacula( [url]http://www.bacula.org/[/url])的备份和恢复应用程序。Web Plus现在仍然是在一个“Mozilla”型许可下免费提供,并且通过Sourceforge可下载。
◆Webmin Pro:上次我查过,Webmin Pro还没有被发布,但是OpenCountry网站上的下面这段话是关于这个产品的一个摘要:“它是一个商业化的全面的产品,使Linux和Windows这样的混合系统上的系统管理员能够集中管理整个数据中心。”
II.  YAST:YaST(Yet Another Setup Tool “还是另外一个安装工具”),是一个主要用于基于SUSE系统的操作系统安装和配置工具。YaST提供主要的控制面板接口入口,可以使用于大量的配置任务――如添加和删除软件,碎片管理,用户管理,设备配置以及配置个别服务和daemons程序。其他普通的用户任务如获得系统信息和读取服务器日志通过YaST接口同样可行。所有上述的YaST特征都由各个模块实现,每个模块提供一个特定的功能或者执行一个特定的任务。这些任务主要涉及以特定的格式为一个特定的服务或daemon配置系统上的一个或多个文本配置文件。在其他的Linux或是类UNIX系统上,这些任务都是通过命令行手动地执行。
YaST工具在设计上是非常模块化的,允许Novell或是其他第三方供应者为了配置一个特殊的设备或是服务而添加模块到YaST接口中。这些模块中的很多都是互相独立地工作,通常会打成单独的PRM包,这些包可能会被安装或是删除,这取决于安装在系统上的软件和设备。YaST模块是用一个叫做YCP的脚本语言写成的。其他脚本,例如Perl或Shell脚本同样可以通过一个YaST模块被利用,来完成一个特定的任务。一个YaST的CIM模块也伴随着SLES10的发布而发布了,这个模块为CIMOM(公共信息模型对象管理模块)到其他YaST2模块提供一个客户端接口。YaST所使用的最普通的系统管理员任务涉及,建立单独包知识库(在碎片管理和维护部分会深入讨论),添加或删除软件包和配置或初始化在线更新。YaST能够查找和定位远程知识库中的软件,检索软件包,解析包依赖关系,检查包的密码签名(如果可用),然后在系统上安装这个软件。多样化的知识库可以被配置。知识库可以位于一个硬盘或者是CD/DVD,或者是一个远程系统,通过HTTP(s),FTP,NFS,或CIFS能够得到。一旦知识库配置完,就可以为以后的搜索建立索引。软件的搜索功能是非常强大的,允许用户使用在RPM包头文件中定义的很多属性来搜索适当的软件包――例如包的描述或内容。除了软件管理,很多YaST模块的性质和完全性是不同的。很多模块(如日志观察模块)通常是最小化函数功能,只是在提供一些很少的基本配置选项上有很好的工作效果。因此,复杂的服务器配置仍然需要手动地编辑基于文本的配置文件,或者使用其他配置工具,例如Webmin。但是,很多其他的普通的任务,例如配置显示器设置或是打印机都可以完全由YaST完成。
III.  SSH/SCP/SFTP:SSH(Secure Shell)可能是最早用于Linux和基于UNIX系统的远程系统管理员工具。典型的SSH工具集包括SSH客户端和服务器组件,还有用来拷贝文件的SCP和SFTP客户端应用程序,这两个都是简单地利用了后端的ssh位。下面的摘要采自OpenSSH工程主页:“OpenSSH是一个SSH连通性工具的免费版本,因特网的技术用户需要它。telnet,rlogin和ftp的用户可能没有意识到他们的密码在网络上传输是没有加密的,但确实是这样的。OpenSSH加密了所有的传输(包括密码)来有效地消除偷听,连接窃取,和其他的一些安全攻击。而且,OpenSSH提供可靠的“隧道”(数据的封装和拆封)能力和单独的认证方法,支持所有的SSH协议版本。既然大多数的任务都可以通过命令行执行,OpenSSH工具就可能是Linux系统管理员来保证可用性的一个最关键组件。远程拷贝和命令执行选项允许用户很快地并安全地在大量机器上建立,配置和运行一个脚本。OpenSSH在大多数基于Linux的版本上被默认安装,尽管在一些版本上,服务器可能会被防火墙默认地设置为不可用或是上锁。”大多数的SSH普通使用是:
1)远程命令执行:最普通的ssh工具的使用之一就是在远程机器上运行命令。
2)认证:为了通过ssh登录到一个远程主机拷贝文件或是运行命令,用户必须首先鉴别远程主机。在服务器上,本地密码认证可能不需要通过任何特殊的配置就可以被使用。支持PAM(可嵌入认证模块)的Linux系统可能也会使用密码认证来鉴别,使用大量机制,包括NIS,LDAP,Kerberos,或者AD(动态目录),这远胜于需要用户手动键入密码,一个更普通的认证选择是使用公钥认证。用户的公钥必须在他们被允许鉴别到那个服务器之前,添加到远程主机的一个叫做authorized_keys的文件中。这通常是通过建立到kickstart或是autoyast的后期安装程序来完成。
3)封装其他应用软件:另外一个普通应用是使用SSH封装其他协议。这通常用来封装不是典型加密的协议,例如NFS或X11。通过使用-Y或是-X转换和ssh客户端应用程序,用户可以选择X11封装,允许运行在远程机器的图形化应用程序显示在本地管理员工作站上。例如,如果一个用户想要SSH进入一个基于SUSE的系统,然后通过命令行运行“yast2”,YaST显示将会通过SSH封装并显示到本地系统――尽管实际上应用程序是运行在远程机器。

4)簇管理:适用于将要管理大量Linux服务器的时候,例如一个HPC簇,就是说大量的系统具有同样的配置。为了减轻这些系统的系统管理员的负担,有大量的基于SSH的工具,允许用户在多个系统上运行命令,或者拷贝文件,以下的这些工具都是得到GNU GPL许可的。
◆ClusterSSH:ClusterSSH允许一个系统管理员通过一个终端窗口运行来立刻开始一个到大量系统的远程SSH会话,以及同时在所有系统上运行命令或是改变配置文件。
◆PCP:PCP是一个用来在一个簇或服务器群中平行地拷贝文件到多个节点的协议。
◆GEXEC:GEXEC是一个比PCP稍微更好点的工具,为更大的簇提供一个平行的远程命令执行系统。系统包括一个客户端和服务器,还有一个类库允许集成到第三方应用程序。
◆PSSH:PSSH是以一套工具包发布的,提供很多与ClusterSSh,PCP和GEXEC相同的功能。
◆pssh-(平行的)Parallel SCP,与ClusterSSh或GEXEC相似。
◆pscp- Parallel SCP,允许用户以与PCP类似的方式拷贝文件到多个节点。
◆prsync- prsync工具自动化地在多个节点上平行的运行rsync,本质上来说是另一个拷贝文件或整个目录树到大量远程节点的方法。
◆pnuke- pnuke命令可以被用来终止运行在多个节点上的大量进程。
◆pslurp- pslurp工具与pscp类似,除此之外,它是设计用来从一个主机集合中拷贝文件。它允许用户拷贝,例如,一个日志文件存在于多个节点,可以拷贝到本地目录树。
IV.  Cfengine:“Cfengine,或者说配置引擎是一个为了建立专家系统来管理和配置大型计算机网络而设计的一个自治的代理,一个中层到高层的政策语言和代理。Cfengine设计成一个计算机免疫系统的一部分。对于簇管理来说是理想的,已经被全世界的或小或大的组织采用使用。”Cfengine由一个叫做cfagent的用户空间应用程序以及大量的工具组成。这些工具读并且解析一连串的文本配置文件,然后根据这些配置在主机上执行任务。Cfengine的配置语法实际上是一个高层决策语言,它允许cfagent检测系统配置并且基于这些配置执行纠动作。例如,cfagent可能会检测来确定一个配置文件中是否存在某一行文本,如果不存在,它将会添加折行文本,然后重启相关服务。cfagent工具主要通过cron这样一个任务调度程序每小时运行一次。这就保证了错误的配置将会在合理的时间帧内被发现并改正。
这个策略简单地检测来确定一个用户引导(boot)的入口在/etc/shadow文件中是否存在,同时确定密码是否匹配。这就保证了所有系统对根用户(root user)有相同的密码。Cfengine的配置变得非常复杂,使得那些有这个工具使用经验的人并不感到惊奇。决策语言的结构稍微减轻了这种进退两难的局面,由其他块制定和继承平台定义来帮助决定适当的动作来执行。这个配置从本质上来说就是一个高层政策语言(high-level policy language),因此,大量的测试必须手动建立和实施。但是这个工具集一旦正确执行就的确是非常强大的。但就像很多开源技术一样,学习过程一定是一步一步的,在能够熟练地使用到一个开发环境中之前,必须要研究明白它的复杂性。一个适用于windows版本的Cfengine可以在Cygwin环境下运行。
编辑文件:
          # We have different passwords for lab systems and workstations.
       linux.shadowpasswords.md5passwords.(!workstations)::
{ /etc/shadow
    SetLine "root:$1$383J33RL$ XXXXXXXXXXXXXXXXXXXXXX:12984:0:99999:7:::"
     AppendIfNoLineMatching '^root:.*'
LocateLineMatching '^root:.*'
ReplaceLineWith “root:$1$383J33RL$XXXXXXXXXXXXXXXXXXXXXX:12984:0:99999:7:::”
}
       linux.shadowpasswords.md5passwords.workstations::
{ /etc/shadow
    SetLine “root:$1$gcGWA0qS$YYYYYYYYYYYYYYYYYYYYYY:13027:0:99999:7:::”            
AppendIfNoLineMatching ‘^root:.*’
  LocateLineMatching ‘^root:.*’
    ReplaceLineWith “root:$1$gcGWA0qS$YYYYYYYYYYYYYYYYYYYYYY:13027:0:99999:7:::”
}
Cfengine为根用户检查密码的例子


接下来的例子是Cfengine为SUSE系统检查/etc/cron.d/yast2-online-update文件是否存及文件内容。如果需要,它将建立这个文件,并且在文件中写一个cron程序入口来制定一个每日检查更些和碎片的计划任务。完成之后,运行在suse.restartcrond中定义的命令“/etc/init,d/cron restart”

编辑文件:
    editfiles:
        suse::
                { /etc/cron.d/yast2-online-update
                  DefineClasses "restartcrond"
                  Umask 077
                  AutoCreate
                  BeginGroupIfNoLineMatching "^.*[\s\t]+root[\s\t]+online_update"
                      AppendIfNoSuchLine "30 3 * * * root online_update"
                  EndGroup
                }
shellcommands:
          suse.restartcrond::
"/etc/init.d/cron restart"     
确定SUSE系统是否每日检查更新的例子
以上就是系统配置部分。

你可能感兴趣的:(ssh,scp,sftp,yast,webmin)