- linux系統的啟動過程
在介紹破解Linux系統root密碼之前先了解一下linux系統的啟動過程
1 開機自檢(POST),初始化部分硬件 2 搜素可用於引導的啟動設備(如磁盤的MBR) 3 讀取並將控制權交給系統啟動加載器(grub2) 4 啟動加載器加載器配置,顯示可用配置菜單 5 啟動加載器加載內核及initramfs,置入內存 6 啟動加載器將控制權交給內核 7 由內核查找initramfs中的硬件驅動,作為PID=1從initramfs執行/sbin/init (在RHEL7中,為systemd,並包含udev守護進程 8 Systemd執行initrd.target的所有單元(包含將文件系統掛載到/sysroot) 9 內核root文件系統從initramfsroot文件系統切換到/sysroot上的系統root文件系統 10 Systemd查找默認目標(target),然后啟動該target的所有單元
其中,以上第10步的”Systemd查找默認目標(target),然后啟動該target的所有單元“中的target指的是如下啟動加載單元

- 破解Linux系統root用戶密碼
破解root密碼的大致思路為,linux系統啟動時會加載Initramfs文件系統,而Initramfs文件系統其實就是壓縮的僅包含開機引導所必須的一小部分系統命令,在我們進入磁盤系統之前會有系統啟動加載器grub2來加載內核和Initramfs文件系統,因為磁盤系統的root密碼忘記了,所以我們必須修改步驟3的啟動部分,告訴系統加載完內核后就停止,讓我們進入Initramfs文件系統進行相關操作。當我們進入到initramfs文件系統后,因為當前的/sysroot為只讀掛載,而重置passwd的話肯定需要寫入權限,所以我們需要重新以寫入權限掛載。最后切換根目錄為/sysroot目錄后在使用passwd命令就是對我們的磁盤系統進行密碼重置了,具體操作如下:
實驗環境:在Linux系統上通過KVM安裝了一個rhel7系統,針對該虛擬機 中的系統進行root密碼破解
1. 設置系統的root密碼為一個任意值,模擬你不知道root密碼的情況

2. 現在開始進入破解,在上一步結束后重啟系統,在啟動選單中(以下截圖頁面)按下"e"鍵

進入編輯頁面

3. 修改linux16行中的ro以后的部分內容(就是紅色線標記的部分),然后替換為rd.break

變更為如下所示,然后ctrl+x保存,繼續下一步

4. 然后進入到initramfs文件系統,重新掛載/sysroot,使用rw方式進行掛載
![]()
5. 使用chroot命令,將shell切換到/sysroot下
![]()
6. 此時使用passwd命令,將密碼修改成你要修改的密碼即可。最后創建/.autorelabel文件,告訴SELinux重新進行文件標記

7. 連續兩個exit,退出並重啟系統

8. 至此,root的密碼已被重置成功,嘗試重新登錄。

