找回Ubuntu系統密碼的若干嘗試

如何在不知原密碼的狀況下修改Ubuntu的密碼,網上有不少方法,這裏我用Ubuntu 14.04進行了一些嘗試,對有可能可行的方法進行總結。linux

注意:本文涉及的密碼有兩種,一是root密碼,二是能使用sudo命令的用戶密碼,兩者是有區別的。在安裝Ubuntu時程序會讓你新建一個用戶,這個系統的第一個用戶即是能使用sudo命令來得到root權限,此時root是沒有密碼的,於是不能執行su命令。打開/etc/shadow文件便能清楚看到第一行root項表示密碼的第二個字段是!,沒有密碼,而在該文件末尾能找到你安裝系統時所建用戶,該行的第二個字段是較長的已被加密過的密碼,以下圖所示。shell

通常Ubuntu是不會提示你給root設密碼的,而下文會看到,沒有root密碼的話在存在某種程度的安全隱患。要給root設密碼也很簡單,先用ubuntu

sudo -i

輸入用戶密碼後能得到root權限,再用安全

passwd

就設置root密碼了,設置完成後打開/etc/shadow文件查看首行就能看到表示密碼的第二字段已是一串已加密的密碼了。下面開始進入正題。bash

找回密碼的基本原理是:經過各類方法得到root權限,或把儲存密碼的/etc/shadow文件中root或者能使用sudo命令的用戶(在原先沒有設置root密碼的狀況下)表示密碼的第二字段刪除,再用passwd設置新密碼。有以下幾種方法:工具

1.由Recovery mode 進入修改加密

啓動電腦進入grub選擇菜單後,對於Ubuntu系統會出現多個啓動項,選擇spa

Ubuntu Kylin GNU/Linux 高級選項

進入,再選擇code

Ubuntu Kylin GNU/Linux, with Linux 3.13.0-36-generic(recovery mode)

進入會給出以下的Recovery Menu:進程

選擇帶「root」一項進入。此時,會出現兩種狀況:

(1)對於原先沒有root密碼的系統會直接獲取root權限,即可以直接進行設置新密碼的操做。因爲在此模式下根目錄文件系統掛載爲只讀,因此須要用下面的命令來從新掛載成可讀寫的:

mount -o remount rw -t ext3 /

以後即可直接用passwd設置root密碼或用「passwd 用戶名」修改該用戶密碼。或者編輯shadow文件,刪除相應用戶的密碼,即第一個圖中最後一行(jayson用戶)的第一個分號(:)和第二個分號之間的字段。而後保存重啓便可不輸入用戶密碼直接進入系統,再用passwd設置新密碼。

(2)對於原先已設置了root密碼的系統,此時系統會要求你輸入root密碼已得到root權限,這裏即可看出root密碼和能使用sudo命令的用戶密碼之間的區別。明顯,這種狀況下就幹不掉root密碼了。

2.進入單用戶維護模式修改

進入grub選擇菜單後,在ubuntu的正常啓動項上點「e」進入編輯啓動項模式,獲得以下的界面

在倒數第二行有「linux /boot/vmlinuz-...」字樣,把光標移動到「ro」處,把「ro」改成「rw」(即將只讀掛載直接改爲可讀寫,故在進入單用戶模式後就不用再從新掛載根文件系統了),在其後輸入「single」,並將該行剩下部分刪除,即這一行改爲:

linux /boot/vmlinuz-3.13.0-36-generic root=...(略寫) rw single

而後按Ctrl-x或F10進行引導,便能進入單系統維護模式,此時也會出現跟上一種方法相同的狀況,即原先沒設root密碼的能直接得到root權限,對密碼進行修改;而對有root密碼的系統仍會要求輸入密碼,仍舊幹不掉原root密碼。

3.略過init進程直接調用bash來修改

這一方法跟上一方法同樣須要進入編輯啓動項,將倒數第二行改成:

linux /boot/vmlinuz-3.13.0-36-generic root=...(略寫) rw init=/bin/bash

而後按Ctrl-x或F10進行引導,就能直接得到root權限!不管系統原先是否有設root密碼,即root密碼能直接幹掉了。以後的步驟就跟第一個方法同樣了,直接用passwd修改密碼或修改shadow文件。不過這一方法有個問題就是隻能經過長按關機鍵來強制關機,沒法使用「reboot」、「shutdown」、「init 0」等命令重啓或關機,輸入「exit」後直接進入相似於死機的狀態。注意到終端行頭爲「root@(none):/#」,即主機名爲none,這是略過init進程所致,但不知跟沒法正常關機重啓是否有關係。

4.用啓動光盤/U盤掛載根目錄修改

工具:一個Ubuntu桌面的啓動光盤或U盤

製做Ubuntu的啓動光盤/U盤的方法百度一下有不少,不細說了。用光盤/U盤啓動,進入Ubuntu桌面,打開終端,輸入命令

sudo -i

這裏不用輸入密碼就能直接得到root權限,查看Ubuntu的根目錄在哪一個分區:

fdisk -l

假設根目錄在/dev/sda4,則將其掛載到/mnt下(若是不肯定哪一個纔是根目錄的分區就把linux文件系統的分區一個一個試下):

mount /dev/sda4 /mnt

以後的步驟就跟上面的方法同樣了,進入/mnt/etc對shadow文件進行修改,重啓系統用passwd設新密碼。注意:這一方法使用的是啓動光盤/U盤上的試用系統的root,於是只能經過修改shadow文件刪除密碼字段這一途徑來重設密碼,直接用passwd修改密碼是沒有意義的。

總而言之,經過recovery mode和單用戶維護模式來重設密碼只能在系統原先沒設root密碼的狀況下才可行(估計應該有很多人沒有設root密碼的習慣),幹不掉root密碼,而繞過init進程直接調用bash或者藉助啓動光盤/U盤上的試用系統則能夠幹掉root密碼。

相關文章
相關標籤/搜索