重設 Ubuntu Server 的 Root 密碼

前陣子建構了一台 Ubuntu Server,都建構完畢之後,就沒特別再管它了。

後來在管理這台機器,都採 SSH 的方式居多,但是過了一段時間,要再管理這台機器時,卻遇到了很大的麻煩。

因為通常都遠端以 SSH 的方式登入機器,所以 root 的密碼,除非要下 sudo,否則不太會用到,不幸的是 root 密碼太久沒用,已經忘記了,雖能登入機器,但有些指令或動作都需要 sudo,又因為 root 密碼忘記,結果就是什麼事都不能做……

Ubuntu Server 雖然有 Recovery 模式,我也可登入後拿到 root 的權限,但弔詭的是我雖然已經拿到 root 權限,可是要修改密碼,卻一直無法修改,這實在是有點頭疼。

後來,在官方的文件中找到一段資訊,簡單的大意是說,登入之後,系統會處於「唯讀」模式,這也就應證了為什麼我無法修改密碼的原因了。

修改 root 密碼其實很簡單,步驟不難,也不需要使用太多的指令。

  1. 先重新開機,好吧,因為密碼忘記了,不能用 command 的方式重新開機,所以只好用實體機器的 Reset 按鈕,或把電源關掉再重開,重開之後,在開機選單,要選「Advanced options for Ubuntu」
  2. 進入第二個選單頁面時,應該只會有兩個選項,要選擇有 recovery mode 那個選項
  3. 進到 Reocvery 模式之後,會發現上方會寫著:
    filesystem state: read-only
    很明確地提到目前我們的系統只是處於「唯讀」模式,此時我們是無法修改任何東西
    既然是唯讀模式,那就要讓系統重新掛載,且要它們擁有讀取和寫入的權限,方法有兩種 (*),比較簡單的方式是,先選擇「network」
  4. 接著會出現一個訊息,大意就是說這將會重新掛載系統,並且讓它們擁有讀取和寫入的權限,直接按下「Yes」即可
  5. 接著會出現類似的畫面
  6. 重新掛載完畢後,最上方的 filesystem state,會從原本的「read-only」變成了「read/write」,權限拿到了,再來就改密碼了,這裡要選擇「root」這個選項,進入 condole
  7. 進到 console 之後,使用這個指令
    passwd 使用者名稱

    並且直接輸入新的密碼兩次,如果沒有問題,會看到下面的成功訊息

    passwd: password updated successfully

  8. 修改成功之後,直接重新開機,就可以用新的密碼登入了

* 重新掛載系統的另一個方式是使用 command 的方式,並且直接略過上述的第 3 ~ 5 步驟,直接跳到第 6 步驟,進入 console 介面後,先執行以下的 command,再繼續執行第 7 步驟以後的動作。

mount -rw -o remount /

後記

重設 root 的密碼,這聽起來會是一個嚴重的安全性問題~

但再仔細想想,要重設密碼,必須要進入 recovery 模式,而要進入 recovery 模式,又必須要重新開機,換而言之,我們必須要接觸到實體的機器,才可以做這些事。原因是若以網路連線的方式管理 Ubuntu Server,要重新開機,必須使用 command,而要使用 command 重新開機,又必須要提升權限,也就是要使用 root 密碼。

況且,就算用 command 重新開機,也沒有用,因為開機選單和 recovery 也看不到,而且此時網路根本也不通,所以事實上這不算是一個嚴重的安全性問題。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Google reCAPTCHA 保護機制,這項服務遵循 Google 隱私權政策服務條款