一、摘要
centos的root密碼忘記了怎么辦?通常有兩種情況:一種是還處於登陸ROOT的過程中,突然想不起來密碼了,這種情況我們可以嘗試對ROOT密碼進行破解;另一種是退出ROOT忘記密碼登陸不上,這種情況我們就要選擇對ROOT密碼進行修改。
二、破解密碼的情況
1、shadow文件解析知識點
/etc/shadow(保存用戶密碼的文件)
文件里面的數據是加密的{加密后的口令密碼}的格式為 $id$salt$encrypted
id為1時,采用md5算法加密
id為5時,采用SHA256算法加密
id為6時,采用SHA512算法加密
salt為鹽值,是對密碼進行hash的一個干擾值
encrypted為散列值
2、John the Ripper
John the Ripper是一個流行的口令破解工具,它支持Windows和Linux台,是一個開源軟件。(也有收費版本)
官方地址:http://www.openwall.com/john 可以復制下載鏈接使用wget下載。
安裝John the Ripper:
wget https://www.openwall.com/john/k/john-1.9.0.tar.gz --no-check-certificate
tar -xvf john-1.9.0.tar.gz(解壓)
cd john-1.9.0/src/
make clean linux-x86-64(make clean 自己的操作系統)
cd ../run/
破解
password.txt和john.pot都在run下
./unshadow /etc/passwd /etc/shadow > password.txt
將shadow文件導入password.txt,也可以直接復制shadow文件中所有字段
./john password.txt #對散列值進行破解
cat john.pot #查看破解結果
john工具對於同一個shadow文件只會進行一次爆破,如果第二次執行john shadow是不會得到結果的,只會得到如下輸出。
點擊查看代碼
Warning: detected hash type "md5crypt", but the string is also recognized as "md5crypt-long"
Use the "--format=md5crypt-long" option to force loading these as that type instead
Using default input encoding: UTF-8
Loaded 1 password hash (md5crypt, crypt(3) $1$ (and variants) [MD5 128/128 AVX 4x3])
No password hashes left to crack (see FAQ)
三、需要修改ROOT密碼的情況
1.開機輸入e 編輯
首先,啟動系統,進入開機界面,在界面中按“e”進入編輯界面,如圖
2.輸入 init = /bin/sh
進入編輯界面,使用鍵盤上的上下鍵把光標往下移動,找到以“Linux16”開頭內容所在的行數,在行的最后面輸入:init=/bin/sh,如圖
如果不確定系統是否開啟了Selinux或者剛裝完沒有修改過的系統,則最好用下面的方法解決:既在以字符串“Linux16”開頭的行,將光標移動到該行的結尾,然后輸入“init=/bin/bash enforcing=0”(前者作用讓系統登錄后加載bash解釋器,后者是且關閉Selinux)
3.ctrl + x 單用戶模式
輸入完成后,直接按快捷鍵:Ctrl+x 進入單用戶模式
4.輸入mount -o remount,rw/
接着,在光標閃爍的位置輸入:mount -o remount,rw/ (注意:各個單詞之間有空格),完成后按鍵盤間的回車。如圖
“mount -o rw,remount /”命令是重新掛載根目錄為可寫狀態(rw表示可寫,remount是重新掛載),在單用戶模式下默認根文件系統是處於只讀狀態。
5.passwd修改密碼
在新的一行最后面輸入:passwd,完成后按鍵盤的回車鍵。輸入密碼,然后再次確認密碼即可(密碼最好是8位以上,但不是必須的),密碼修改完成后,會電視passwd.....的樣式,說明密碼修改成功
6.輸入 touch /.autorelabel
接着,在鼠標閃爍的位置,輸入:touch /.autorelabel(注意:touch與 /后面有一個空格),完成后按鍵盤的回車鍵
注意:如果是系統的SELinux處於開啟狀態,並且前文修改內核選項時,沒有增加“enforcing=0”,則此處需要多執行一條“touch /.autorelabel”命令以便在下次系統引導前重新標記系統中的所有相關文件,因為在SELinux開啟時,修改root密碼時修改password文件會導致SELinux安全上下文報錯,如果前文修改內核選項時,已增加“enforcing=0”,那么在修改密碼文件時,Selinux是關閉狀態,因此,就不需要執行“touch /.autorelabel”命令了。
7.輸入exec /sbin/init密碼生效
繼續在光標閃爍的位置中,輸入:exec /sbin/init(注意:exec與/之間有一個空格),完成后按鍵盤的回車鍵,等待系統自動修改密碼(時間可能有點長),完成后,系統會自動重啟,新的密碼生效。
配置完后,執行exec /sbin/init命令重啟系統,注意,此時,無法使用其它重啟命令