1. 程式人生 > >Centos7.4 修改Root密碼

Centos7.4 修改Root密碼

重新掛載 block 環境 權限 由於 完成 centos7 定位 res

Centos7.4 修改Root密碼

1.修改思路

systemd 的管理機制中,rescure 模式和 emeryency 模式是無法直接取得 root 權限的,需要使用 root 密碼才能進入 rescure 和 emeryency 環境。所以我們需要通過其他方式來設置 root 密碼。我們可以為內核的啟動指定 "rd.break" 參數,從而讓系統在啟動的早期停下來,此時我們可以通過使用 root 權限並結合 chroot 命令完成設置 root 密碼的操作。
下面我們一起來看具體的操作過程。

在系統啟動過程中進入開機菜單時按下字母鍵 e 進程開機菜單的編輯模式:

技術分享圖片

這就是系統的開機菜單,按下 e 後進入編輯界面:
技術分享圖片

找到以 "linux16 /vmlinuz-" 開頭的行。如果默認沒有看到該行,需要按向下鍵把它滾動出來。
然後定位到該行結尾處,輸入一個空格和字符串 "rd.break",如下圖所示:
技術分享圖片

接著按下 ctrl + x 以該設置繼續啟動,啟動過程中操作系統會停下來,這是系統啟動過程中的一個非常早的時間點:
技術分享圖片

所以系統的根目錄還掛載在 RAM disk 上(就是內存中的一個文件系統),我們可以通過 mount 命令檢查系統當前掛載的文件系統,下面是我們比較關心的兩條:

技術分享圖片

上圖中 mount 命令輸出的第一行說明此時的根目錄在一個 RAM disk 中, 即 rootfs。

圖中輸出的第二行說明我們的文件系統此時被掛載到了 /sysroot 目錄,並且是只讀的模式:

/dev/mapper/centos-root on /sysroot type xfs (ro,relatime,attr2,inode64,noquota)

而在我們正常登陸系統的情況下,系統根目錄的掛載情況如下:

/dev/mapper/centos-root on / type xfs (rw,relatime,seclabel,attr2,inode64,noquota)

該時間點的最大優勢是我們具有 root 權限!所以讓我們開始設置新的 root 密碼吧。

先通過下面的命令把 /sysroot 重新掛載為可讀寫的模式:

switch_root:/# mount -o remount,rw /sysroot

然後用下面 chroot 命令把根目錄切換到我們原來的環境中:

switch_root:/#?chroot?/sysroot

用下面的命令為 root 用戶設置新的密碼:

sh-4.2# echo "new_root_pw" | passwd --stdin root

接下來還要處理 SELinux 相關的問題。由於當前的環境中 SELinux 並未啟動,所以我們對文件的修改可能造成文件的 context 不正確。為了確保開機時重新設定 SELinux context,必須在根目錄下添加隱藏文件 .autorelabel:

sh-4.2# touch /.autorelabel

最後從 chroot 中退出,並重啟系統:

sh-4.2# exit
switch_root:/# reboot

重新進入登陸界面時就可以使用剛才設置的密碼以 root 登陸了!

Centos7.4 修改Root密碼