Linux系統下root密碼遺忘等系統故障的修復方法 - 運維總結

 

IDC機房有一臺centos系統的服務器,因爲這臺服務器的系統裝了好長時間,且root密碼中間更新過幾回,後面去機房現場維護時,登錄密碼遺忘了,悲催啊~
沒辦法,只能開機進入「單用戶模式」進行密碼重置了,記錄以下:
1)重啓服務器,等到Booting CentOS界面。迅速按下enter鍵;linux

2)在GRUB界面,按下e鍵(其實,開機後我是一直按e鍵也能夠到下面的界面);shell

3)在 root(hd0,0)界面選擇第二項 kernel 項,按下e鍵;數據庫

 

4)在<RDTYPE=pc KEYTYPE=us #####項後添加 空格single 按下enter鍵;centos

5)回到 root(hd0,0)界面,按下b重啓安全

如上操做,便可順利進入「單用戶模式」,而後重置root密碼。最後再重啓服務器,用新重置的密碼登錄服務器~!bash

-----------------------------------------------------------------------------------------------
其實,簡而言之,忘記root密碼,破解的流程:服務器

進行單用戶模式:開機按e-->繼續輸入e-->光標移動到kernel-->e編輯-->空格輸入1或者single 回車-->按b進入單用戶模式

進入單用戶模式後,輸入passwd root密碼輸入二次密碼便可 -->而後reboot進入3模式

============================================================
上面是centos6系統忘記root密碼的狀況,若是是centos7系統忘記root密碼了。
解決方法以下:網絡

1)重啓/開機出現下面的界面按e鍵,或開機就一直按e鍵運維

2)按e鍵盤出現下面的界面(能夠下拉),須要編輯修改兩處:1)ro改成rw;2)在LANG=en_US.UFT-8後面添加init=/bin/sh  (如截圖中的紅色部分)測試

3)按Ctrl+X重啓,並修改密碼

4)因爲selinux開啓着的須要執行命令"touch /.autorelabel"更新系統信息,不然重啓以後密碼未生效

5)重啓系統(執行命令"exec /sbin/init",須要等一下子)

****************************** Linux 系統故障修復方式小結 ******************************
在平常運維中,常常發現Linux系統在啓動過程當中會出現一些故障,致使系統沒法正常啓動,下面總結了幾個故障案例 (以Fedora Core 6爲例):

1、單用戶模式
Linux系統提供了單用戶模式(相似Windows安全模式),能夠在最小環境中進行系統維護。在單用戶模式(運行級別1)中,Linux引導進入根shell,網絡被禁用,只有少數進程運行。單用戶模式能夠用來修改文件系統損壞、還原配置文件、移動用戶數據等。

如下列舉了幾個單用戶模式修復系統故障的典型案例:

案例一:root密碼忘記   [這個在上面已作了詳細介紹]
在單用戶模式中Linux不須要root密碼,這使更改root密碼很是容易。瞭解當系統引導進入多用戶模式失敗時如何進入單用戶模式是很是重要的。
一、 在系統啓動過程當中,會出現開始界面,按任意鍵,進入GRUB菜單選項。(若但願之後無此提示,直接進入GRUB菜單選項,刪除配置文件grub.conf中"hiddenmenu"項便可。)
二、 按"e"鍵編輯GRUB引導菜單選項,按"e"鍵後的GRUB屏幕。經過箭頭鍵下移到kernel行,並按"e"鍵,
三、在尾行光標處添加single,按回車鍵返回前一個屏幕,按「b」鍵進行引導,則系統自動進入單用戶模式,若是要改變root密碼,則執行命令:sh-3.1# passwd root

更改爲功後,執行命令exit退出重啓便可。還能夠在單用戶模式中去糾正阻止系統正常啓動的不少問題,好比:
一、 禁用可能停止系統運行的服務如禁用Samba服務,則執行"chkconfig smb off"下次系統引導就不會啓動Samba服務了。
二、 更改系統缺省運行級。若是X Window沒法啓動或者出現故障,能夠編輯/etc/inittab文件,採用文本方式登陸,更改initdefault引導級別爲3。

