系統管理-第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系統是否每日檢查更新的例子
以上就是系統配置部分。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章