Skip to main content

Como recuperar a senha de root no Linux

Link: https://www.alura.com.br/artigos/como-recuperar-senha-de-root-no-linux

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.