系統管理員工具包-注意那些陷阱_第1頁
系統管理員工具包-注意那些陷阱_第2頁
系統管理員工具包-注意那些陷阱_第3頁
系統管理員工具包-注意那些陷阱_第4頁
系統管理員工具包-注意那些陷阱_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、系統管理工具包: 問題和陷阱注意那些陷阱簡介: 避免常見的缺陷和陷阱,以幫助確保您的系統正常地運行。了解處理磁盤已滿或受損壞的系統的正確方法,這與在工具庫中配備各種工具以確保準備好快速地處理丟失的文件或不安全的系統一樣重要。本文重點關注于 UNIX® 管理員所面臨的一些最常見的問題,以及實現安全且有效的解決方案的方法。關于本系列典型的 UNIX® 管理員擁有一套經常用于輔助管理過程的關鍵實用工具、訣竅和系統。存在各種用于簡化不同過程的關鍵實用工具、命令行鏈和腳本。其中一些工具來自于操作系統,而大部分的訣竅則來源于長期的經驗積累和減輕系統管理員工作壓力的要求。本系列文章主要專

2、注于最大限度地利用各種 UNIX 環(huán)境中可用的工具,包括簡化異構環(huán)境中的管理任務的方法。刪除打開的日志文件在您完成管理任務的過程中可能會注意到,由于磁盤空間的原因,系統變得運行緩慢。如果這是個非常重要的系統,那么不大可能關閉計算機并添加更多的存儲設備,而且您可能已經采用了配額系統以防止個別用戶占用過多的磁盤空間。最合適的方法是查找那些可以刪除的、存檔到另一個系統的、或脫機存儲的內容。為了實現這個目的,日志文件通常首當其沖,因為常常對 /tmp 和 /var 文件系統設置了有限的空間。(清單 1 向您顯示了我的 iBook 上的 /tmp 和 /var,這臺計算機上并沒有運行任何繁忙的 服務。)

3、某些服務,如 Web 服務器、Java2 Enterprise Edition (Java EE) Web 應用程序和數據庫,都可能創(chuàng)建大量的日志,特別是在有人將其配置為調試模式的情況下。清單 1. /tmp 和 /var 中可能堆積了大量的數據,即使在個人工作站上chrishBender 530$ sudo du -sh /tmp/ /var/ 44K /tmp/1.0G /var/在證實了沒有人需要這些日志數據之后,您可以快速地使用 rm 命令刪除它們。但是這樣做,您無法重新獲得任何磁盤空間。如果不熟悉 UNIX 文件系統的語義學,您可能會認為需要重新啟動計算機并且執(zhí)行非常耗時的文件系統完

4、整性檢查(在單用戶模式中使用 fsck 命令)。在標準的 UNIX 文件系統中,您可以在文件打開或寫入的時候刪除它。這將從文件系統中刪除該文件的名稱,當使用該文件的程序關閉它時,操作系統可以重新獲得其存儲空間。許多程序常常使用這種特性來創(chuàng)建臨時文件,它們可以創(chuàng)建文件、打開文件并刪除文件。如果程序崩潰或正常退出,則將自動刪除相應的文件,所以程序員不需要關閉文件或稍后對其進行刪除操作。因為服務器保持打開相應的日志文件以便寫入數據,而這些日志文件占用了大量的空間,所以這種情況是非常不利的。刪除這樣的文件只是從文件系統中刪除了它的名稱,而無法重新獲得任何磁盤空間,直到相應的進程退出或關閉該文件。要解決

5、這個問題,您可以重新啟動擁有這個日志文件的服務,不過該服務的中斷可能會引起一些不必要的麻煩。另一種選擇是對日志文件重命名,然后告訴相應的進程重新加載其配置文件。任何現有的處理過程將會繼續(xù),使用打開的日志文件直到正常完成,而任何新的請求將會記錄到使用舊的名稱創(chuàng)建的新日志文件中。根據約定,當您發(fā)送一個掛起信號(信號 1 或 HUP)時,大多數服務器進程(所有常用的進程)都會進行復位操作并重新加載它們的配置文件。清單 2 顯示了向所有正在運行的 Web 服務器進程發(fā)送掛起信號的一種方法。清單 2. 告訴 Web 服務器重新加載其配置文件并對文件進行復位操作chrishBender 507$ ps -

