Method 1:
1、重新啟動或開啟CentOS7系統,在選擇進入系統的Grub菜單界面如下圖1-1,根據提示按“e”小寫字母進入編輯界面,如下圖1-2所示:
圖1-1 CentOS7.6系統Grub菜單界面
2、然后,要按方向鍵向下鍵(否則可能看不到想要找的行),找到以字符串“Linux16”開頭的行,將光標移動到該行的結尾,然后輸入“init=/bin/bash”,如下圖1-2所示:
圖1-2 CentOS7.6系統Grub菜單進入編輯界面配置圖
特別說明:
如果不確定系統是否開啟了Selinux或者剛裝完沒有修改過的系統,則最好用下面的方法解決:既在以字符串“Linux16”開頭的行,將光標移動到該行的結尾,然后輸入“init=/bin/bash enforcing=0”(前者作用讓系統登錄后加載bash解釋器,后者是且關閉Selinux),如下圖1-3所示:
圖1-3 CentOS7.6系統Grub菜單編輯界面增加關閉Selinux配置圖
3、配置完成后,根據界面下面的英文提示按“Ctrl-x”組合鍵以單用戶模式啟動Linux如下圖1-4所示:
圖1-4單用戶模式界面重新掛載修改密碼圖界面
特殊說明:
1)圖中的“mount-o rw,remount/”命令是重新掛載根目錄為可寫狀態(rw表示可寫,remount是重新掛載),在單用戶模式下默認根文件系統是處於只讀狀態。
2)也可以在增加內核參數時,把以字符串“Linux16”開頭的行中間部分的ro參數改為rw,則可以替代繁瑣的“mount-o rw,remount /”命令,修改方法如下圖1-5所示:
圖1-5修改內核參數ro為rw配置圖
4、配置完后,執行exec /sbin/init命令重啟系統,注意,此時,無法使用其它重啟命令。特殊強調:如果是系統的SELinux處於開啟狀態,並且前文修改內核選項時,沒有增加“enforcing=0”,則此處需要多執行一條“touch /.autorelabel”命令以便在下次系統引導前重新標記系統中的所有相關文件,因為在SELinux開啟時,修改root密碼時修改password文件會導致SELinux安全上下文報錯,如果前文修改內核選項時,已增加“enforcing=0”,那么在修改密碼文件時,Selinux是關閉狀態,因此,這里就不需要執行“touch /.autorelabel”命令了。
圖1-6處理SELinux以及重啟系統界面
5、重啟系統后驗證修改后的密碼是否能登錄,出現如下圖1-5 所示,表示密碼修改並登錄成功。
圖1-7登錄界面圖
注意:為何需要/.autorelabel:系統是沒有SELinux 的,而你剛剛更改了/etc/shadow (因為改密碼啊!), 所以『這個檔案的SELinux 安全本文的特性將會被取消』喔!如果你沒有讓系統於開機時自動的回復SELinux 的安全本文, 你的系統將產生『無法登入』的問題(在SELinux 為Enforcing 的模式下!)加上
/.autorelabel 就是要讓系統在開機的時候自動的使用預設的SELinux type 重新寫入SELinux 安全本文到每個檔案去!。
Method 2:
- 修改內核啟動參數
init=/sysroot/bin/bash
-
chroot /sysroot
-
mount -o remount,rw /
-
echo 123 | passwd --stdin root
touch /.autorelabel -
exit reboot
Method 3:
- 修改內核啟動參數
rw rd.break
-
chroot /sysroot
-
mount -o remount,rw /
-
touch /.autorelabel echo 111 | passwd --stdin root
-
exit reboot