給SUN打補丁
2024-07-26 00:29:39
供稿:網友
給系統打補丁是管理員的日常工作,可是能夠完整地作好可也不容易。下面這個帖子從日期上看,
應該是去年上半年寫的,可對于近日的你,應該還是有所提示。
給系統打補丁是管理員的日常工作,尤其是選擇了SUN工作站和Solaris以后,在獲得了易用性的同時,
也將自己和"補?。╬atch)""補丁包(patch-cluster)"緊緊聯系在了一起。系統已經有半年多沒有打
過新補丁了,然而期間報導的系統漏洞卻一個接一個地不停,尤其是幾個關鍵系統程序的安全漏洞,
像rpc.statd,automountd,rpc.ttdbserver,in.named等,并且我們的幾個服務器在檢查中連續出現
被攻擊甚至入侵的征兆。我感到越來越不安,決定下載一個最新的補丁包給系統們升升級,也安慰安慰
自己。
事情決定以后,立刻就干了起來。打開瀏覽器,訪問SUN公司的系統補丁專門站點http://sunsolve.sun.com,
找到系統的相應版本Solaris2.5.1對應的補丁包,一看5月27日。不錯,夠新,立即下載。一個多小時以后,
補丁到了我的主機上。在系統臨時目錄/tmp下開包,進入補丁包目錄2.5.1_Recommended,敲入命令
./install-cluster,然后按照系統提示鍵入yes。接下去就是等待了。打補丁是一個漫長的過程。需要耐心。
然而,半個多小時以后,我發現苗頭不對,補丁安裝一個一個全部失敗。本來,有幾個補丁安裝失敗是正常的,
但是現在,肯定是出了問題。本來認為很順利的事情現在有麻煩了。
按照往常的經驗,我決定重新讀一下補丁包附帶的安裝指導文件,選擇一個典型補丁103663-15(in.named),
閱讀它的安裝script文件installpatch,里面提到了錯誤返回碼的意義。我記得,安裝失敗時的返回信息大致
為checkinstall沒有完成,返回代碼為5?,F在它告訴我,"5"的意思是pkgadd命令失敗。這到底是什么原因呢?
再回想一下安裝過程,我以超級用戶身份,解開補丁包,然后以超級用戶身份執行安裝命令,系統有充足磁盤
空間,沒有錯誤。以前的補丁安裝也是同樣的過程,沒有出現過這種現象啊。
又認真讀了一遍installpatch,發現它只是按照順序講解了安裝補丁的次序和安裝腳本,并沒有介紹出錯誤的
原因。同目錄下還有一個文件Install.info,發現里面是安裝過程在不同系統環境下的一步一步說明,并且,
對每一步可能出現的錯誤提示也作了講解。 我注意到:
pkgadd: ERROR: checkinstall script did not complete successfully
對,錯誤提示就是這句話。文件中接下來的提示是:
The permission for the checkinstall script should not be changed.
改變checkinstall腳本的權限屬性。有點兒費解。怎么改呢?在它前面的一段英文:
The checkinstall script is executed with its ownership set to
user "install", if there is no user "install" then pkgadd executes
the checkinstall script as nobody.
原來中間還有這么一段過程,還要涉及到nobody用戶的權限(我的系統中當然沒有install用戶),文件屬性
還必須對nobody用戶可讀,這下全部明白了。
安裝腳本需要以nobody用戶身份運行checkinstall收集系統信息。我當前的umask(權限屏蔽位)為077,這意
味著超級用戶創建的文件,在缺省情況下其它所有用戶都無權讀、寫、執行,當然nobody也無權讀。root原來
的umask設置為022(超級用戶的文件其它用戶缺省不可寫),后來為了使系統文件管理更加嚴格,我將超級用
戶的umask改為了077。這才導致了兩次運行補丁包安裝程序執行結果的不一致。
問題的癥結找到了,處理起來就簡單了。回到/tmp,將解包后的文件目錄全部刪除。改變超級用戶的umask回
到022,重新解包,進入目錄,執行install-cluster。一段時間過去后,我終于看到了屏幕上出現了一個又一
個補丁安裝成功的提示。
對于系統管理員來說,安裝軟件時碰到挫折是經常的事。仔細閱讀軟件包帶來的說明文件是解決問題的有效手
段。這需要管理員有較好的英語閱讀能力,同時有耐心去思考,尋找出錯原因。不要急著到其它人那里去尋找
答案。
高手是在思考和探索中誕生的。