6、A | grep httpd | grep -v grep | awk ' print $1; ' | xargs -L 1 sudo kill -HUPPassword:上面的命令中包含了很多的操作,所以讓我們來仔細地看一下管道的每個部分。ps 和 grep 命令用來在所有的進程中搜索 httpd(并且忽略用來搜索 httpd 進程的 grep 進程)。接下來,awk 只顯示輸出結果中的進程 ID,并將它傳遞給 xargs。然后,xargs 命令接受每個進程 ID(因為使用了 -L 1 以便一次提取一行內容),并使用 sudo kill -HUP 向相應的進程發(fā)送一個掛起信號

7、。刪除關鍵的文件意外地刪除工作系統中的一些關鍵文件,肯定會對系統造成損壞。尤其是對于共享庫、可執(zhí)行文件或重要的系統配置文件,很有可能意外地出現這種誤操作。避免這個問題的方法之一是,不要以 root 用戶登錄到系統中(請參見以 root 用戶登錄部分)。常規(guī)的用戶無法破壞重要的系統文件,除非您破壞了標準的權限設置。另一種方法是通過刪除寫入位,將相關目錄設置為只讀(請參見清單 3)。清單 3. 將重要的目錄設置為只讀chrishBender 541$ cd /etcchrishBender 542$ sudo find -d . -type d | xargs sudo chmod -w您可以使用

8、 find -d 選項對目錄進行深度優(yōu)先搜索(還指定了 -type d),然后使用 xargs 和 chmod 刪除寫入位,使每個目錄變成只讀。這可以防止任何人創(chuàng)建新的文件,更重要的是可以防止刪除現有的文件。它不會阻止具有合適權限的用戶(即您自己)對現有的文件進行編輯。使用這種方法時應當小心!如果有一個設計糟糕的應用程序,它需要一個可寫入的目錄,那么它可能會執(zhí)行失敗,并生成一些令人奇怪的錯誤消息。大多數程序都將其自動文件創(chuàng)建和刪除限制于 /tmp 和 /var 目錄。請記住,在安裝需要把配置文件或其他內容放入到只讀目錄中的新軟件時,您將不得不重新寫入位置位(可以使用相同的處理方法,但使用 u+

9、w 而不是清單 3 命令中的 -w)。通過復制修復受損壞的系統有許多情況都可能對系統造成損壞,但其中大多數都需要訪問系統控制臺以修復相關內容。如果由于失控進程而損壞了系統(請參閱本系列中的文章“監(jiān)視運行緩慢的系統”,在參考資料部分提供了相應的鏈接),消耗了所有的可用進程槽,或者占用了過多的內存而導致計算機將所有的時間花費在與硬盤的交換中,那么您需要終止那些損害系統的進程,或者如果根本無法登錄并執(zhí)行 kill 命令的話,直接重新啟動該計算機。如果您可以訪問該系統,但由于某種原因而無法終止損害系統的進程,可以切換到單用戶模式,這將停止所有非關鍵的服務以及任何用戶運行的進程。要讓計算機進入單用戶模式

10、,在基于 System V 的 UNIX 中可以使用 telinit 命令 (sudo telinit 1) 或者在來源于 Berkeley Software Distribution (BSD) 的操作系統中使用 shutdown 命令 (sudo shutdown now)。當您在單用戶模式中完成了修復任務之后,重新回到正常狀態(tài)的最簡單的方法是重新啟動該計算機;同樣,根據系統的具體情況,可以使用 telinit (telinit 6) 或 shutdown (shutdown -r now) 實現重新啟動。在最壞的情況下,您的系統可能遭受了很大程度的損壞,以致于您不得不從操作系統安裝媒介或

