歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Unix知識 >> 關於Unix

RedHatLinux口令恢復任我行

有許多原因可能導致用戶口令的遺失,這對系統管理員而言,可能不是一個問題,只要以Root賬號登錄,再用Passwd命令更改用戶口令就可以了。可是,如果丟失的是Root口令,這又怎麼辦?難道就束手無策、重裝系統?這樣不僅費時費力,而且還可能造成重要數據的丟 有許多原因可能導致用戶口令的遺失,這對系統管理員而言,可能不是一個問題,只要以Root賬號登錄,再用Passwd命令更改用戶口令就可以了。可是,如果丟失的是Root口令,這又怎麼辦?難道就束手無策、重裝系統?這樣不僅費時費力,而且還可能造成重要數據的丟失和應用程序的破壞。顯然這種做法並不可取。



  其實,恢復Linux口令並不是一件很難的事情。Linux口令的恢復有2個方面: 一是給用戶產生一個新的口令,使用戶能夠重新登錄系統; 二是找出用戶原來的口令,而不是以新口令代替舊口令。一般情況下,用戶只希望能夠再次登錄進入系統即可,而不是獲得原口令,也就是這裡所說的第一個方面,相對而言,這方面要容易實現得多。

  Linux口令的恢復是系統維護的一種典型情況,本文中提到的一些方法從系統維護的角度出發,不僅適用於Linux口令的恢復,也適用於因為某些原因不能正常登錄進系統時的維護工作,對Linux系統的管理維護有參考作用。

  本文中所有提到的恢復Linux口令的方法均在實踐中測試通過,所用的Linux系統主要是RedHat Linux For x86,在實際口令恢復中,可能因Linux發行商、發行版本、處理器和硬盤等的不同而略有不同,但相差不會很大。其中一些方法也適用於其他Unix系統口令的恢復,甚至Windows等操作系統口令的恢復。

  一、口令恢復途徑

  下面恢復Linux口令的途徑適用於不同的情況,難易度各有不同。

  1. 緊急修復模式
  在無法啟動Linux時,常常需要通過磁盤、光盤或其他方法啟動Linux基本環境,進入Linux緊急修復模式。在緊急修復模式下,能夠訪問硬盤上的Linux系統文件,恢復系統正常,包括恢復口令等。

  2. 單用戶模式
  Linux有多個運行級別,如單用戶模式、無網絡服務多用戶模式、完全多用戶模式和X11圖形多用戶模式等運行級別。單用戶模式是指系統運行在惟一用戶——Root用戶模式下,進入此模式時,系統只是加載了可運行的最低軟硬件配置,以Root直接進入,沒有口令驗證。

  在單用戶模式下,可以用passwd命令來更改用戶口令,也可以直接對/etc/passwd等賬戶口令文件進行讀寫,達到口令恢復的目的。

  3. 修改口令文件
  Linux口令文件有2種保存形式: 一種是把賬戶信息和經加密後的口令密文都保存在/etc/passwd文件中,此形式不夠安全,在早期Unix中采用;另一種是把賬戶信息和口令密文分開存放,/etc/passwd文件用於保存賬戶信息,/etc/shadow文件用於保存口令密文。至於采用何種保存形式和加密算法,可以用/usr/sbin/authconfig程序來設置。

  對於沒有shadow的passwd文件,只要把相應賬戶的口令字段刪除,即可不經口令驗證直接登錄系統,例如某passwd文件的root賬戶如下:
  root:$1$dPTzzYkE$Zd3Vs6yCu
  VH8RC1gwKXX01:0:0:root:/root:/bin/bash

  將其修改為:
  root::0:0:root:/root:/bin/bash
 
  如果是有shadow的passwd文件,其口令字段以“x”字母代替,口令密文保存在Shadow文件中。可以刪除passwd文件中的“x”字母,或者刪除shadow文件中的口令密文,都可以使相應用戶不經口令驗證直接登錄系統,達到口令恢復的目的。

  4. 口令還原
  有些情況下,想找出被丟失的原始口令,而不是登錄系統去產生一個新的口令。但是,Linux使用的是DES(加密函數式是Crypt)或MD5(函數式是Md)加密算法,由於計算量之大,它們幾乎都沒有可能被逆向破解。DES口令密文是有13個ASCII字符的字符串,而MD5口令密文的啟始字符總是“$1$”。

  雖然很難逆向破解,但要通過口令密文找出原始口令也不是不可能的,從一個字典或一些字符的排列組合中提取字符串,提取出來的字符串用同樣的加密算法加密,將產生的密文與口令密文比較,如果一致則表明該字符串即為原始口令,從而達到口令還原的目的。如果口令很復雜,使用此種方法也是很難找出原始口令的,但用戶對自己口令的長度、采用的字符等會有大致的印象,這使得成功的可能性會更大。

  破解Linux口令的工具有很多,如John the Ripper、Crack by Alex Muffett和Cracker Jack等等,其中John the Ripper的功能最為強大,速度也最快。

  5. 系統攻擊破解
  如果能夠關閉電源重新啟動系統,那麼很容易恢復口令,但有時Linux系統上運行著非常重要的服務,不能直接關閉電源,否則會對系統和數據產生破壞。

  像這種在系統運行的情況下獲得系統口令,往往是比較困難的,但由於系統管理員對操作系統和應用程序的版本、配置等情況有著全面的了解,加上沒有防火牆和入侵檢測系統等的防護,那麼發現和利用系統漏洞的機會還是不少的,口令恢復的成功機會還是有的。
 
  這方面涉及的內容太復雜,在此就不多做介紹了。如果確有這方面的需求,最好由專業人士來幫忙,以免破壞系統和數據。

  二、如何進入緊急修復模式

  由於軟硬件故障、錯誤配置等多種原因無法啟動Linux時,需要進入緊急修復模式,有可能解決問題,至少也能拷出重要文件。

  進入緊急修復模式的方法並不復雜,在boot提示符下輸入如下參數:
  boot: linux rescue

  通過如下方法可以得到Boot提示符。

  用Linux隨盤發行的或由boot.img文件寫成的安裝引導軟盤引導系統,通常這需要緊急修復盤或安裝光盤或者硬盤上的ISO文件配合使用才能引導進入緊急修復模式。緊急修復盤可由rescue.img文件寫成或隨盤發行。在RedHat Linux 6.1以後,RedHat不再提供緊急修復盤(安裝光盤image目錄下也沒有rescue.img文件用來寫),而是把它直接做在安裝光盤上。

  用安裝光盤引導系統。

  用boo.net.img文件寫成的網絡引導盤或pcmcia.img文件寫成的PCMCIA引導盤引導系統,此方法先要確保網絡連接正常,並且需要確定網絡主機和傳輸類型。
  
  RedHat Linux 7.2及其以後的版本,可以選擇是否要把安裝在硬盤上的Linux自動嘗試加載到目錄/mnt/sysimage下,否則,要用mount命令手工加載。

  5. 系統攻擊破解
  如果能夠關閉電源重新啟動系統,那麼很容易恢復口令,但有時Linux系統上運行著非常重要的服務,不能直接關閉電源,否則會對系統和數據產生破壞。

  像這種在系統運行的情況下獲得系統口令,往往是比較困難的,但由於系統管理員對操作系統和應用程序的版本、配置等情況有著全面的了解,加上沒有防火牆和入侵檢測系統等的防護,那麼發現和利用系統漏洞的機會還是不少的,口令恢復的成功機會還是有的。
 
  這方面涉及的內容太復雜,在此就不多做介紹了。如果確有這方面的需求,最好由專業人士來幫忙,以免破壞系統和數據。

  二、如何進入緊急修復模式

  由於軟硬件故障、錯誤配置等多種原因無法啟動Linux時,需要進入緊急修復模式,有可能解決問題,至少也能拷出重要文件。

  進入緊急修復模式的方法並不復雜,在boot提示符下輸入如下參數:
  boot: linux rescue

  通過如下方法可以得到Boot提示符。

  用Linux隨盤發行的或由boot.img文件寫成的安裝引導軟盤引導系統,通常這需要緊急修復盤或安裝光盤或者硬盤上的ISO文件配合使用才能引導進入緊急修復模式。緊急修復盤可由rescue.img文件寫成或隨盤發行。在RedHat Linux 6.1以後,RedHat不再提供緊急修復盤(安裝光盤image目錄下也沒有rescue.img文件用來寫),而是把它直接做在安裝光盤上。

  用安裝光盤引導系統。

  用bootnet.img文件寫成的網絡引導盤或pcmcia.img文件寫成的PCMCIA引導盤引導系統,此方法先要確保網絡連接正常,並且需要確定網絡主機和傳輸類型。
  
  RedHat Linux 7.2及其以後的版本,可以選擇是否要把安裝在硬盤上的Linux自動嘗試加載到目錄/mnt/sysimage下,否則,要用mount命令手工加載。

  2. 修改默認運行級別
  /etc/inittab文件是系統運行級別的配置文件,每當啟動init進程時,init程序都會讀取/etc/inittab文件中的相應配置並運行。

  在Linux系統啟動時,/etc/inittab文件中有如下一行指定了默認的運行級別,通常的運行級別是3或5。
  id:3:initdefault:

  要使系統啟動後進入單用戶模式,只要把上面一行中的3改為1就可以了。
  id:1:initdefault:

  3. 啟動盤引導
  在Linux系統啟動時,Init讀取/etc/inittab配置進入默認運行級別,但也可以為內核指定一個啟動參數,內核將依此參數設定特定設備和環境變量等,對於不能接受解釋的參數將傳遞給內核啟動後的第一個程序,即Init程序,Init程序據此參數啟動進入非默認運行級別,如指定參數為1或single進入運行級別1,即單用戶模式。內核啟動參數的指定可通過在系統啟動軟盤、多重啟動管理器或程序Loadlin等的執行過程中指定。

  在系統維護或內核更新時,常用到當前Linux系統的啟動盤,在系統安裝時會提示用戶制作一張啟動盤,在系統安裝完成後也可以制作,下面是一個簡單示例。

  在軟驅中放入軟盤,用uname命令查看系統內核版本號,然後用Mkbootdisk命令創建引導盤,輸入的命令如下:
  #uname –r
  2.4.7-10
  #mkbootdisk –device /dev/fd0 2.4.7-10

  以啟動盤引導,在boot提示符下以“linux ”的語法形式輸入如下參數之一,即可引導進入單用戶模式如下:
  boot: linux 1
  boot: linux single

  4. 多重啟動管理器
  多重啟動管理器是一個能在系統啟動時用來選擇加載某個操作系統的引導程序,它可以載入操作系統的內核和初始化操作系統(如Linux或FreeBSD),或者把引導權交給操作系統(如DOS或Windows)來完成引導。Intel兼容PC機上的多重啟動管理器有LILO和GRUB等,Alpha PC機上使用MILO,Sparc兼容的工作站是用SILO。

  在多重啟動管理器中為Linux內核指定啟動參數引導進入單用戶模式。以Intel兼容PC機上的Linux為例,如果安裝的是LILO,在LILO引導畫面,按Ctrl+X鍵切換入命令行,在LILO提示符下輸入與啟動盤引導Boot提示符下相同的參數之一,即可引導進入單用戶模式:

  在RedHat Linux 7.2以後,多重啟動管理器開始用GRUB代替LILO,它比LILO具有更多的優勢,是LILO的替代品。下面是GRUB引導進入單用戶模式的過程。

  在出現GRUB引導畫面時,按字母e鍵,進入GRUB編輯狀態。
  按↑鍵或↓鍵選擇相應的引導項,並再接字母e鍵進入命令行編輯。
  在出現的命令行上添加“1”或single,並按鍵,返回GRUB編輯狀態。
  按字母b鍵,引導進入單用戶模式。

  從上可以看出多重啟動管理器對Linux系統啟動和維護的重要性,所以建議在安裝Linux時也安裝好多重啟動管理器,便於將來系統的維護,哪怕是主機上只安裝了Linux一個操作系統。

  5. loadlin引導
  loadlin是一個能在DOS下啟動Linux核心的裝載程序,可從DOS引導進入Linux或安裝Linux系統等。如果沒有安裝多重啟動管理器或者配置有誤不能進入Linux的話,常常會用到這個程序。

  在loadlin的啟動命令中添加single參數就可以進入單用戶模式。如果主機上安裝有Windows 9x系統,在系統啟動時按F8進入MS-DOS,運行loadlin程序引導進入單用戶模式。下面是一次啟動實例,該主機上沒有安裝Windows 9x,也沒有安裝DOS。

  以Windows 98安裝光盤引導啟動,在“Microsoft Windows 98 Startup Menu”上選擇第2項:“start computer with CD-ROM support.”。

  進入MS-DOS後,在光驅中換入RedHat Linux安裝光盤。

  在命令行上分別輸入如下命令引導Linux單用戶模式,假設Linux根文件系統在分區/dev/hda5上:
  A:>d:
  D:>cd dosutils
  D:DOSUTILS>loadlin autobootvmlinuz root=/dev/hda5 ro single

  在啟動盤引導的boot提示符下,在LILO和GRUB等啟動管理器的命令行下,以及在Loadlin程序上都可以配置很多參數引導進入系統,對系統維護很重要,可以參考BootPrompt-HowTo。

  上面提到的方法,都需要對/etc/passwd、/etc/inittab等Linux文件進行讀寫,但在正常情況,只有root用戶登錄進去才可以讀寫。那麼在不能正常登錄進系統時,又如何能對這些文件進行讀寫呢?

  除了可以在緊急修復模式、單用戶模式下讀寫Linux文件外,采用下面的方法也不失為良策:

  通過Linux系統軟盤引導啟動,就能進入Linux系統;

  通過Linux系統光盤進入,如DemoLinux;

  在DOS/Windows下讀寫Linux文件,幾乎所有版本的DOS/Windows都不提供對Linux文件系統的支持,但借助不少軟件可以實現,如FSDext2、Ext2fsnt、Ext2ifs、Ext2 tools、Ltools和Explore2fs等,還有Microsoft IFS Kit; 通過第二硬盤。

  上面提到的種種Linux口令恢復方法,讀者可以結合自己的實際情況,選擇一種最簡單易行的方法來恢復自己的Linux口令。從中可以看出,他人通過在本地重啟系統很容易獲取Linux口令,所以為了加強系統安全,有必要在啟動管理器(如LILO和GRUB)及BIOS中設置口令,使他人不能輕易得逞,更重要的是加強安全管理工作。

Copyright © Linux教程網 All Rights Reserved