Qual a solução caso perder senha root do Linux?

Perder ou esquecer a senha do usuário root de um sistema Linux (Debiam, Ubuntu, Linux Mint, ect…) é uma situação clássica que pode causar pânico em muitos administradores de sistemas e usuários. No entanto, se você tiver acesso físico ou console à máquina, esse problema pode ser resolvido em poucos minutos utilizando o próprio carregador de inicialização do sistema, o GNU GRUB.

Neste artigo, vamos entender o passo a passo para recuperar a senha root e, mais importante, discutir por que isso acontece e como proteger seu servidor ou desktop contra essa abordagem.

Recuperando a senha de root pelo GRUB

O procedimento abaixo utiliza o fluxo de bypass de inicialização para acesso de shell administrativo, testado diretamente em uma distribuição baseada em Debian:

  1. Acessando o modo de edição do GRUB: Ligue ou reinicie o computador. Na tela de seleção de sistemas do GRUB, posicione a seleção sobre a entrada padrão do seu Linux e, em vez de pressionar Enter, pressione a tecla e para editar os comandos de inicialização.(Veja o exemplo na tela inicial do GRUB pressionando ‘e’)
    Tela boot Grub Linux
  2. Modificando os parâmetros do Kernel: Utilize as setas do teclado para navegar até a linha que inicia com o comando linux (onde constam parâmetros como /boot/vmlinuz... e identificadores UUID). Vá até o final dessa linha:
    • Altere o parâmetro de leitura ro (read-only) para rw (read-write), garantindo que o sistema permita a escrita no disco.
      Editando Grub
    • Adicione o argumento crucial: init=/bin/bash. Esse parâmetro instrui o kernel a ignorar o fluxo padrão do gerenciador de serviços (systemd/init) e entregar diretamente um shell Bash com privilégios máximos de superusuário.
      Editando Grub
  3. Iniciando o ambiente mínimo: Após realizar a alteração na linha do kernel, pressione a combinação de teclas Ctrl + X ou F10 para iniciar o boot modificado. O sistema carregará diretamente no prompt de comando como root@(none):/#.
  4. Alterando a senha root: Com o prompt aberto e o sistema de arquivos montado com permissão de escrita, execute o comando de redefinição de senha:
    passwd root
    O sistema solicitará que você digite a nova senha e, em seguida, a confirme (Retype new password). Ao concluir, a mensagem passwd: password updated successfully confirmará o sucesso da operação.
    Trocando a senha root
  5. Retornando ao fluxo normal: Para carregar o restante do sistema operacional e subir os serviços normais sem precisar resetar a máquina abruptamente, execute:
    exec /sbin/init
    Tela iniciando login root

Esse procedimento é uma falha de segurança do Linux?

À primeira vista, a facilidade com que conseguimos redefinir a senha do administrador mais poderoso do sistema pode parecer uma brecha crítica de segurança. Contudo, isso não é considerado uma falha de segurança do software.

Por padrão, a filosofia de segurança física dita que quem tem acesso físico ao hardware (ou ao console de gerenciamento da máquina virtual) possui controle total sobre o ativo. Se um atacante tem acesso físico à máquina, ele poderia simplesmente remover o disco rígido e ler os dados em outra estação (a menos que o disco esteja completamente criptografado).

No entanto, permitir que qualquer pessoa reinicie a máquina e altere a senha de root é um risco inadmissível em ambientes compartilhados, tais como laboratórios escolares, universidades, empresas ou bibliotecas públicas.

Como proteger o GRUB contra redefinições de senha

Para mitigar esse risco e impedir que usuários mal-intencionados quebrem a senha de root através do editor de comandos, o próprio projeto GNU disponibiliza nativamente um mecanismo de autenticação para o GRUB.

O parâmetro --unrestricted

Ao configurar uma senha no GRUB, o comportamento padrão do carregador passa a exigir o usuário e a senha configurados para qualquer ação, inclusive para simplesmente iniciar o sistema operacional padrão durante o boot. Isso tornaria a experiência do usuário ruim em desktops, já que a máquina exigiria a senha em cada reinicialização.

Para resolver isso, utiliza-se a flag --unrestricted nas entradas do menu. Esse parâmetro garante que:

  • O sistema operacional inicialize normalmente de forma automática, sem pedir senha.
  • A senha do GRUB seja exigida apenas se alguém tentar editar os parâmetros de boot (pressionando a tecla e) ou acessar a linha de comando interna do GRUB (pressionando a tecla c).

Dessa forma, você mantém a usabilidade do boot automático do sistema e bloqueia completamente o vetor de ataque utilizado para resetar a senha de root.

Vídeo explicativo sobre reset da senha root:

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Rolar para cima