11、修復盤進行啟動。它們通常提供了最基本的單用戶環(huán)境,您可以使用這個環(huán)境進行磁盤檢查 (fsck)、系統安全漏洞檢查,或者從備份恢復受損的文件。您手頭有備份,對吧?當事情變得一團糟時,好的備份策略將為您省去大量的工作,并且它非常適合于那些不夠細心的用戶(他們總是會不小心刪除自己的重要文件)。保存序列化的文件和存檔有時,僅保存文件還不夠,您可能需要最近的版本或上個星期的版本。這種情況很可能會出現,比如人力資源部門有人覆蓋了工資處理文件的唯一副本,或者更糟糕,覆蓋了重要的系統配置文件。保存系統中重要(以及用戶)文件的增量備份是防止這種災難出現的一種重要方法。您曾經刪除或覆蓋過重要的文件嗎?這很容易解決

12、,您只需要從增量備份中提取昨晚的版本即可。清單 4(在我的系統中,我稱其為 newer-archive.sh)向您介紹了一個簡單的 Shell 腳本,它用來創(chuàng)建比指定的文件更新的存檔文件。您可以使用該腳本為那些比最近增量備份更新的文件創(chuàng)建增量備份。清單 4. 一個簡單的增量存檔腳本#!/bin/sh# Make an incremental archive containing files that have been# modified since the last archive was created.# Usage:# newer-archive.sh -o new-file.tar

13、-nt old-file filesold_file=""new_file=""files=""archiver="tar -T - -czpsSf"while "$1" != "" ; do case $1 in -o) new_file=$2 shift ; -nt) old_file=$2 shift ; *) files="$files $1" ; esac shiftdonefor path in $files ; do find $path -

14、newer $old_filedone | $archiver $new_file-o 選項指定了輸出文件,而 -nt 選項指定了用作基準的文件,任何比該文件更新的文件都將添加到存檔中。在列出需要進行存檔的選項、文件或目錄之后,您需要將它們全部添加到輸出文件。您可以對這個腳本進行修改,以便使用任何種類的存檔工具,假定您找到了一種通過管道傳遞需要進行存檔的文件列表的方法。如果您的系統中沒有安裝 GNU 的 tar,那么您可能還需要調整其中的 tar 選項。您可以將這個腳本與 date 命令組合在一起使用(請參見清單 5),以創(chuàng)建包含當前日期和時間的存檔。清單 5. 使用 date 來指定備份存檔

15、的名稱chrishBender 525$ sudo /bin/newer-archive.sh -o incremental-$(date +%Y-%m-%d-%H.%M.%S).tar.gz -nt incremental-2006-09-06-11.15.03.tar.gz /Users通過在 date 命令中使用 + 選項指定不同的輸出格式 (year-month-day-hour.minute.second),您可以創(chuàng)建包含當前日期和時間的文件名,使用最近的增量備份(該備份已經過了一個月,對于備份之間的間隔來說太長了)作為引用的舊 文件,備份所有更新的或修改過的用戶數據。另一種選擇是使

16、用 RCS 的 ci 和 co 命令為每個文件創(chuàng)建更改的歷史。您還可以使用 ci 簽入 文件。這將創(chuàng)建一個歷史文件(ci 加上文件名將創(chuàng)建另一個包含文件歷史及其較早修訂版本的文件名),并將該文件設置為只讀。使用 co -l 簽出 該文件并重新將其設置為可寫的。在完成了相應的更改之后,使用有意義的更改日志消息再次簽入該文件(請參見清單 6)。清單 6. 使用 RCS 跟蹤文件版本chrishBender 536$ ci -u points.txt points.txt,v <- points.txtenter description, terminated with single '

17、;.' or end of file:NOTE: This is NOT the log message!>> important points to cover in the article>> .initial revision: 1.1donechrishBender 537$ dir points.txt-r-r-r- 1 chrish chrish 170 Oct 6 14:34 points.txtchrishBender 538$ co -l points.txtpoints.txt,v -> points.txtrevision 1.1 (

18、locked)donechrishBender 539$ vi points.txtchrishBender 540$ ci -u points.txtpoints.txt,v <- points.txtnew revision: 1.2; previous revision: 1.1enter log message, terminated with single '.' or end of file:>> added another important point>> .doneci 命令的 -u 選項可以在簽入文件的時候自動地簽出該文件的一個

