如果我們不知道root密碼並且沒有機器的root存取權限,我們該如何更改root密碼呢?
答案1
以下是我能想到的幾種方法,從幹擾性最小到干擾性最大。
無需重啟
使用須藤:如果您有sudo
權限運行passwd
,您可以執行以下操作:
sudo passwd root
進入你的密碼,然後輸入 root 的新密碼兩次。完畢。
編輯文件:這在不太可能的情況下有效,您沒有完全sudo
訪問權限,但是您做有權編輯/etc/{passwd,shadow}
.打開/etc/shadow
,用sudoedit /etc/shadow
或 用sudo $EDITOR /etc/shadow
。將 root 的密碼欄位(第二個和第三個冒號之間的所有隨機字元:
)替換為您自己的使用者的密碼欄位。節省。本地的密碼和你的一樣。登入並將密碼更改為其他內容。
這些都是簡單的。
需要重新啟動
單一用戶模式:這是 Renan 剛剛解釋的。如果您可以存取 GRUB(或引導程式)並且可以編輯 Linux 命令列,那麼它就可以工作。如果您使用 Debian、Ubuntu 和其他一些系統,則它不起作用。某些引導程式配置需要密碼才能執行此操作,您必須知道該密碼才能繼續。無需再費周折:
- 重啟。
- 輸入啟動時密碼(如果有)。
- 輸入引導程式的選單。
- 如果單一使用者模式可用,請選擇該模式(Debian 稱之為「復原模式」)。
- 如果沒有,請執行 GRUB:
- 突出顯示您的正常啟動選項。
- 按e進入編輯模式。那裡可能會要求您輸入 GRUB 密碼。
kernel
反白以或開頭的行linux
。- 按e。
- 最後加上「單身」兩個字。 (別忘了前面加一個空格!)
- 按下Enter並啟動編輯的節。有些 GRUB 使用Ctrl- X,有些使用b.它在螢幕底部說明了它是哪一個。
您的系統將以單一使用者模式啟動。某些發行版此時不會要求您輸入 root 密碼(Debian 和基於 Debian 的發行版會要求您輸入 root 密碼)。你現在是 root 了。更改您的密碼:
mount / -o remount,rw
passwd # Enter your new password twice at the prompts
mount / -o remount,ro
sync # some people sync multiple times. Do what pleases you.
reboot
和reboot
,或者,如果您知道您的正常運行級別,請說telinit 2
(或無論是什麼)。
更換init
:表面上類似單一使用者模式技巧,指令基本上相同,但需要更多的命令列能力。您按照上面的方式啟動內核,但不是single
添加init=/bin/sh
.這將/bin/sh
代替 運行init
,並且會給你一個非常早期的外殼幾乎沒有便利設施。此時您的目標是:
- 掛載根卷。
- 快跑
passwd
吧。 - 使用命令更改密碼
passwd
。
根據您的特定設置,這些可能很簡單(與單一使用者模式的說明相同),也可能非常重要:載入模組、初始化軟體 RAID、開啟加密磁碟區、啟動 LVM 等等。如果沒有init
,您就不會運行守護進程或任何其他進程,而是運行/bin/sh
它的子進程,因此您幾乎只能靠自己了。您也沒有工作控制權,因此請小心您輸入的內容。其中一個丟失了cat
,如果您無法擺脫它,您可能必須重新啟動。
救援磁碟: 這個很簡單。啟動您選擇的救援磁碟。掛載您的根檔案系統。這個過程取決於您的捲的分層方式,但最終歸結為:
# do some stuff to make your root volume available.
# The rescue disk may, or may not do it automatically.
mkdir /tmp/my-root
mount /dev/$SOME_ROOT_DEV /tmp/my-root
$EDITOR /tmp/my-root/etc/shadow
# Follow the `/etc/shadow` editing instructions near the top
cd /
umount /tmp/my-root
reboot
顯然,$SOME_ROOT_DEV
救援磁碟分配給根檔案系統的區塊裝置名稱$EDITOR
是您最喜歡的編輯器(可能必須位於vi
救援系統上)。之後reboot
,讓機器正常開機; root 的密碼將是您自己的使用者的密碼。以 root 身分登入並立即變更。
其他方法
顯然,上述內容有無數種變化。它們都歸結為兩個步驟:
- 取得電腦的 root 存取權(第 22 條軍規 — 也是真正的技巧)
- 以某種方式更改 root 的密碼。
答案2
我認為這應該適用於任何發行版。
如果您可以從另一個系統(例如 Live CD)存取根分割區,您可以以 root 身分從那裡進行編輯/etc/shadow
;首先你必須chmod u+w shadow
。找到 的條目root
,它可能是第一個,看起來像這樣:
root:$6$asdG0[..etc...]ae/:15666:0:99999:7:::
刪除前兩個冒號之間的所有內容,最終得到:
root::15666:0:99999:7:::
然後chmod u-w shadow
。現在您可以重新啟動系統,root 將沒有密碼。您只需root
在登入提示字元處鍵入即可,它不會要求您輸入。然後您可以使用passwd
來設定一個。
要格外小心:
- 首先建立一個備份副本
/etc/shadow
。 - 在設定新密碼之前,請勿以 root 以外的任何人身分登入。這並不重要,但可以防止非特權惡意軟體製造某種類型的理論上的可能性冰雹瑪麗山口(「嘿,也許沒有 root 密碼......」)。在我看來,有點牽強。
答案3
從標籤來看,我認為您正在使用 RHEL,但此解決方案應該同樣適用於所有發行版。
如果忘記 root 密碼,您可以以單一使用者模式啟動並使用它來更改密碼。這種方法描述於紅帽逐步指南:
- 進入 GRUB 選單並按下e。
- 選擇以 開頭的行
kernel
,再次按e。 - 在此行的末尾放置
single
.然後按下ENTER並b退出它。
您最終會看到一個提示,您可以在其中輸入passwd root
並更改密碼。然後鍵入reboot
以重新啟動系統。