V10-SP1 2503無(wú)法登錄?救援模式重置密碼全流程)
前兩天處理過(guò)一臺(tái)麒麟桌面系統(tǒng)V10-SP1 2503的機(jī)器情況很典型用戶調(diào)崗三個(gè)月交接單上只寫了初始密碼試了幾次直接被登錄策略鎖住。這臺(tái)機(jī)器還不能重裝里面有驗(yàn)收過(guò)的項(xiàng)目文件和幾個(gè)授權(quán)軟件重裝意味著重新申請(qǐng)激活、重新配環(huán)境沒(méi)有兩三天根本下不來(lái)。真正穩(wěn)妥的辦法就是救援模式——我經(jīng)常跟運(yùn)維同事說(shuō)只要你不格式化盤、不刪系統(tǒng)分區(qū)密碼問(wèn)題在救援模式下就是個(gè)十幾分鐘的活。這篇就把V10-SP1 2503上怎么進(jìn)入救援模式、怎么掛載系統(tǒng)、怎么重置用戶密碼的完整流程寫透順帶把那些容易翻車的細(xì)節(jié)一起說(shuō)清楚。適合桌面運(yùn)維、IT管理員以及所有不想因?yàn)橐粋€(gè)密碼丟掉整臺(tái)機(jī)器數(shù)據(jù)的普通用戶。1. 什么情況下需要走救援模式這條重路1.1 找回密碼的三個(gè)常規(guī)入口很多人一聽說(shuō)重置密碼就想著重裝系統(tǒng)其實(shí)在Linux系桌面上至少有三條路可以走救援模式只是其中一條。如果你的密碼忘了但當(dāng)前系統(tǒng)里還有一個(gè)能正常登錄、且有sudo權(quán)限的普通用戶那根本不用進(jìn)入救援模式。終端里一條命令就解決sudo passwd 目標(biāo)用戶名這是最輕量的入口適合自己忘了密碼但同事還有一個(gè)管理員賬號(hào)的情況。第二種情況是你只忘了普通用戶的密碼但還記得root密碼那么登錄root后用passwd 用戶名一樣能改。真正麻煩的是第三種所有能用的登錄憑據(jù)全丟了系統(tǒng)進(jìn)不去也沒(méi)有任何可執(zhí)行sudo的活賬號(hào)。這時(shí)候才需要走單用戶模式或者救援模式。單用戶模式靠的是GRUB啟動(dòng)菜單救援模式靠的是U盤里的修復(fù)環(huán)境。這兩種方案后面分別講。1.2 為什么保留系統(tǒng)比重裝劃算我見過(guò)不少同事密碼忘了第一反應(yīng)是重裝吧。如果是家里一臺(tái)沒(méi)有任何重要數(shù)據(jù)的機(jī)器重裝確實(shí)五分鐘。但企業(yè)環(huán)境里完全不是這么回事。麒麟桌面系統(tǒng)的價(jià)值很大程度在于已經(jīng)適配好的業(yè)務(wù)軟件、內(nèi)網(wǎng)認(rèn)證配置、打印機(jī)驅(qū)動(dòng)、以及一堆散落在用戶目錄和歷史記錄里的項(xiàng)目資料。重裝系統(tǒng)后軟件授權(quán)要重新申請(qǐng)環(huán)境變量要重新配業(yè)務(wù)系統(tǒng)的CA證書要重新導(dǎo)數(shù)據(jù)庫(kù)客戶端要重新調(diào)。更別說(shuō)有些數(shù)據(jù)如果不提前備份重裝之后就是永久丟失。而在救援模式下重置密碼本質(zhì)上只是修改/etc/shadow文件里某個(gè)用戶的密碼字段。系統(tǒng)分區(qū)里的其他文件一個(gè)都不會(huì)被動(dòng)程序配置、用戶數(shù)據(jù)、日志文件全部原樣保留。這就是救援模式最大的價(jià)值用最小代價(jià)解決登錄問(wèn)題而不是把整臺(tái)機(jī)器推倒重來(lái)。1.3 先確認(rèn)是密碼問(wèn)題而不是系統(tǒng)異常這是我最想提醒的一點(diǎn)。我在網(wǎng)上經(jīng)??吹接腥怂痒梓胂到y(tǒng)桌面路徑變了遠(yuǎn)程連不上鎖屏提示休息之類的關(guān)鍵詞然后懷疑是不是密碼壞了。這些里面有相當(dāng)一部分其實(shí)跟密碼無(wú)關(guān)。比如桌面路徑變了多半是用戶主目錄被遷移過(guò)或者HOME環(huán)境變量丟了導(dǎo)致桌面指向了一個(gè)空目錄。再比如遠(yuǎn)程連接不上可能是SSH服務(wù)沒(méi)起來(lái)也可能是遠(yuǎn)程桌面服務(wù)異常和你本地密碼沒(méi)有關(guān)系。還有的鎖屏界面提示你已休息那只是屏保策略在起作用并不是賬戶被鎖定。判斷標(biāo)準(zhǔn)很簡(jiǎn)單如果登錄界面能出現(xiàn)、能輸入密碼但密碼不對(duì)那就是密碼問(wèn)題如果連密碼輸入框都不出現(xiàn)或者輸入密碼后立刻報(bào)錯(cuò)回到登錄界面那要先懷疑賬戶鎖定、顯示管理器異常、PAM配置問(wèn)題甚至磁盤故障。動(dòng)手走救援模式之前先花兩分鐘把故障現(xiàn)象看清楚能省掉很多無(wú)用功。2. 動(dòng)手前先搞清楚三件事分區(qū)、加密與引導(dǎo)方式2.1 摸清磁盤分區(qū)和根目錄位置進(jìn)入救援模式后要手動(dòng)掛載根分區(qū)可如果不知道根分區(qū)在哪一切白搭。所以動(dòng)手之前哪怕只能憑記憶也要先搞清楚這臺(tái)機(jī)器當(dāng)初是怎么分區(qū)的。如果系統(tǒng)還能進(jìn)命令行直接在正常系統(tǒng)里執(zhí)行l(wèi)sblk -f blkid記下根分區(qū)對(duì)應(yīng)的設(shè)備和UUID。通常麒麟桌面默認(rèn)分區(qū)是/boot一個(gè)分區(qū)根分區(qū)一個(gè)分區(qū)可能還有單獨(dú)的/home。根分區(qū)的掛載點(diǎn)標(biāo)識(shí)是/文件系統(tǒng)一般是ext4。如果系統(tǒng)已經(jīng)進(jìn)不去了在開機(jī)自檢畫面里也能大概判斷或者直接進(jìn)救援模式后用lsblk -f現(xiàn)查。麻煩的是救援環(huán)境下設(shè)備盤符可能會(huì)變所以我建議以UUID為準(zhǔn)不要憑系統(tǒng)肯定在sda2這種記憶硬猜。具體原因在第6章詳細(xì)展開。2.2 檢查是否有LUKS磁盤加密這是最容易踩的坑。麒麟桌面安裝的時(shí)候有一個(gè)全盤加密選項(xiàng)一旦選了整個(gè)根分區(qū)會(huì)被LUKS加密。這種情況下你光靠掛載/dev/sda2是沒(méi)有用的設(shè)備上讀出來(lái)的全是密文。遇到加密盤得先用cryptsetup把加密容器打開cryptsetup luksOpen /dev/sda2 cryptroot執(zhí)行后系統(tǒng)會(huì)要求輸入加密口令這個(gè)口令是安裝系統(tǒng)時(shí)設(shè)置的跟用戶密碼不是一回事。輸對(duì)之后會(huì)生成一個(gè)/dev/mapper/cryptroot設(shè)備這才是可以掛載的根文件系統(tǒng)。所以動(dòng)手前如果懷疑機(jī)器開過(guò)全盤加密先去BIOS里看啟動(dòng)盤符或者回憶一下安裝流程里有沒(méi)有設(shè)置過(guò)卷加密口令。如果完全不記得那大概率沒(méi)加密但多留個(gè)心眼總不會(huì)錯(cuò)。2.3 確認(rèn)UEFI還是Legacy引導(dǎo)引導(dǎo)方式?jīng)Q定你后面進(jìn)GRUB的操作路徑。UEFI機(jī)器一般有Secure Boot部分情況會(huì)攔截第三方啟動(dòng)U盤導(dǎo)致救援U盤根本起不來(lái)。這時(shí)候得先到BIOS里臨時(shí)關(guān)掉Secure Boot或者把啟動(dòng)模式切換到Compatibility Support Module。查看方式也很簡(jiǎn)單正常系統(tǒng)下執(zhí)行l(wèi)s /sys/firmware/efi有輸出說(shuō)明是UEFI啟動(dòng)沒(méi)有輸出就是傳統(tǒng)Legacy引導(dǎo)。引導(dǎo)方式不影響后續(xù)修改密碼的命令但UEFI機(jī)器在制作U盤時(shí)要注意分區(qū)表格式Legacy機(jī)器反而更省心。3. 方案一用安裝U盤進(jìn)入救援模式重設(shè)密碼穩(wěn)妥3.1 制作麒麟V10啟動(dòng)U盤這個(gè)方案適合手頭有系統(tǒng)鏡像和U盤的情況。做準(zhǔn)備時(shí)先拿到麒麟V10-SP1 2503的ISO鏡像然后在Linux機(jī)器上直接用dd寫入sudo dd ifKylin-Desktop-V10-SP1-2503.iso of/dev/sdb bs4M statusprogress sync注意of后面必須寫整塊盤符比如/dev/sdb不能寫成/dev/sdb1否則只會(huì)寫到一個(gè)分區(qū)U盤無(wú)法引導(dǎo)。如果你身邊只有Windows機(jī)器可以用Rufus或UltraISO寫入模式選DD鏡像或Raw格式。關(guān)鍵是確保U盤以可引導(dǎo)形式存在不是當(dāng)一個(gè)普通U盤去拷貝文件。鏡像版本最好跟目標(biāo)系統(tǒng)一致但考慮到救援模式用的只是內(nèi)核和基礎(chǔ)工具版本不完全一致一般也能用。我甚至拿舊版V10的U盤救過(guò)新版系統(tǒng)的密碼只要內(nèi)核能識(shí)別ext4和對(duì)應(yīng)文件系統(tǒng)就行。3.2 從U盤引導(dǎo)并進(jìn)入救援模式ShellU盤插好開機(jī)進(jìn)BIOS的Boot Menu選擇U盤啟動(dòng)。麒麟的引導(dǎo)界面出來(lái)后通常能看到安裝系統(tǒng)救援模式選項(xiàng)選救援模式或Rescue mode字面不同版本略有差異但核心流程一致。接下來(lái)安裝器會(huì)讓你選語(yǔ)言、鍵盤布局然后會(huì)開始掃描硬盤上已有的Linux系統(tǒng)。如果檢測(cè)到了它會(huì)提示發(fā)現(xiàn)Linux系統(tǒng)是否掛載到/mnt選繼續(xù)。如果沒(méi)檢測(cè)到也不用手足無(wú)措直接選打開Shell進(jìn)入手動(dòng)流程。我遇到過(guò)一個(gè)情況救援模式掃描系統(tǒng)時(shí)卡在掛載根文件系統(tǒng)失敗原因是之前分了/boot和/兩個(gè)分區(qū)但/boot用了XFS掃描器識(shí)別出問(wèn)題了。這種時(shí)候不要糾結(jié)退出到Shell手動(dòng)掛載。3.3 掛載根分區(qū)并chroot假設(shè)根分區(qū)是/dev/sda2進(jìn)入Shell后先確認(rèn)lsblk -f然后逐步掛載mkdir /mnt/sysroot mount /dev/sda2 /mnt/sysroot mount --bind /dev /mnt/sysroot/dev mount --bind /proc /mnt/sysroot/proc mount --bind /sys /mnt/sysroot/sys chroot /mnt/sysroot這里有個(gè)細(xì)節(jié)必須理解chroot進(jìn)去之后你看到的是目標(biāo)系統(tǒng)原來(lái)的/目錄但內(nèi)核相關(guān)的虛擬文件系統(tǒng)/proc、/sys、/dev仍然來(lái)自救援環(huán)境。如果不做mount --bind這三步直接在里面執(zhí)行passwd大概率會(huì)因?yàn)闊o(wú)法讀取設(shè)備節(jié)點(diǎn)或系統(tǒng)狀態(tài)而報(bào)錯(cuò)。如果根分區(qū)是LUKS加密的掛載前先解鎖cryptsetup luksOpen /dev/sda2 cryptroot mount /dev/mapper/cryptroot /mnt/sysroot三個(gè)虛擬目錄同樣要綁過(guò)去。3.4 用passwd修改目標(biāo)用戶密碼chroot成功之后當(dāng)前shell的根目錄已經(jīng)變成了麒麟系統(tǒng)真正的根目錄此時(shí)執(zhí)行passwd就是在修改目標(biāo)系統(tǒng)里的用戶密碼passwd yangchen系統(tǒng)會(huì)提示輸入兩次新密碼。如果提示BAD PASSWORD說(shuō)明新密碼沒(méi)通過(guò)系統(tǒng)的密碼復(fù)雜度檢查換一個(gè)包含大小寫、數(shù)字和特殊符號(hào)的密碼即可。這里有個(gè)認(rèn)知點(diǎn)passwd修改的是/etc/shadow文件中的哈希字段。哪怕用戶當(dāng)時(shí)正處于賬戶被鎖定或密碼已過(guò)期狀態(tài)只要你在root權(quán)限下重新設(shè)置密碼鎖定期和過(guò)期標(biāo)記也會(huì)一并被清除。所以救援模式重置密碼等于把賬戶狀態(tài)一起拉回正常。如果你連用戶名都不記得可以先看/etc/passwdcat /etc/passwd | grep home帶/home目錄且UID大于1000的一般是真實(shí)用戶。3.5 退出救援環(huán)境并重啟密碼改完之后不要直接拔U盤按順序退出exit umount /mnt/sysroot/dev umount /mnt/sysroot/proc umount /mnt/sysroot/sys umount /mnt/sysroot rebootreboot之前記得把U盤拔掉否則可能又進(jìn)到安裝界面。重啟后系統(tǒng)會(huì)正常進(jìn)入中文登錄界面用新密碼就能登錄了。4. 方案二不拆機(jī)直接用GRUB單用戶模式快4.1 在GRUB菜單里修改內(nèi)核啟動(dòng)參數(shù)這個(gè)方法不需要U盤不需要拆機(jī)前提是機(jī)器能進(jìn)GRUB啟動(dòng)菜單。麒麟桌面默認(rèn)的GRUB菜單停留時(shí)間很短重啟的時(shí)候一直按住ShiftLegacy模式或反復(fù)按EscUEFI模式就能把菜單調(diào)出來(lái)。在GRUB菜單上用上下鍵選中當(dāng)前要啟動(dòng)的內(nèi)核按e進(jìn)入編輯界面。找到以linux開頭的那一行后面會(huì)跟著vmlinuz-... rootUUID... ro quiet splash之類的內(nèi)容。在這行末尾加一個(gè)參數(shù)single也可以換成1效果相同。加完之后按CtrlX或按F10啟動(dòng)。4.2 讓根文件系統(tǒng)可寫進(jìn)入單用戶模式后系統(tǒng)通常會(huì)把根文件系統(tǒng)掛載成只讀狀態(tài)這是為了保證數(shù)據(jù)安全。但只讀狀態(tài)下是沒(méi)法寫/etc/shadow的先重新掛載為可寫mount -o remount,rw /這里有個(gè)坑如果你看不到shell提示符或者屏幕上卡在一個(gè)空白的登錄請(qǐng)求不要慌按一下回車一般會(huì)出現(xiàn)rootxxx:~#。如果沒(méi)有root密碼也進(jìn)來(lái)了說(shuō)明系統(tǒng)配置允許直接進(jìn)入維護(hù)shell要是被要求輸入root密碼而你又不知道那就用下面的后備手段。4.3 修改密碼并修復(fù)卡住的場(chǎng)景Shell拿到手且根目錄可寫之后直接執(zhí)行passwd 用戶名比如passwd yangchen設(shè)置完新密碼執(zhí)行exec /sbin/init或者直接reboot -f重啟。如果單用戶模式因?yàn)楦鞣N原因進(jìn)不去還有一個(gè)更底層的辦法回到GRUB編輯界面在linux那一行里把原有的ro改成rw然后在行尾追加參數(shù)init/bin/bash這個(gè)參數(shù)的意思是跳過(guò)systemd初始化內(nèi)核啟動(dòng)后直接拉起bash。啟動(dòng)完成后你會(huì)直接看到一個(gè)root shell而且因?yàn)閞o已經(jīng)改成rw根文件系統(tǒng)默認(rèn)就是可寫的。此時(shí)立即執(zhí)行mount -o remount,rw / passwd 用戶名這種方式事實(shí)上繞過(guò)了所有登錄機(jī)制是最后一根稻草。它同樣能修復(fù)那些連systemd都起不來(lái)的系統(tǒng)狀態(tài)。4.4 單用戶模式進(jìn)不去的后備手段單用戶模式和init/bin/bash都依賴GRUB菜單能正常操作。如果機(jī)器連GRUB菜單都進(jìn)不去比如引導(dǎo)損壞或者開機(jī)能進(jìn)系統(tǒng)但循環(huán)回到登錄頁(yè)那方案二就不適用了必須回到方案一用U盤里的救援環(huán)境來(lái)修。還有一種情況GRUB啟動(dòng)后卡在一個(gè)占坑界面只有個(gè)閃爍的光標(biāo)。這通常是圖形驅(qū)動(dòng)或者磁盤順序出了問(wèn)題。我會(huì)先等一下確認(rèn)到底是內(nèi)核崩潰還是單純沒(méi)有顯示如果等了五分鐘還在原地就直接用U盤方案不要反復(fù)重啟硬試。5. 重置完成后的收尾與常見翻車點(diǎn)5.1 登錄驗(yàn)證與密鑰環(huán)問(wèn)題密碼改完了第一件事是正常重啟、正常登錄驗(yàn)證不是改成功但登錄仍然被拒。如果登錄界面能進(jìn)、輸入新密碼后立刻回到登錄界面多半是賬戶鎖或者PAM緩存的問(wèn)題。剛才說(shuō)的passwd重置通常已經(jīng)清掉了鎖定期但如果系統(tǒng)中配置了faillock等鎖定機(jī)制可能需要額外清除鎖定狀態(tài)faillock --user 用戶名 --reset另外登錄后如果彈窗提示密鑰環(huán)無(wú)法解鎖別慌。GNOME Keyring默認(rèn)用舊密碼加密的密鑰環(huán)文件來(lái)保存系統(tǒng)密鑰和網(wǎng)絡(luò)憑據(jù)。密碼改了舊密鑰環(huán)就打不開了。解決辦法是清理掉舊的密鑰環(huán)數(shù)據(jù)rm -rf ~/.local/share/keyrings/*然后重新登錄系統(tǒng)會(huì)基于當(dāng)前密碼重新初始化一個(gè)空密鑰環(huán)。代價(jià)是原先保存在系統(tǒng)鑰匙圈里的WIFI密碼、瀏覽器密碼等會(huì)被清空這在密碼重置場(chǎng)景下是可以接受的。5.2 密碼復(fù)雜度把新密碼彈回來(lái)的處理麒麟桌面默認(rèn)啟用了pam_pwquality密碼強(qiáng)度策略。你在救援模式里設(shè)置密碼時(shí)如果被彈回說(shuō)明新密碼不含大小寫、數(shù)字、特殊符號(hào)或者長(zhǎng)度不夠。最省事的方案是設(shè)置一個(gè)復(fù)雜度達(dá)標(biāo)的密碼服務(wù)器密碼認(rèn)證通常要求至少8位。如果是批量運(yùn)維場(chǎng)景確實(shí)需要簡(jiǎn)化密碼可以在chroot或單用戶模式下臨時(shí)調(diào)整策略參數(shù)。修改/etc/security/pwquality.conf里的minlen和dcredit等選項(xiàng)或者臨時(shí)注釋掉/etc/pam.d/common-password中的pam_pwquality.so那行改完之后記得恢復(fù)原狀。個(gè)人用戶不太建議走這條路復(fù)雜度策略本來(lái)就是保護(hù)你的。5.3 指紋與人臉綁定需要重新錄入不少麒麟桌面設(shè)備配了指紋識(shí)別或人臉識(shí)別。重置密碼之后部分版本的生物識(shí)別服務(wù)會(huì)根據(jù)用戶密碼生成校驗(yàn)密鑰導(dǎo)致指紋驗(yàn)證雖然能喚醒設(shè)備但無(wú)法解鎖會(huì)話。處理方法很直接登錄后用普通密碼進(jìn)去打開控制中心的賬號(hào)設(shè)置把舊的指紋和人臉數(shù)據(jù)刪掉重新錄入一次。這樣新的生物信息會(huì)和重置后的密碼重新綁定。這個(gè)細(xì)節(jié)常規(guī)教程里很少寫但它是重置密碼后最常見的為什么指紋突然失效的原因。5.4 磁盤加密主目錄這類隱藏問(wèn)題如果你安裝系統(tǒng)時(shí)不僅加密了根分區(qū)還單獨(dú)給/home目錄做了加密那重置用戶密碼只能解決登錄問(wèn)題解決不了進(jìn)入系統(tǒng)后打不開原主目錄的問(wèn)題。主目錄加密的密鑰是獨(dú)立管理的和用戶登錄密碼不直接掛鉤。碰到這種情況你需要的是當(dāng)初設(shè)置的加密口令或恢復(fù)密鑰單純重設(shè)登錄密碼無(wú)法解鎖數(shù)據(jù)。遇到這類機(jī)器我的建議是一旦確認(rèn)了加密方式先看有沒(méi)有備份的恢復(fù)密鑰文件。如果沒(méi)有切不可刪掉任何目錄去強(qiáng)行繞過(guò)加密那會(huì)造成數(shù)據(jù)永久丟失。這也是為什么我在第2章要你提前確認(rèn)是否有LUKS加密。6. 我踩過(guò)的坑和幾條實(shí)用的救援建議6.1 chroot之后passwd報(bào)錯(cuò)的三種典型情況我第一次用救援模式重置密碼時(shí)chroot進(jìn)去執(zhí)行passwd直接報(bào)錯(cuò)cannot change password: Authentication token manipulation error。排查了半天發(fā)現(xiàn)是沒(méi)掛/proc導(dǎo)致passwd在讀取系統(tǒng)狀態(tài)時(shí)失敗。后面把/dev、/proc、/sys全部綁定掛載問(wèn)題立解。第二種情況是chroot之后找不到庫(kù)里文件報(bào)error while loading shared libraries。這通常是因?yàn)?usr分區(qū)沒(méi)掛上或者根目錄掛載后沒(méi)有綁定/dev節(jié)點(diǎn)導(dǎo)致設(shè)備節(jié)點(diǎn)缺失。這種情況重新檢查掛載列表把/usr、/boot等所有需要的內(nèi)部分區(qū)都掛到rootfs下面再試。第三種情況是改了密碼之后重啟發(fā)現(xiàn)新密碼不生效?;乜船F(xiàn)場(chǎng)多半是改密碼時(shí)根文件系統(tǒng)處于只讀狀態(tài)passwd看似執(zhí)行成功實(shí)際上沒(méi)能寫入/etc/shadow或者是寫入后又因未正確卸載而丟失。所以每次修改完我都習(xí)慣性地再執(zhí)行一次sync然后cat /etc/shadow確認(rèn)對(duì)應(yīng)字段已經(jīng)變化再退出卸載。6.2 救援分區(qū)識(shí)別錯(cuò)亂用UUID替代設(shè)備名這是救援模式下最陰間的坑。你把U盤插上去之后系統(tǒng)里原來(lái)的硬盤很可能從sda變成了sdb或sdc因?yàn)閁盤本身占用了sda的位置。如果憑記憶直接執(zhí)行mount /dev/sda2掛上去的可能根本不是目標(biāo)系統(tǒng)的根分區(qū)。正確做法是先看UUIDlsblk -f blkid找到之前記下的根分區(qū)UUID然后根據(jù)UUID對(duì)應(yīng)到當(dāng)前環(huán)境下的實(shí)際設(shè)備。如果實(shí)在找不到也可以先用file -s /dev/sdX逐個(gè)識(shí)別文件系統(tǒng)類型再?zèng)Q定掛哪個(gè)。這個(gè)習(xí)慣要養(yǎng)成我第一次就是被盤符偏移坑了一把差點(diǎn)把空盤當(dāng)成根分區(qū)掛載。6.3 想臨時(shí)免密登錄的一個(gè)特殊技巧在某些應(yīng)急場(chǎng)景里比如必須立刻進(jìn)系統(tǒng)導(dǎo)出數(shù)據(jù)但連新密碼都不想設(shè)置也可以直接用root把密碼字段清空passwd -d 用戶名-d參數(shù)會(huì)刪除賬號(hào)的密碼此時(shí)/etc/shadow里該用戶密碼字段變成了空的。不過(guò)大多數(shù)系統(tǒng)的PAM配置不允許空密碼直接登錄需要臨時(shí)在/etc/pam.d/common-auth或相關(guān)配置里加上nullok登錄后立刻設(shè)回新密碼。這個(gè)技巧風(fēng)險(xiǎn)很高適合內(nèi)網(wǎng)維護(hù)環(huán)境臨時(shí)用操作完必須恢復(fù)原配置不建議普通用戶嘗試。常規(guī)場(chǎng)景老老實(shí)實(shí)走passwd就夠了。6.4 幾個(gè)長(zhǎng)期受益的運(yùn)維習(xí)慣經(jīng)歷過(guò)幾次救援模式之后我給自己定了三條規(guī)矩。第一條是每臺(tái)機(jī)器裝完系統(tǒng)把/etc/passwd和/etc/shadow里關(guān)鍵用戶的信息導(dǎo)出一份放在隨身的加密U盤里不是明文暴露是應(yīng)急比對(duì)用。第二條是確保公司里有一個(gè)人保留root密碼或至少有一個(gè)可用sudo賬號(hào)密碼交接不能只寫在一個(gè)人手里。第三條是重要的機(jī)器定期做數(shù)據(jù)備份密碼重置只是應(yīng)急手段真正保命的還是備份。另外特別想提一句這些操作只應(yīng)該用在你合法管理、有權(quán)維護(hù)的設(shè)備上。救援模式功能支持進(jìn)入任何能通電的機(jī)器并且修改密碼這個(gè)事實(shí)恰恰是它必須謹(jǐn)慎使用的理由。我給出的命令和流程是幫大家解決自己的設(shè)備問(wèn)題而不是繞過(guò)他人系統(tǒng)的捷徑。這次的經(jīng)驗(yàn)就先寫到這。老實(shí)說(shuō)救援模式這活兒玩熟了之后密碼遺忘在我這兒就只算一次普通上門全套流程加起來(lái)不到二十分鐘。真正要緊的不是那幾條命令而是動(dòng)手前的判斷和分區(qū)信息——知道機(jī)器是什么狀態(tài)、數(shù)據(jù)在哪里、加密層有幾層才不會(huì)把一次密碼重置做成一次數(shù)據(jù)事故。下次你遇到麒麟桌面系統(tǒng)登錄不了的時(shí)候可以先把這篇文章翻出來(lái)照著流程走一遍大概率能少走很多彎路。