﻿# 如何重設 Ubuntu、CentOS、Debian、FreeBSD 的 root 密碼

前陣子有客戶因為接手一個燙手山芋的案子，突然要負責管理十多台伺服器，其中包括 FreeBSD, Debian, CentOS 等各式不同的作業系統，最詭異的地方是，他們交接伺服器的時候原廠商竟然不願意提供 root 密碼給他們，客戶就在一個伺服器完全被隔離的情況下完成了交接程序，拿到的就是十多台還正常運作的實體機器，但登入不了，也因此客戶特別聘請我到現場緊急救援，希望能幫他們完成重設 root 密碼，如此**特殊的需求**，我還真第一次遇到，在此特別公開在不同 Unix-like 作業系統之間 root 密碼重設的標準作業流程！

到機房之前，我原本想說 Linux 重設密碼非常簡單，進入 **單人模式** (Single-user mode) 就能免密碼登入並進行重置，但是實際進行 root 密碼重置時卻發現不同平台有不同的特性，而且 Debian、CentOS、FreeBSD 這 3 種作業系統的密碼重置步驟都不太一樣，而且有些還用手機辛苦查了好幾篇文章才找到解決方法，也因此特別做了筆記，希望以後永遠都不要再用到。XD

**如何重設 Ubuntu 的 root 密碼**

標準作業流程：

1.  進入 GRUB 開機選單，選擇有 **(recovery mode)** 的開機選項，選取後按下 **Enter** 即可  
    ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/ee8df4228ee6919ac96d-image_1519.png)  
    
2.  進入 Recovery Menu 之後，選取 root - Drop to root shell prompt 即可立刻免密碼以 root 身份登入  
    ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/78683b3dcb97fdeac8d7-image_1520.png)  
    
3.  接著就可以重置 root 密碼了  
    ![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/5694c90ce761dadc2f7c-image_1521.png)

**如何重設 CentOS 的 root 密碼**

標準作業流程：

1.  進入 GRUB 開機選單，選擇預設的開機項目即可，直接按下 **e** 進入開機參數編輯視窗
2.  找到 kernel 開頭的這一行（通常在第二行），並按下 **e** 編輯這一行
3.  在此行最後面加上一個**空白字元**與 **single** 字串，並按下 **Enter** 鍵確定並回到 GRUB 開機選單
4.  最後按下 **b** 開機，接著即可免密碼以 root 身份登入 shell

**如何重設 Debian 的 root 密碼**

雖然 Linux 重置密碼的步驟差不多，但是使用 Debian 時就算以**單人模式**開機，使用者還是必須要輸入 root 密碼才行，所以使用這個方式並無法進入 shell 環境重置密碼，以下才是正確的 root 密碼重置流程！

標準作業流程：

1.  進入 GRUB 開機選單，選擇預設的開機項目即可，直接按下 **e** 進入開機參數編輯視窗
2.  找到 kernel 開頭的這一行（通常在第二行），並按下 **e** 編輯這一行
3.  在此行最後面加上一個 **single init=/bin/bash** 字串 (如下圖)，並按下 **Enter** 鍵確定回到 GRUB 開機選單
4.  最後按下 **b** 開機，接著即可免密碼以 root 身份登入 shell
5.  進入 shell 之後是無法變更密碼的，因為此時檔案系統預設是「唯讀」的！  
    因此必須重新掛載硬碟才能開始改密碼，其指令如下：

```
mount -o remount /
```

以下是上述第 3 步的圖示：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/2ca2dbc4c13956f4731c-image_1522.png)

**如何重設 FreeBSD 的 root 密碼**

標準作業流程：

1.  進入開機選單，選擇單人模式開機
2.  進入 shell 之後是無法變更密碼的，因為此時檔案系統預設是「**唯讀**」的！  
    因此必須重新掛載硬碟才能開始改密碼，但其指令跟 Debian 並不相同，其指令如下：

```
mount -a
```

註：以下是我當時在機房拍下的畫面，也就是檔案系統是唯讀的情況下變更密碼失敗的畫面：

![](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/eaff3abcb978ce037399-image_1523.png)

**相關連結**

-   [忘記 Windows 密碼、無法登入怎麼辦？如何破解電腦開機密碼？（支援 Windows 7、Vista）](http://briian.com/?p=8208)
-   [forgot root password or reset root password in Debian](http://www.debianadmin.com/forgot-root-password-or-reset-root-password-in-debian.html)
-   [How-To: Recover root password under linux with single user mode | Debian/Ubuntu Tips & Tricks](https://web.archive.org/web/20121111150654/http://www.debuntu.org:80/recover-root-password-single-user-mode-and-grub)
-   [FreeBSD Reset or Recover Root Password](http://www.cyberciti.biz/tips/howto-freebsd-reset-recover-root-password.html)
-   [Root Password Recovery Fedora (RedHat, CentOS)](http://www.go2linux.org/fedora-centos-root-password-recovery)
