System Recovery - Linux
剛好最近無聊在研究如果碰的到實體機器
但卻沒有帳密 或是忘記帳密時
有沒有什麼手段可以進去系統改掉密碼
起初是研究 windows 該怎麼辦到
後來想說連 linux 一起研究
於是就產生了這篇
直接進入主題
這次使用的測試環境如下
- Debian 12.8
- GNU GRUB 2.06 (其實就是系統裝起來預設自帶的)
首先開機進入 grub 畫面
按照底下敘述
按 e
可以進入編輯模式
接著滑到最下面有一條 linux
的欄位
根據 grub 官方文件 可以知道後面需要傳遞 linux kernel image 以及相關參數
詳細資訊可以從 kernel.org 官方文件 查詢
我們目前只需要知道 ro
代表之後啟動的系統掛載起來是唯讀
因此需要改成 rw
才可以更動系統內的檔案
接著要多一個參數 init
在最尾部
這是控制啟動系統後要載入的程式
直接設定成 /bin/bash
就好
最後按 ctrl
+ x
即可用這次變更的設定檔進入系統
成功後會長這樣
這邊要注意
如果維持 ro
進入系統的話
會無法進行任何修改
有正確掛載進可寫的系統應該要可以如下
我們可以看到系統內有 root
跟 user
兩個使用者
這邊就拿 root
忘記密碼的情境示範
嘗試修改 root
密碼為 root2
並且進入系統
最後記得打個 sync
讓更動確定寫回 file system
因為在這個狀態下的系統非常陽春
沒有太多其他的底層維護 daemon 介入
因此需要盡量保證系統穩定
最後就可以直接重開機啦
但是會發現打了 reboot
卻噴 error
原因是我們在最一開始 grub 啟動的時候
是直接用 /bin/bash
進入的
並沒有讓 systemd 啟動
因此沒辦法維護系統狀態
這邊就需要透過手工對 kernel 送重啟訊號了
首先要啟用 sysrq
的功能
可以參考 kernel.org 官方文件
1
代表啟用全部的功能
1 | echo 1 > /proc/sys/kernel/sysrq |
然後送 b
給 /proc/syseq-trigger
代表立刻重啟系統
1 | echo b > /proc/sysrq-trigger |
開機完成正常的系統後
輸入剛剛改過的密碼 root:root2
就成功進入系統了