Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學
您现在的位置: Windows教程網 >> Windows教程 >  >> Linux 系統教學 >> Linux 教學

Linux 終極實驗:執行 rm -rf / 後的「倖存者」與系統重建之路

編輯:Linux 教學

這是一個經典的思想實驗:以 root 身分執行 rm -rf --no-preserve-root / 後,系統還剩什麼?能否從廢墟中重建基本工具鏈?本文記錄實測過程與核心發現。

實驗前提

  • 現代 Linux 核心預設啟用 CONFIG_PROTECT_ROOT,rm -rf / 會被攔截;需加 --no-preserve-root 繞過保護。
  • 實驗環境:隔離測試機/容器,**嚴禁在生產環境嘗試**。

執行瞬間:核心二進制消失,但進程仍在

# rm -rf --no-preserve-root /

現象:

  • /bin/ls、/bin/cat、/bin/chmod、/usr/bin/file 等外部命令瞬間消失,執行報 No such file or directory。
  • **當前 Shell (bash) 進程倖存**——因已載入記憶體,不依賴磁碟映像。
  • **Shell 內建指令** 全部可用:echo、cd、pwd、read、printf、for/while、函數定義 等。
  • 虛擬檔案系統 掛載點倖存:/proc、/sys、/dev、/run——它們在記憶體中,不佔磁碟空間。

倖存者工具箱:用內建指令重建基本功能

1. 替代 ls:用 glob 與 printf

# 定義函數
ls() { for i in ${1:-.}/*; do printf '%s\n' "$i"; done }
ls /dev
# /dev/pts /dev/null /dev/zero ...

2. 替代 cat:用 read 迴圈

3. 尋找尚存的可執行檔(排除 /proc 掛載點下的符號連結)


executable() { [[ ! -d $1 && ! -L $1 && -x $1 ]] && printf '%s\n' "$1"; }
for i in /**/*; do executable "$i"; done
# 輸出為空——實體二進制已全被刪除

破局關鍵:/proc//exe 指向記憶體中的二進制映像

雖然磁碟檔案消失,但**正在運行的進程**在 /proc/$PID/exe 仍保留對原始二進制的引用(核心保持映像不被釋放)。


# 找到 bash 自身的 exe
ls -l /proc/$$/exe
# lrwxrwxrwx 1 root root 0 ... /proc/1234/exe -> /usr/bin/bash (deleted)

此時 /proc/$$/exe 雖顯示 (deleted),但**仍可執行**!

重建路徑:取得 busybox 靜態編譯版

  1. 在**另一台完整機器**編譯/下載 busybox 靜態版(單一二進制含 ls、cp、mv、wget、tar 等 300+ 工具)。
  2. 利用倖存的 echo + printf + xxd(若倖存)或 bash 內建 /dev/tcp 協議傳輸二進制內容:

# 完整機器:監聽傳送 busybox
cat busybox | xxd -p | tr -d '\n' | sed 's/../\\x&/g' | nc -l -p 5050

# 受災機器:接收並寫入(利用 bash /dev/tcp)
exec 3<>/dev/tcp/完整機器IP/5050
while IFS= read -r -u3 line; do printf "$line"; done > busybox
exec 3<&-

賦予執行權限:需一個可執行的「載體」

接收到的 busybox 檔案無執行位。利用 /proc/$$/exe(bash 自身)作為載體:


# 寫入一個微型 C 程式 setx.c,編譯成共享物件,用 enable -f 載入(bash 內建)
# 或者更簡單:覆蓋 /proc/$$/exe 指向的記憶體頁(需 root 與 /dev/mem,風險極高)
# 實務上最可行:重啟進入 initramfs/救援模式掛載磁碟修復

結論與教訓

  • rm -rf / 不會刪除掛載點(/proc、/sys、/dev)與正在運行的進程映像。
  • Shell 內建指令是災後重建的唯一槓桿。
  • 生產環境務必: 異地備份、不可變基礎設施、chattr +i 保護關鍵目錄、限制 root 直接登入。
  • 此實驗僅供教學理解 Linux 進程/檔案系統/虛擬檔案系統交互機制,**切勿嘗試**。
Copyright © Windows教程網 All Rights Reserved