長時間不用的CentOS機器再次開機的時候忽然忘記了密碼,總不能就重裝一台吧,還有好多服務在機器上,於是決定重置root的密碼。
如果是已經開啟的機器,需要進行關閉,重新啟動。
在啟動選擇內核版本的時候按上下鍵,令畫面停住。

CentOS7每次會有兩個版本的內核供選擇,簡單的來說就是一個主內核版本,一個副內核版本,如果以后內核升級失敗無法使用新內核重啟時,可以通過這個界面選擇舊內核重啟進行修復。
言歸正傳,選擇好了內核之后,按下e鍵,進入編輯界面。

找到以linux16開頭的那一行,在行尾加上如下幾句話:
1、如果是物理機,添加:rd.break
2、如果是虛擬機,添加:rd.break console=tty0
這里我用的是虛擬機,所以添加rd.break console=tty0,如下圖所示:

然后按Ctrl+x進行啟動
進入shell環境之后,進行如下操作:
1、將根目錄重新掛載,模式可寫
switch_root:/# mount -o rw,remount /sysroot
2、變更目錄至根目錄下
switch_root:/# chroot /sysroot
3、更改密碼
sh-4.2# passwd
4、如果安裝的是中文系統,此時會出現亂碼,可以根據經驗直接輸入,也可輸入以下命令,當次變更語言為英語
sh-4.2# LANG=en_US
5、如果SELinux開啟需要更新SELinux上下文,只要創建下面的文件即可
sh-4.2# touch /.autorelabel
6.退出重啟
sh-4.2# exit
switch_root:/# exit
詳細方法如下:

如果需要更新SELinux上下文,則重啟的時間會比較長,有時系統沒有提示,不要慌張,系統並沒有崩潰。
重啟之后即可用新密碼進行登錄了。
