Cometi o mesmo erro ao adicionar minha conta a um grupo (esqueci a -a
). Meu sistema foi instalado com o login root bloqueado e minha conta foi a única na máquina.
A resposta aceita não me ajudou. Durante a inicialização no modo de recuperação, tudo o que recebi foi uma mensagem inútil
Não é possível abrir o acesso ao console, a conta raiz está bloqueada. Consulte a página do manual sulogin (8) para obter mais detalhes.
Pressione ENTER para continuar
Depois de pressionar ENTER, o sistema inicializou normalmente: sem sorte em obter acesso root para corrigir o problema. Estou deixando esta resposta caso alguém acabe no meu lugar a essa altura. Use o seguinte apenas se você não conseguir acessar o modo de recuperação através do menu Grub .
Um passo a passo para obter o shell raiz:
- Inicialize no menu Grub e destaque (mas não pressione Enter!) A opção de inicialização normal (padrão, não uma recuperação!).
- Pressione
e
. O Grub exibirá um editor de linha de comando com várias linhas, cada uma das quais pode parecer desconhecida, se não intimidadora. Não se preocupe, as alterações que você fizer não serão salvas permanentemente.
- Encontre a linha que lê
linux ... ro ...
. Esta é a linha de comando do kernel. Substitua o ro
token por rw
, para tornar o sistema de arquivos raiz leitura / gravação e adicione outro parâmetro da linha de comando do kernel init=/bin/sh
,. Isso instrui o kernel a executar em sh
vez de /sbin/init
. No final, a linha deve parecer linux ... rw init=/bin/sh ...
. Nota: Você pode conviver com o grub>
prompt simples . Ficarei feliz em explicar como, passo a passo, se tudo mais falhar para você; basta deixar um comentário para esta resposta.
- Após a alteração, pressione F10para usar os comandos do editor para inicializar o sistema (ou leia as instruções de como inicializar logo abaixo da janela do editor, se o seu Grub for compilado de forma diferente). Você receberá o prompt do shell raiz, pois o processo init é executado como PID 1 com a identidade raiz.
- Faça a alteração que deseja fazer, por exemplo
usermod -a -Gadm,sudo YOURUSERID
. Confirme com id -a YOURUSERID
a sua participação no sudo de volta. Caso você receba um erro "comando não encontrado", use /sbin/usermod
e /bin/id
.
Você não pode desligar ou reiniciar o sistema corretamente neste momento. reboot
, halt
ou poweroff
não funcionará, e a exit
partir do shell levará a um pânico no kernel, pois não se espera que o processo do PID 1 saia. Portanto, os próximos dois comandos que você deve emitir são:
sync
exec /sbin/init
sync
caso algo dê errado, salve todas as alterações no disco e exec
substitua o shell pelo real init
(que pode ser systemd, upstart ou System V init, mas sempre é chamado /sbin/init
). O sistema provavelmente continuará inicializando normalmente (sem modo de recuperação).
- Faça o login e reinicie o sistema uma vez, por exemplo - você
sudo reboot
deve ter seu privilégio sudo de volta. Uma reinicialização é recomendada, pois (embora muito raramente) init
podem ser transmitidos parâmetros adicionais durante uma inicialização normal, e isso não foi feito. No caso de exec
falha, basta reiniciar a máquina e deixá-la inicializar normalmente. Todos os sistemas de arquivos de registro em diário modernos, como ext4, xfs e btrfs, se recuperam rapidamente (alguns segundos para uma verificação de diário, se sync
editados antes da redefinição), e você estará pronto.
Um pouco de fundo
Houve uma discussão no relatório de bug do Debian sobre esse mesmo problema, e, tanto quanto entendi, isso foi decidido como um recurso e não um bug, que eu julgo ter sido um erro. Tendo estado neste ramo há 25 anos, não posso deixar de discordar inteiramente do argumento de Michael Biebl na mensagem # 31 nesse tópico:
Considere o seguinte: você tem um laptop com uma conta root bloqueada. Por padrão, o carregador de inicialização grub gera uma entrada de inicialização para o modo de recuperação. Portanto, mesmo que você bloqueie o BIOS para não permitir a inicialização a partir de CD-Rom ou USB e proteja com senha o grub, alguém poderá facilmente obter acesso root se você deixar o laptop sem vigilância por um momento.
A objeção correta, da IMO, se não suficientemente geral, foi dada na mensagem # 70 por Felipe Sateler:
Para muitos computadores (a maioria?), Acesso físico significa perda de jogo em termos de segurança, pois você pode simplesmente desmontar a caixa e obter o disco rígido.
Isso é verdade especialmente para o laptop, mencionado no argumento de Michael: se você o deixar sem vigilância por um momento, e alguém estiver atrás dos seus dados, o laptop simplesmente desaparecerá para nunca mais ser visto. E para qualquer máquina, não "muitas" ou "a maioria", mesmo as que foram aparafusadas em 8 pontos em um rack, assim que o atacante obtém acesso físico à máquina, o jogo realmente termina.