19、只讀版本。co 命令的 -l 選項可以鎖定該文件,以便您(并且只有您)可以對其進行編輯。RCS 只能夠處理純文本文件,如果您需要為二進制文件保存較早的版本,可以使用其他功能更加強大的工具,如 Subversion(請參見參考資料部分)。創(chuàng)建用戶或組在大多數系統中,添加新用戶或組似乎只需要使用最喜歡的文本編輯器修改 /etc/passwd 文件(以及 shadow 密碼文件,它用來保存密碼)或 /etc/group 文件。這種方法很容易記住,而該文件的格式也并不復雜,可以很快地完成這項任務。但是出于很多的原因,您不應該這樣做,這也正是大多數 UNIX 系統,特別是最新的 UNIX 系統,提供專門

20、用于創(chuàng)建新用戶和組的工具的原因。編輯這些重要的系統文件可能會帶來麻煩。雖然這些文件的確很簡單,但還是有可能受到其他因素的影響并把事情弄得一團糟??赡苣木庉嬈鲿诰庉嬤@些文件的時候對其進行鎖定,而這將會使得其他用戶在您編輯這些文件的時候無法登錄。在手動添加了用戶之后,您還有一大堆的工作需要完成。您需要創(chuàng)建一個新的 home 目錄,使用標準 home 目錄中的內容填充該目錄,將用戶添加到所有合適的組中,并創(chuàng)建一些系統級的內容,如新用戶所使用的郵件緩沖。為什么要自找麻煩呢?可以使用用戶和組的創(chuàng)建工具,這將為您節(jié)省時間和精力(并且可以確保不會將事情弄得一團糟,這將幫助您維持權威的聲譽)。大多數標準的

21、 UNIX 系統都為管理員提供了 adduser(或 useradd)和 addgroup(或 groupadd)命令。許多 Linux® 分發(fā)版提供了易于使用的圖形化工具(如 Fedora Core 的 User Manager),而 FreeBSD 的功能全面的 sysinstall 實用程序也可以完成用戶和組的創(chuàng)建。在 Mac OS X 中,您可以使用 Accounts preferences 來創(chuàng)建用戶,可以使用 NetInfo Manager 來創(chuàng)建新的組。以 root 用戶登錄正如您所知道的,root 用戶在 UNIX 系統中具有所有的權限。root 用戶可以執(zhí)行任何操作

22、,正如常說的,“能力越強,責任越大”。仍然有一些用戶堅持以 root 用戶登錄系統,即使他們所執(zhí)行的操作并不需要用到其中所有的權限。在任何具有管理員權限的系統中,您應該始終為自己創(chuàng)建(并使用!)一個常規(guī)的用戶帳戶。而在執(zhí)行需要 root 權限的操作時,使用系統中的 su(請參見清單 7)或 sudo(請參見清單 8)命令(可以使用您的系統中所提供的任何一個)臨時切換到 root 用戶。清單 7. 使用 su 命令臨時切換到 root 用戶chrishBender 514$ su -Password:# 清單 8 使用了 sudo 命令,以 root 用戶的身份運行一個命令。清單 8. 使用 s

23、udo 命令,以 root 用戶的身份運行一個命令chrishBender 517$ sudo idPassword:uid=0(root) gid=0(wheel) groups=0(wheel), 1(daemon), 2(kmem), 3(sys), 4(tty), 29(certusers), 5(operator), 80(admin), 20(staff)為什么要避免以 root 用戶運行呢?錯誤的 rm 命令、或不小心將 tar 文件釋放到錯誤的位置,這都可能對您的系統造成損壞,并需要大量的修復工作。確保系統的安全需要確保網絡中所有系統的安全,這是毫無疑問的。保留服務器或路由器中的缺省密碼,這無異于邀請那些不擇手段的(甚至僅僅只是好奇的)人侵入系統。入侵者可能有意地或無意地對系統造成損害,使系統遭受破壞,或者更糟,利用系統中的漏洞偷偷地對其進行修改,以便分發(fā)垃圾郵件、盜版軟件或其他的東西。確保系統安全的一個好的策略是拒絕任何操作,而不是允許任何操作。具體來說,關閉所有并不真正需要的網絡服務,阻

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論