A ausência de usuários críticos do sistema em uma instância Linux pode impedir conexões remotas. Use o recurso de diagnóstico de saúde da instância para resolver esse problema.
Pré-requisitos
Um relatório do recurso de diagnóstico de saúde da instância indicou falha na verificação da root account na instância Linux.
Contexto
Sintoma: No sistema operacional Linux, o arquivo /etc/passwd armazena informações básicas de todos os usuários do sistema, e o arquivo /etc/shadow contém as senhas desses usuários. Se informações essenciais, como as do usuário root e sua senha, forem perdidas nesses arquivos, não será possível fazer login na instância.
Solução: Restaure as informações nos arquivos de configuração /etc/passwd e /etc/shadow. Corrija também o arquivo /etc/group, pois ele armazena dados básicos sobre grupos do sistema e o relacionamento entre usuários e grupos.
Procedimento
-
Prepare os arquivos de configuração de usuários do sistema corretos.
As etapas de reparo variam conforme a distribuição Linux específica, pois o conjunto de usuários críticos do sistema pode mudar e você talvez tenha criado usuários adicionais.
Obtenha os arquivos de configuração de usuários do sistema corretos de uma instância ECS íntegra para usá-los como referência na instância afetada. A instância ECS íntegra deve executar a mesma distribuição Linux e ter os mesmos pacotes de software da instância com problemas. Os arquivos de configuração necessários estão nos seguintes caminhos:
/etc/passwd
/etc/shadow
/etc/group
Visualize os arquivos de configuração diretamente na instância ECS íntegra ou baixe-os para sua máquina local como referência. Este tópico usa o CentOS 7.5 como exemplo. Veja abaixo amostras do conteúdo dos arquivos:
-
/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:
-
Estabeleça uma conexão remota com a instância afetada.
Quando uma instância ECS está no modo de reparo com um disco de reparo montado, a conexão só é possível via VNC. Para mais detalhes, consulte
Conectar-se a uma instância usando VNC
.
-
Verifique as informações de montagem do disco do sistema original da instância afetada.
No disco de reparo montado, o sistema de arquivos do disco do sistema original fica montado em um diretório temporário. Use um dos métodos a seguir para localizar esse diretório:
Na página de detalhes do disco do sistema, visualize a seção Associated Instances
/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****. O caminho do diretório temporário segue esse formato. Neste exemplo, o diretório temporário é , ondebp19bspzms79kqse****representa o número de série do disco em nuvem do disco do sistema original.-
No disco de reparo montado, execute o comando
mount. Por exemplo, se o caminho do dispositivo do disco do sistema original for/dev/vda, execute o seguinte comando:mount | grep /dev/vdaA saída retornada será semelhante a esta:
/dev/vda1 on /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** type ext4 (rw,relatime)
-
Execute o comando
chrootno caminho temporário do disco do sistema original para entrar nochroot environment.Realize o reparo dos arquivos no caminho temporário do disco do sistema original. Por exemplo, se o caminho temporário for
/tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse****
, execute o seguinte comando:
chroot /tmp/ecs-offline-diagnose_disk-bp19bspzms79kqse**** -
No
chroot environment, execute os comandos abaixo para fazer backup dos arquivos originais/etc/passwde/etc/shadow.cp /etc/passwd /etc/passwd.bak cp /etc/shadow /etc/shadow.bak -
Adicione as informações ausentes ao arquivo /etc/passwd.
Use o relatório de diagnóstico de saúde da instância no console ECS para obter informações sobre os usuários críticos do sistema ausentes.
No arquivo de configuração de referência /etc/passwd, localize e copie a linha correspondente ao usuário crítico do sistema.
-
Cole a linha na posição adequada no arquivo /etc/passwd dentro do ambiente chroot.
NotaA conexão com uma instância ECS em modo de reparo só é possível via acesso remoto VNC. Para colar o conteúdo copiado, clique em no botão
Paste from clipboard
na parte superior da janela.
Veja a seguir o formato do arquivo /etc/passwd.
Exemplo de uma linha de informações de usuário:
postfix:x:89:89::/var/spool/postfix:/sbin/nologinCada linha de informações de usuário contém sete campos, separados por dois pontos (:):
username:password:UID:GID:user description:home directory:logon shellApós colar as informações do usuário, valide a nova entrada:
Confirme se o novo
UIDé único no arquivo e verifique se não há outroUIDigual.-
O
GIDdo novo usuário deve existir no arquivo /etc/group do ambiente chroot. Caso oGIDnão exista, copie a linha que contém oGIDcorrespondente do arquivo de referência /etc/group para o arquivo /etc/group no ambiente chroot. Garanta que o novoGIDseja único no arquivo.Por exemplo:
Se o arquivo /etc/group do ambiente chroot já contiver o
GID89, não será necessário alterar o arquivo /etc/group.Caso o arquivo /etc/group do ambiente chroot não possua o
GID89, copie a linha com esseGIDdo arquivo de referência /etc/group para o arquivo /etc/group no ambiente chroot. Assegure que oGIDseja exclusivo no arquivo.
-
Se o novo usuário estiver associado a um grupo no arquivo de referência /etc/group, confirme que a mesma associação existe no arquivo /etc/group do ambiente chroot.
Por exemplo, se o usuário
postfixestiver ausente no arquivo /etc/passwd dentro do ambiente chroot, copie as entradas de configuração corretas dos arquivos /etc/passwd e /etc/group. Se o arquivo /etc/group correto indicar que o usuáriopostfixtambém pertence ao grupomail(por exemplo,mail:x:12:postfix), copie essa entrada de configuração também para o arquivo /etc/group no ambiente chroot.
-
Adicione as informações ausentes ao arquivo /etc/shadow.
Consulte o relatório de diagnóstico de saúde da instância no console ECS para identificar os usuários críticos do sistema ausentes.
Localize e copie a linha do usuário crítico correspondente no arquivo de configuração de referência /etc/shadow.
-
Cole a linha na posição apropriada do arquivo
/etc/shadowdentro dochroot environment.NotaA conexão com uma instância ECS em modo de reparo só é possível via acesso remoto VNC. Para colar o conteúdo copiado, clique em no botão
Paste from clipboard
na parte superior da janela.
Se não houver informações faltando no arquivo
/etc/shadow
dentro do
chroot environment
, não será necessário colar nenhum conteúdo.
-
Após concluir o reparo, saia do
chroot environmente verifique o status da instância.Execute o comando exit para sair do ambiente chroot.
No console ECS, acesse a página de diagnóstico de saúde da instância, desanexe o disco de reparo e retorne a instância ao modo operacional normal.
Estabeleça uma conexão remota com a instância ECS reparada para confirmar que o login funciona corretamente.
Outras soluções
Para saber mais sobre como anexar o disco do sistema de uma instância afetada a uma instância íntegra para reparo, consulte Usuários críticos do sistema ausentes em uma instância Linux.