當(dāng)Linux實(shí)例中關(guān)鍵的系統(tǒng)用戶不存在時(shí),可能導(dǎo)致無法遠(yuǎn)程登錄。您可以通過實(shí)例健康診斷工具進(jìn)行問題修復(fù)。
前提條件
Linux實(shí)例已通過實(shí)例健康診斷工具進(jìn)行診斷,診斷結(jié)果中實(shí)例無法啟動(dòng)場(chǎng)景的根賬號(hào)檢查未通過。
背景信息
問題描述:在Linux操作系統(tǒng)中,/etc/passwd文件存儲(chǔ)了系統(tǒng)所有用戶的基本信息,/etc/shadow文件存儲(chǔ)了系統(tǒng)用戶的密碼信息。如果文件中關(guān)鍵的系統(tǒng)用戶信息(例如root用戶及密碼)丟失,將導(dǎo)致無法正常登錄該實(shí)例。
解決方案:您需要恢復(fù)/etc/passwd和/etc/shadow配置文件的信息。此外,/etc/group文件中存放了系統(tǒng)用戶組的基本信息以及用戶與用戶組之間的關(guān)系信息,也需要一同修復(fù)。
操作步驟
- 準(zhǔn)備正確的系統(tǒng)用戶信息配置文件。
由于不同的Linux發(fā)行版中關(guān)鍵的系統(tǒng)用戶有所不同,且您在使用過程中可能創(chuàng)建了其它系統(tǒng)用戶,因此修復(fù)系統(tǒng)關(guān)鍵用戶信息丟失的問題需要您根據(jù)不同的Linux發(fā)行版而定。
建議您通過一臺(tái)正常運(yùn)行的ECS實(shí)例獲取正確的系統(tǒng)用戶配置文件信息,作為修復(fù)問題實(shí)例的參考文件。正常運(yùn)行的ECS實(shí)例需要和問題實(shí)例使用同一Linux發(fā)行版本,并且安裝了相同的軟件包。所需正確的系統(tǒng)用戶配置文件信息的路徑如下所示:
- /etc/passwd
- /etc/shadow
- /etc/group
您可以直接在正常運(yùn)行的ECS實(shí)例內(nèi)查看正確的配置文件信息,也可以將正確的配置文件信息下載至本地主機(jī)進(jìn)行查看。本文以CentOS 7.5系統(tǒng)為例,配置文件的內(nèi)容示例如下:- /etc/passwd
root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin systemd-network:x:192:192:systemd Network Management:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin polkitd:x:999:998:User for polkitd:/:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin chrony:x:998:996::/var/lib/chrony:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin tcpdump:x:72:72::/:/sbin/nologin nscd:x:28:28:NSCD Daemon:/:/sbin/nologin
- /etc/shadow
root:$6$Q9lA****/t1KPM$JLqO59UTxwGm****/rU7bHL0q5TVAij****/KeWAWPiO.6booVwpp7rdR9****.irQ6nso3YGVSqQqpyT****.:18668:0:99999:7::: bin:*:17632:0:99999:7::: daemon:*:17632:0:99999:7::: adm:*:17632:0:99999:7::: lp:*:17632:0:99999:7::: sync:*:17632:0:99999:7::: shutdown:*:17632:0:99999:7::: halt:*:17632:0:99999:7::: mail:*:17632:0:99999:7::: operator:*:17632:0:99999:7::: games:*:17632:0:99999:7::: ftp:*:17632:0:99999:7::: nobody:*:17632:0:99999:7::: systemd-network:!!:17864:::::: dbus:!!:17864:::::: polkitd:!!:17864:::::: sshd:!!:17864:::::: postfix:!!:17864:::::: chrony:!!:17864:::::: ntp:!!:17864:::::: tcpdump:!!:17864:::::: nscd:!!:17864::::::
- /etc/group
root:x:0: bin:x:1: daemon:x:2: sys:x:3: adm:x:4: tty:x:5: disk:x:6: lp:x:7: mem:x:8: kmem:x:9: wheel:x:10: cdrom:x:11: mail:x:12:postfix man:x:15: dialout:x:18: floppy:x:19: games:x:20: tape:x:33: video:x:39: ftp:x:50: lock:x:54: audio:x:63: nobody:x:99: users:x:100: utmp:x:22: utempter:x:35: input:x:999: systemd-journal:x:190: systemd-network:x:192: dbus:x:81: polkitd:x:998: ssh_keys:x:997: sshd:x:74: postdrop:x:90: postfix:x:89: chrony:x:996: ntp:x:38: tcpdump:x:72: nscd:x:28:
- 遠(yuǎn)程連接問題實(shí)例。當(dāng)ECS實(shí)例處于正在掛載修復(fù)盤的模式下時(shí),只能通過VNC遠(yuǎn)程連接。具體操作,請(qǐng)參見使用VNC登錄實(shí)例。
- 查看問題實(shí)例原有系統(tǒng)盤的掛載信息。在臨時(shí)掛載的修復(fù)盤中,問題實(shí)例原有系統(tǒng)盤的文件系統(tǒng)會(huì)被掛載到某一臨時(shí)目錄下。您可以通過以下任一方式查看所在的臨時(shí)目錄信息:
- 在系統(tǒng)盤詳情頁的掛載實(shí)例進(jìn)行查看,對(duì)應(yīng)的臨時(shí)目錄格式示例為:
/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****
,其中bp19bspzms79kqse****
為實(shí)例原有系統(tǒng)盤的云盤序列號(hào)。 - 在臨時(shí)掛載的修復(fù)盤中,運(yùn)行mount命令查看。例如,問題實(shí)例原有系統(tǒng)盤的設(shè)備路徑為/dev/vda,命令示例如下所示:
mount | grep /dev/vda
返回結(jié)果如下所示:/dev/vda1 on /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** type ext4 (rw,relatime)
- 在系統(tǒng)盤詳情頁的掛載實(shí)例進(jìn)行查看,對(duì)應(yīng)的臨時(shí)目錄格式示例為:
- 運(yùn)行chroot命令,將根目錄切換為問題實(shí)例原有系統(tǒng)盤所在的臨時(shí)路徑,并進(jìn)入chroot環(huán)境。您需要在問題實(shí)例原有系統(tǒng)盤所在的臨時(shí)路徑中進(jìn)行文件修復(fù)。例如,臨時(shí)路徑為/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****,命令如下所示:
chroot /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****
- 在chroot環(huán)境中,運(yùn)行以下命令,備份/etc/passwd與/etc/shadow原文件。
cp /etc/passwd /etc/passwd.bak cp /etc/shadow /etc/shadow.bak
- 補(bǔ)充/etc/passwd文件缺失的信息。
- 補(bǔ)充/etc/shadow文件缺失的信息。
- 修復(fù)完成后,退出修復(fù)環(huán)境,然后檢查問題實(shí)例的當(dāng)前狀態(tài)。
- 運(yùn)行exit命令,退出chroot環(huán)境。
- 在ECS控制臺(tái)的實(shí)例健康診斷頁面,卸載臨時(shí)掛載的修復(fù)盤并恢復(fù)問題實(shí)例至正常模式。
- 遠(yuǎn)程連接已修復(fù)的ECS實(shí)例,確認(rèn)成功登錄。
其他解決方案
在正常實(shí)例上掛載異常實(shí)例的系統(tǒng)盤進(jìn)行修復(fù)的具體操作,請(qǐng)參見Linux實(shí)例中關(guān)鍵的系統(tǒng)用戶不存在。