Como recuperar a senha de root no Linux

(Last Updated On: 14 de novembro de 2017)

Estou estudando Docker! Então fui instalá-lo no meu computador pelo terminal, já que estou usando o Ubuntu, é uma distribuição Linux:

Basta que eu digite a senha e pronto! Terei o docker instalado em minha máquina. Só temos um pequeno problema… esqueci a senha do meu usuário! 🙁

Sem essa senha não consigo instalar ou remover programas, atualizar o sistema operacional… Ou seja, não consigo realizar tarefas administrativas no sistema. E agora, como posso recuperar essa senha?

Existem algumas maneiras de se recuperar a senha do usuário administrador (ou do super usuário) no Linux. Uma muito comum é alterar o modo que o sistema inicia, ou seja, quando realiza o boot. Dessa forma, acessamos o sistema como superusuário e alterar a senha.

Para isso, precisamos antes entender melhor o que seria o boot!

Entendendo o boot

Boot nada mais é do que o momento em que sua máquina está sendo ligada. Nesse momento, um programa chamado BIOS carrega algumas informações sobre o hardware do computador e o checa. Após esse processo ela chama o gerenciador de boot (boot loader) que carrega o sistema operacional.

Existem diversos gerenciadores disponíveis. No caso do Linux, esse gerenciador mais comum é o GRUB, porém existem outros.

Utilizando o GRUB nós conseguimos acessar o sistema como superusuário executar alguns comando, como trocar a senhas de usuários.

Mas como consigo acessar o GRUB?

Acessando o GRUB

Conseguimos acessar o GRUB no momento em que a máquina está ligando. Basta apertar a tecla Esc, ou Shift. Após um tempo, uma tela parecida com está deve aparecer:

Queremos falar para o GRUB que desejamos acessar o sistema como usuário administrador, dessa forma conseguimos modificar a senha.

Para dizer isso ao GRUB, temos que editar uma linha em sua configuração. Logo, pressionamos e (edit) para editar essas informações:

Neste arquivo, o GRUB passa algumas informações (parâmetros) para o kernel, isto é, o núcleo do sistema operacional. Algumas dessas informações são: o sistemas de arquivos do root, o tipo de montagem de uma partição, entre outros.

Queremos entrar como super usuário no momento em que o Linux é carregado. Logo, vamos até a linha linux para colocar essa configuração:

Essa linha nos mostra quando o boot começar.

O GRUB tentará carregar o arquivo do kernel que está em /boot/vmlinuz-4.8.0-36-generic como usuário root (super usuário), em modo de leitura (ro, read only), sem escrever na tela (quiet), apresentando uma tela de carregamento (splash) e o modo gráfico ($vt_randoff).

Mas eu quero poder alterar a senha do meu usuário quando o sistema iniciar. Isto é, quero poder escrever as configurações, então vamos alterar a opção ro (read only) para rw (read and write).

O sistema será acessado via o terminal. Então podemos retirar essas opções que mostram a tela de carregamento e o modo gráfico:

Bem, vamos acessar o sistema pelo terminal… Mas qual terminal?

Precisamos dizer para o GRUB iniciar um terminal assim que o sistema carregar, dessa forma conseguiremos realizar as alterações.

Para isso falaremos para ele iniciar (init) um Shell, como o Bash, um shell muito comum para os sistemas Linux, que está localizado na pasta bin:

Pronto! Configurações realizadas! Vamos dizer para o sistema iniciar com essas configurações. Para isso nós pressionamos Ctrl + x ou simplesmente F10.

O sistema irá iniciar com essas configurações em um terminal já logado como super usuário:

Agora resta apenas alterar a senha do usuário.

No meu caso vou alterar a senha do usuário administrador yuri, então posso dizer para o terminal: "Por favor, altere a senha (passwd) do usuário yuri":

passwd yuri

Vamos informar a nova senha e pronto! Vamos reiniciar o computador para instalar nosso programa. Já que vamos reiniciar a máquina podemos utilizar o comando reboot:

Hum… Deu um erro, não conseguimos reiniciar o computador. 🙁

Quando estamos como monousuário no GRUB, não conseguimos reiniciar o computador com esses comando como reboot.

Então, como podemos reiniciar nosso computador?

Bem, podemos desligá-lo da energia e ligá-lo novamente. Ou, podemos utilizar outro comando.

Existe um comando chamado init. Com este comando conseguimos mudar o nível de execução do sistema. Isto é, podemos desligá-lo, reiniciá-lo, entre outras coisas.

Cada nível possui um código, como por exemplo o nível 6, que reinicia o sistema.

Já que queremos reiniciar o sistema, vamos falar para o init fazer isso para a gente:

Humm… outro erro. O sistema não conseguiu se comunicar com o comando desta forma. Vamos tentar passar o caminho até o local onde o comando está localizado para conseguir executá-lo.

Queremos executar (exec) o comando init, que está localizado na pasta /sbin/init, passando como parâmetro o nível 6 (reiniciar):

Quando o computador reiniciar podemos usar essa nova senha para instalar o Docker:

Funcionou! Conseguimos alterar a senha com sucesso.

Para saber mais

Neste caso, eu utilizei o GRUB para mudar a senha do usuário administrador do sistema, mas poderia ter usado para modificar a senha do superusuário (root).

Essas mudanças feitas no GRUB são temporárias. Isto é, só valem na vez que foram configuradas no boot. Caso queira que as mudanças sejam permanentes é necessário alterar o arquivo do GRUB.

Esse é apenas um dos muitos jeitos de recuperar a senha do usuário administrador ou do usuário root no Linux. Além desse, outro muito utilizado é usando um pendrive inicializável com um sistema operacional. Dessa forma conseguimos montar uma partição e utilizá-la para alterar as senhas.

Veja que conseguimos acessar o sistema como root apenas com uma configuração no gerenciador de boot. Isso pode ser muito perigoso caso alguém com más intenções tenha acesso a máquina. Por isso existem algumas formas de proteger o GRUB desse tipo de ataque.

Nós acessamos o sistema como super usuário, por isso, cuidado! Caso não tenha certeza do que um comando faz, não o execute.

Senhas recuperadas

Um problema comum que pode acabar gerando muitas dificuldades é esquecer senhas de usuário administrador. No caso do Linux, percebemos que isso pode ser revertido utilizando o gerenciador de boot para iniciar o sistema como super usuário e realizar essa alteração.

Para isso, precisamos antes de mais nada, entender como funciona o boot no sistema e como configurar o boot loader para carregar o sistema como root.

Só então acessamos o terminal e alteramos a senha do nosso usuário. Porém, não podemos esquecer que isso também é muito perigoso, pois um usuário com más intenções conseguiria acesso ao sistema. Por isso existem algumas formas de proteger o GRUB desse tipo de ataque.

E aí, o que achou? Já conhecia essas técnicas? Conhece outras? Não deixe de compartilhar conosco nos comentários! 🙂

Gosta de Linux? Aqui na alura temos uma formação completa no sistema do pinguim. Nela você aprenderá sobre os comandos do sistema, sobre sua estrutura de diretórios, gerenciar usuários, grupos, além de muitas outras coisas.

FIQUE POR DENTRO

Próximo ArtigoEvite o NullPointerException no Java