前言
-
前段時間由於長時間沒有使用虛擬機里面的一個操作系統,導致密碼記得不是太清,登錄不進去。今天想起還是做個小記錄,以便以后參考。
-
再一個是,當時網上也搜了很多解決問題的博客,但大部分都是同一個博客內容,沒有多大的參考價值,所以導致當時試了很久才成功。所以當自己出問題了,還是先要把自身的所犯的錯誤找出來,這樣搜索問題解決方法時才會游刃有余!
操作環境
-
主機為window10(關系不大)
-
虛擬機為vmware15pro(關系不大)
-
操作系統為RedHat7(有一定的影響)
個人解決步驟
第一步
在圖片中的界面按下鍵盤“e”鍵,然后在linux16這一行最后面添加一行內容
rw rd.break init=/sysroot/bin/sh
網上大多數linux16那一行參數如圖所示
但是,由於我用的不同版本的鏡像,所以我的解決方法如圖

找到linux16這一行起始地方,然后按end鍵到這一行最后,再加空格,然后添加這一條語句
rw rd.break init=/sysroot/bin/sh
第二步
按下 ctrl+x 進入命令行
第三步
輸入以下命令:
1.輸入 mount
2. 查看是否為“rw”,如果沒有則輸入 mount –o remount,rw /sysroot

3. 切換路徑 輸入 chroot /sysroot

4. 輸入 passwd 修改root用戶密碼 ;此時會給你提一個警告,是因為密碼強度太弱了,我們目前個人用的話不用管

5. 輸入touch /.autorelabel
6. 輸入 exit 退出
7. 輸入 reboot 或者不用exit退出,直接輸入 exec /sbin/reboot
最后,需要注意的是,可能部分人的問題,最后命令輸完后無法自動重啟,這時候你可以強行關機並且重啟
網上解決步驟
CentOS 7&RHEL 7進入單用戶方式和重置密碼方式發生了較大變化,GRUB由b引導變成了ctrl+x引導。
重置密碼主要有rd.break和init兩種方法
rd.break方法:
1、啟動的時候,在啟動界面,相應啟動項,內核名稱上按“e”;
2、進入后,找到linux16開頭的地方,按“end”鍵到最后,輸入rd.break,按ctrl+x進入;
3、進去后輸入命令mount,發現根為/sysroot/,並且不能寫,只有ro=readonly權限;
4、mount -o remount,rw /sysroot/,重新掛載,之后mount,發現有了r,w權限;
5、chroot /sysroot/ 改變根;
(1)echo RedHat|passwd –stdin root 修改root密碼為redhat,或者輸入passwd,交互修改;
(2)還有就是先cp一份,然后修改/etc/shadow文件
6、touch /.autorelabel 這句是為了selinux生效
7、ctrl+d 退出
8、然后reboot
至此,密碼修改完成
init方法:
1. 啟動系統,並在GRUB2啟動屏顯時,按下e鍵進入編輯模式。
2. 在linux16/linux/linuxefi所在參數行尾添加以下內容:init=/bin/sh
3. 按Ctrl+x啟動到shell。
4. 掛載文件系統為可寫模式:mount –o remount,rw /
5. 運行passwd,並按提示修改root密碼。
6. 如何之前系統啟用了selinux,必須運行以下命令,否則將無法正常啟動系統:touch /.autorelabel
7. 運行命令exec /sbin/init來正常啟動,或者用命令exec /sbin/reboot重啟
最后
網上的方法中init方法我試過,但另一種並未試過,但是從解決問題的過程中來看,兩者區別不大;並且要注意以上僅僅是本人的解決步驟,有可能由於各種問題,每個人解決過程中會遇到不一樣的錯誤,當然和我的一樣更好,直接可以解決,如果不一樣請僅當參考使用!
一般按照以上我的個人步驟解決,基本不會出多余的問題,唯一的問題就是可能最后要自己強行重啟!
如果root用戶可以登錄,那種修改密碼的方式就不在這記錄了,主要找到passwd路徑基本就可以解決了!