案例二:硬盤扇區錯亂
在啓動過程當中最容易遇到的問題就是硬盤可能有壞道或扇區錯亂(數據損壞)的狀況,這種狀況多因爲異常斷電、不正常關機致使。此種問題發生,在系統啓動的時候,屏幕會顯示:"Press root password or ctrl+D:"此時輸入root密碼系統自動進入單用戶模式,輸入:

fsck -y /dev/hda2

上面命令中,fsck爲文件系統檢測修復命令,"-y"設定檢測到錯誤自動修復,/dev/hda2爲發生錯誤的硬盤分區,統修復完成後,用命令"reboot"從新啓動便可。

案例三:GRUB選項設置錯誤
"Error 15"顯示系統沒法找到grub.conf中指定的內核。GRUB引導錯誤信息,能夠觀察發現由於打字錯誤,內核文件的「vmlinuz」打成了「vmlinux」,因此係統沒法找到內核的可執行文件。能夠按任意鍵回到GRUB編輯界面,修改此錯誤,回車保存後按"b"鍵便可正常引導,固然不要忘記進入系統後修改grub.conf文件中此處錯誤。這是不少初學Linux的用戶在修改GRUB設置時很容易犯的錯誤,出現此黑屏提示時注意觀察報錯信息,便可針對性修復。

2、GRUB引導故障排除
有時常常會發現Linux啓動後會直接進入GRUB命令行界面(只有「grub>」提示符),此時不少用戶就選擇了從新安裝GRUB甚至從新安裝系統。其實通常而言此故障的緣由最多見的有兩個:
1.  GRUB配置文件中選項設置錯誤;
2. GRUB配置文件丟失 (還有少數緣由,如內核文件或鏡像文件損壞、丟失,/boot目錄誤刪除等)

若是是第一種狀況,能夠首先經過GRUB命令引導系統後修復;
如果第二種狀況,則要使用Linux救援模式修復了。首先須要瞭解GRUB啓動系統的引導過程,grub.conf文件中主要的配置選項以下(注意:GRUB配置文件爲/boot/grub/grub.conf, /etc/grub.conf只是此文件的軟連接):

title Fedora Core (2.6.18-1.2798.fc6)

root (hd0,0)

kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet initrd /boot/initrd-2.6.18-1.2798.fc6.img

其中:
"title"段指定了GRUB引導的系統:
"root"段指定了/boot分區所在的位置:
"kernel"段指定了內核文件所在位置,內核加載時權限屬性爲只讀(「ro」)以及指定根分區所在位置(root=LABEL=/);
"initrd"指定了鏡像文件所在位置。

因此GRUB在引導時順序爲首先加載/boot分區,而後依次載入內核與鏡像文件。

案例:"title Fedora Core (2.6.18-1.2798.fc6)"段被誤刪除
此時,系統啓動後會自動進入「GRUB>」命令行,爲排除故障能夠依次作以下操做  [提示:GRUB支持tab鍵命令補全功能]:  
1.  查找/boot/grub/grub.conf文件所在分區GRUB> find /boot/grub/grub.conf 
2. 查看grub.conf文件錯誤GRUB>cat /boot/grub/grub.conf , 建議系統安裝設置好後,要將grub.conf文件備份,若是有備份文件如grub.conf.bak,則此時能夠查看備份文件,與當前文件比較,發現錯誤:GRUB>cat /boot/grub/grub.conf.bak
3. 確認錯誤後,先經過命令行方式完成GRUB引導,進入系統後再行修復grub.conf文件錯誤:
1)  指定/boot分區root 
2) 指定內核加載kernel /boot/vmlinuz-2.6.18-1.2798.fc6 ro root=LABEL=/ rhgb quiet
3) 指定鏡像文件所在位置initrd /boot/initrd-2.6.18-1.2798.fc6.img
四、從/boot分區啓動boot 
命令行模式能夠在GRUB菜單模式中經過按"c"鍵調用,也能夠用於測試新編譯的內核(設置kernel、initrd引導新內核及鏡像文件)。增長對GRUB引導以及Linux系統引導知識的瞭解將對此類故障排除大有幫助。

