Como me adiciono de volta como usuário sudo?

64

Eu instalei o Ubuntu 11.10 hoje e instalei o VirtualBox. Isso exigiu que eu me adicionasse ao grupo vboxusers e, como a 11.10 parece não ter mais um aplicativo gráfico para adicionar usuários a um grupo, executei o seguinte comando:

sudo usermod -G vboxusers stephane

Isto é um problema. Agora vejo o que eu deveria ter executado:

sudo usermod -aG vboxusers stephane

O resultado final é que não estou mais nos grupos em que deveria estar. Incluindo qualquer grupo necessário para executar o "sudo". Quando executo qualquer comando como sudo agora, obtenho o seguinte:

$ sudo ls
[sudo] password for stephane: 
stephane is not in the sudoers file.  This incident will be reported.

Existe uma maneira de corrigir isso ou preciso reinstalar do zero novamente?

Stéphane
fonte

Respostas:

65
  1. Durante a inicialização, pressione e mantenha pressionada a tecla esquerda Shift e você verá o menu GRUB.

  2. Selecione a entrada que contém ( modo de recuperação ) e aguarde.

  3. Agora você deve receber um menu. Selecione:

    remount    Remount / read/write and mount all other file systems 
    

    e espere que seus sistemas de arquivos sejam montados com permissões de leitura / gravação e pressione Enter.

    Se essa opção não aparecer ou não funcionar, você poderá escolher a rootopção e usar o seguinte comando para montar a partição do sistema:

    mount -o remount /
    

    Você pode verificar qual é a partição do sistema com fsckcomando ou visualizando /etc/mtab.

    Após executar com êxito o comando mount (ou seja, sem mensagens de erro), continue diretamente na etapa 5 abaixo.

  4. Depois de escolher a remountopção, o menu é exibido novamente. Selecione:

    root       Drop to root shell prompt
    
  5. Agora digite um dos seguintes comandos para adicionar novamente seu usuário ao admingrupo (para Ubuntu 11.10 e versões anteriores):

    adduser <USERNAME> admin
    

    ou para o sudogrupo (para Ubuntu 12.04 e posterior):

    adduser <USERNAME> sudo
    
  6. Reinicie e você poderá usar sudonovamente.

htorque
fonte
3
Se você não vir o menu "remontar", poderá selecionar "fsck" primeiro, o sistema de arquivos será remontado para leitura / gravação. Depois disso, você pode adicionar seu usuário no modo raiz.
Jiejing Zhang 19/09/2013
11
Isso funcionou para mim, só que eu tinha para montar o sistema de arquivos usando o comando mount -o remount,rw /.
Passuf 07/04
Isso funciona perfeitamente. Além disso, parece um grande problema de segurança. Eu acho que você deve desativar esse recurso em máquinas sensíveis? - No modo de recuperação, nunca consigo reiniciar. Eu sempre tenho que usar reboot -f.
Romain Vincent
15

Se o login root estiver ativado no seu sistema, basta soltar o terminal via Control+ Alt+ F1sem fazer login no X. Faça login como root e adicione o usuário desejado ao admingrupo (no Ubuntu 11.10 e versões anteriores):

adduser desired_user_name admin

Para o Ubuntu 12.04 e posterior, adicione o usuário ao sudogrupo:

adduser desired_user_name sudo

Se você não ativou o login raiz, escolha o modo de recuperação no Grub e tente o shell raiz.

Root Shell

Monte o sistema de arquivos como leitura / gravação:

mount -o rw,remount /

Depois disso, você poderá adicionar novamente o usuário desejado ao grupo admin(ou sudo).

heartsmagic
fonte
Mas não consigo acessar o sudo do meu usuário!
Jamie Hutber
7

Eu tentei várias combinações depois de fazer a mesma coisa que a opção de menu remontar parece não estar na 12.10. Eu tentei de tudo neste post a partir da raiz. O ultimo foi

umount -a
mount -o -w /<path> /

Isso resultou no sistema de arquivos ainda sendo ro devido a uma configuração no fstab para inicializar ro no erro do sistema de arquivos, eu acho, com ele afirmando que parecia ser ro após a montagem.

Eu finalmente consegui com

mount -o rw,remount /

Embora eu não tenha certeza de como isso é diferente do conjunto de comandos anterior.

Após aplicar essa variação, a adição de um usuário ao grupo admin(11.10 e ealrier) ou sudo(12.04 e posterior) é feita da mesma maneira:

adduser username admin    # 11.10 and earlier
adduser username sudo     # 12.04 and later
Jodi
fonte
2

Pergunta antiga, mas aconteceu comigo também (Ubuntu 14.04).

Não consegui entrar no modo de recuperação e obter acesso a um shell raiz, como muitas respostas aqui e em outros locais descrevem: o acesso ao shell raiz do GRUB parece estar protegido por senha.

Então, resolvi o problema desta maneira:

  1. inicialize em um pendrive ao vivo
  2. abrir uma concha
  3. acesse o sistema de arquivos principal do HD Linux (você pode encontrar seu ponto de montagem na barra de endereços do gerenciador de arquivos da GUI, geralmente após o CTRL-L). cdafim disso.
  4. edite o arquivo etc/group(digamos com nano etc/groupou qualquer outra coisa)
  5. encontre a linha "sudo". Deve parecersudo:x:27:admin,bob,alice
  6. adicione-se à sudolinha, separada por vírgula

Obviamente, isso implica que o arquivo etc/sudoersainda mantém a linha

%sudo   ALL=(ALL:ALL) ALL

significando que todos os membros do grupo sudotêm controle total. Primeiro verifique isso.

Trabalhou sem intercorrências.

kebs
fonte
0

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:

  1. 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!).
  2. 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.
  3. Encontre a linha que lê linux ... ro .... Esta é a linha de comando do kernel. Substitua o rotoken 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 shvez 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.
  4. 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.
  5. Faça a alteração que deseja fazer, por exemplo usermod -a -Gadm,sudo YOURUSERID. Confirme com id -a YOURUSERIDa sua participação no sudo de volta. Caso você receba um erro "comando não encontrado", use /sbin/usermode /bin/id.
  6. Você não pode desligar ou reiniciar o sistema corretamente neste momento. reboot, haltou poweroffnão funcionará, e a exitpartir 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
    

    synccaso algo dê errado, salve todas as alterações no disco e execsubstitua 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).

  7. Faça o login e reinicie o sistema uma vez, por exemplo - você sudo rebootdeve ter seu privilégio sudo de volta. Uma reinicialização é recomendada, pois (embora muito raramente) initpodem ser transmitidos parâmetros adicionais durante uma inicialização normal, e isso não foi feito. No caso de execfalha, 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 synceditados 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.

kkm
fonte