Linux インスタンスから重大なシステムユーザーが欠落している場合、リモート接続を確立できなくなる可能性があります。この問題は、インスタンス正常性診断機能を使用して解決できます。
前提条件
インスタンス正常性診断機能からの診断レポートで、Linux インスタンスの `root アカウント` のチェックが失敗したことが示されています。
背景情報
症状:Linux オペレーティングシステムでは、/etc/passwd ファイルにすべてのシステムユーザーの基本情報が格納され、/etc/shadow ファイルにシステムユーザーのパスワード情報が格納されます。これらのファイルから root ユーザーとそのパスワードなどの重大なシステムユーザー情報が失われると、インスタンスにログインできなくなります。
ソリューション:/etc/passwd および /etc/shadow 設定ファイル内の情報を復元する必要があります。さらに、/etc/group ファイルにはシステムグループの基本情報とユーザーとグループ間の関係が格納されているため、このファイルも修正する必要があります。
操作手順
- 正しいシステムユーザー設定ファイルを準備します。
重大なシステムユーザーのセットは Linux ディストリビューションによって異なり、また追加のユーザーを作成している場合があるため、必要な修復手順はご利用の Linux ディストリビューションによって異なります。
正常な Elastic Compute Service (ECS) インスタンスから正しいシステムユーザー設定ファイルを取得し、影響を受けるインスタンスのリファレンスとして使用します。正常な ECS インスタンスは、影響を受けるインスタンスと同じ Linux ディストリビューションを実行し、同じソフトウェアパッケージがインストールされている必要があります。必要な設定ファイルは、次のパスにあります:
- /etc/passwd
- /etc/shadow
- /etc/group
設定ファイルは、正常な ECS インスタンスで直接表示するか、ローカルマシンにダウンロードしてリファレンスとして使用できます。このトピックでは、CentOS 7.5 を例として使用します。以下はファイルコンテンツのサンプルです:- /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:
- 影響を受けるインスタンスへのリモート接続を確立します。
ECS インスタンスが修復モードで修復ディスクがマウントされている場合、VNC を使用してのみインスタンスに接続できます。詳細については、「VNC を使用したインスタンスへの接続」をご参照ください。
- 影響を受けるインスタンスの元のシステムディスクのマウント情報を表示します。
マウントされた修復ディスクでは、元のシステムディスクのファイルシステムが一時ディレクトリにマウントされます。次のいずれかの方法でディレクトリを見つけることができます:
- システムディスクの詳細ページで、[関連付けられたインスタンス]
/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****を確認します。このパスは一時ディレクトリのもので、bp19bspzms79kqse****の部分は元のシステムディスクのクラウドディスクのシリアル番号です。 - マウントされた修復ディスクで、
mountコマンドを実行します。たとえば、元のシステムディスクのデバイスパスが/dev/vdaの場合は、次のコマンドを実行します:mount | grep /dev/vda次の出力が返されます:/dev/vda1 on /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** type ext4 (rw,relatime)
- システムディスクの詳細ページで、[関連付けられたインスタンス]
- 元のシステムディスクの一時パスで
chrootコマンドを実行して、chroot 環境に入ります。ファイルの修復は、元のシステムディスクの一時パスで実行する必要があります。たとえば、一時パスが/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****の場合は、次のコマンドを実行します:chroot /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** chroot 環境で、次のコマンドを実行して、元の/etc/passwdおよび/etc/shadowファイルをバックアップします。cp /etc/passwd /etc/passwd.bak cp /etc/shadow /etc/shadow.bak- /etc/passwd ファイルに欠落している情報を追加します。
- ECS コンソールでインスタンス正常性診断レポートを使用して、欠落している重大なシステムユーザーに関する情報を取得します。
- /etc/passwd 設定ファイルから、対応する重大なシステムユーザーの行を見つけてコピーします。
- chroot/etc/passwd ファイルの対応する位置にその行を貼り付けます。
/etc/passwd ファイルの形式は次のとおりです。説明 修復モードの ECS インスタンスには、VNC リモート接続でのみ接続できます。コピーしたコンテンツを貼り付けるには、ウィンドウの上部にある [クリップボードから貼り付け] ボタンをクリックします。ユーザー情報行の例は次のとおりです:
postfix:x:89:89::/var/spool/postfix:/sbin/nologin各ユーザー情報行には、コロン (:) で区切られた次の 7 つのフィールドが含まれています:ユーザー情報を貼り付けた後、新しいエントリを確認します:ユーザー名:パスワード:UID:GID:ユーザーの説明:ホームディレクトリ:ログインシェルUIDUID新しい UID がファイル内で一意になるようにしてください。GIDchroot/etc/group/etc/groupGIDchroot/etc/groupGIDGID新しいユーザーの は、 の ファイルに存在する必要があります。 が存在しない場合は、リファレンスの ファイルから対応する を含む行をコピーして、 の ファイルに貼り付けます。新しい GID がファイル内で一意であることを確認します。たとえば、次のようになります:- chroot/etc/group
GID/etc/group の ファイルに 89 が含まれている場合、 ファイルを変更する必要はありません。 - chroot/etc/group
GID/etc/groupGIDchroot/etc/groupGIDの ファイルに 89 が含まれていない場合は、リファレンスの ファイルから 89 を含む行をコピーして、 の ファイルに貼り付ける必要があります。GID がファイル内で一意であることを確認します。
- chroot/etc/group
- /etc/groupchroot/etc/groupリファレンスの ファイルで新しいユーザーがグループに関連付けられている場合は、 の ファイルにも同じ関連付けが存在することを確認します。
たとえば、chroot 環境の /etc/passwd ファイルから
postfixユーザーが欠落している場合は、/etc/passwd および /etc/group ファイルから正しい設定エントリをコピーする必要があります。正しい /etc/group ファイルでpostfixユーザーがmailグループにも属していることが指定されている場合 (例:mail:x:12:postfix)、この設定エントリも chroot 環境の /etc/group ファイルにコピーする必要があります。
- /etc/shadow ファイルに欠落している情報を追加します。
- ECS コンソールでインスタンス正常性診断レポートを使用して、欠落している重大なシステムユーザーに関する情報を取得します。
- /etc/shadow 設定ファイルから、対応する重大なシステムユーザーの行を見つけてコピーします。
chroot 環境の/etc/shadowファイルの対応する位置にその行を貼り付けます。説明 修復モードの ECS インスタンスには、VNC リモート接続でのみ接続できます。コピーしたコンテンツを貼り付けるには、ウィンドウの上部にある [クリップボードから貼り付け] ボタンをクリックします。chroot 環境の/etc/shadowファイルに欠落している情報がない場合は、コンテンツを貼り付ける必要はありません。
- 修復が完了したら、
chroot 環境を終了し、インスタンスのステータスを確認します。- exitchroot コマンドを実行して終了します。
- ECS コンソールで、インスタンス正常性診断ページに移動し、修復ディスクをデタッチしてから、インスタンスを通常の動作モードに戻します。
- 修復された ECS インスタンスへのリモート接続を確立し、ログインできることを確認します。
その他のソリューション
影響を受けるインスタンスのシステムディスクを正常なインスタンスにアタッチして修復する方法の詳細については、「Linux インスタンスから重大なシステムユーザーが欠落している」をご参照ください。