3、Linux救援模式應用
當系統連單用戶模式都沒法進入時或出現GRUB命令行也不能解決的引導問題,這時候就須要使用Linux救援模式來進行故障排除了。步驟以下:
1.  將Linux安裝光盤(若是使用CD光盤,則放入第一張引導光盤)放入光驅,設置固件CMOS/BIOS爲光盤引導,當Linux安裝畫面出現後,在"boot:"提示符後輸入"linux rescue"回車進入救援模式。(想了解救援模式詳細信息,還能夠按F5鍵查看) 
2.  系統會檢測硬件,引導光盤上的Linux環境,依次提示你選擇救援模式下使用的語言 (建議選擇默認的英文便可,根據測試發現部分Linux系統選擇中文可能會出現亂碼);鍵盤設置用默認的"us"就好; 網絡設置能夠根據須要,大部分故障修復不須要網絡鏈接,可不進行此項設置,選擇"No"。
3.  接下來系統將試圖查找根分區,出現掛載提示,設置默認在救援模式,硬盤的根分區將掛載到光盤Linux環境的/mnt/sysimage目錄下,默認選項"continue"表示掛載權限爲讀寫:"Read-only"爲只讀,若是出現檢測失敗能夠選擇"skip"跳過。此處,由於要對系統進行修復,因此須要有讀寫權限,通常選擇默認選項"continue"。

進入下一步後,系統提示執行"chroot /mnt/sysimage"命令,能夠將根目錄掛載到硬盤系統的根目錄中去。

案例:系統配置文件丟失修復
系統在引導期間,很重要的一個過程就是init進程讀取其配置文件/etc/inittab,啓動系統基本服務程序及默認運行級別的服務程序完成系統引導,若是/etc/inittab誤刪除或修改錯誤,Linux將沒法正常啓動。此時,只有經過救援模式才能夠解決此類問題。

/etc/inittab文件丟失引導錯誤示例
1.  有備份文件的恢復辦法進入救援模式,執行chroot命令後,若是有此文件的備份(強烈建議系統中的重要數據目錄,如/etc、/boot等要進行備份),直接將備份文件拷貝回去,退出重啓便可。若是是配置文件修改錯誤,如比較典型的/boot/grub/grub.conf及/etc/passwd的文件修改錯誤,也能夠直接修正恢復。

假設有備份文件/etc/inittab.bak,則在救援模式下執行:

sh-3.1# chroot /mnt/sysimage 
sh-3.1# cp /etc/inittab.bak /etc/inittab

2.  沒有備份文件的恢復辦法若是一些配置文件丟失或軟件誤刪除,且無備份,能夠經過從新安裝軟件包來恢復。首先查找到/etc/inittab屬於哪個RPM包 (即使文件丟失,由於存在RPM數據庫,同樣能夠查找到結果):

sh-3.1# chroot /mnt/sysimage 
sh-3.1# rpm -qf /etc/inittab initscripts-8.45.3-1

退出chroot模式:

sh-3.1# exit

掛載存放RPM包的安裝光盤(在救援模式下,光盤一般掛載在/mnt/source目錄下):

sh-3.1# mount /dev/hdc /mnt/source

Fedora系統的RPM包存放在光盤Fedora/RPMS目錄下,其餘Linux存放位置大同小異,在這裏不一一列舉;

另外,由於要修復的硬盤系統的根目錄在/mnt/sysimage下,須要使用"--root"選項指定其位置。

覆蓋安裝/etc/inittab文件所在的RPM包:

sh-3.1# rpm -ivh --replacepkgs --root /mnt/sysimage /mnt/source/Fedora/RPMS/ initscripts-8.45.3-1.i386.rpm

其中的rpm命令選項"--replacepkgs"表示覆蓋安裝,執行完成後,即已經恢復了此文件。

若是想只提取RPM包中的/etc/inittab文件進行恢復,能夠在進入救援模式後,執行命令:

sh-3.1# rpm2cpio /mnt/source/Fedora/RPMS/initscripts-8.45.3-1.i386.rpm | cpio -idv ./etc/inittab 
sh-3.1# cp etc/inittab /mnt/sysimage/etc

注意此命令執行時不能將文件直接恢復至/etc目錄,只能提取到當前目錄下,且恢復的文件名稱所在路徑要寫完整的絕對路徑。提取文件成功後,將其複製到根分區所在的/mnt/sysimage目錄下相應位置便可。

救援模式是維護Linux的有力武器,Linux運維工程師要想熟練解決Linux系統啓動的故障,必須充分理解Linux的引導過程,這樣纔可以對故障進行有效的判斷和處理!!!

相關文章
相關標籤/搜索