Se você realmente excluiu o comando sudo
, é possível reinstalar o pacote que o fornece executando:
pkexec apt-get update
pkexec apt-get --reinstall install sudo
Isso funciona porque a maioria dos sistemas Ubuntu tem duas maneiras diferentes de permitir que os administradores executem ações como root, sudo e Polkit . Quando o sudo é quebrado, o Polkit geralmente ainda está intacto.
Você deve estar logado como administrador para fazer isso, é claro. Se você estiver usando uma conta que tenha permissão para usar sudo
(quando sudo
existia no sistema), isso deve funcionar bem.
Em um sistema mínimo ou sistema de servidor Ubuntu, o Polkit pode estar indisponível, e com algumas configurações você não poderá executar o comando pkexec
em uma sessão SSH.
Você indicou que pkexec
, embora não tenha sido excluído como sudo
, também está quebrado . Especificamente, no seu sistema, ele tem a propriedade ou permissões erradas. É suposto ser setuid root, mas não é, e portanto não pode ser usado.
Seria útil saber como /usr/bin/sudo
foi excluído e como /usr/bin/pkexec
' s permissões (ou propriedade) foram alteradas. Estas são duas mudanças de quebra aparentemente separadas em seu sistema. Se uma recursiva ( -R
) chown
ou chmod
tiver sido executada em /
, /usr
ou /usr/bin
, isso explicaria como as permissões pkexec
foram alteradas e uma correção apropriada seria fazer mais do que apenas alterá-los de volta para aquele executável.
Com isso dito, se as duas únicas coisas erradas com o seu sistema são que sudo
está faltando e pkexec
tem permissões ou propriedade incorretas, isso ainda é facilmente corrigido , embora você tenha que reinicializar no modo de recuperação ou chroot de um ambiente ativo. Sugiro o modo de recuperação.
- Inicialize no modo de recuperação.
- Remonte
/
readwrite executando:mount -o remount,rw /
- Verifique se
pkexec
possui a propriedade correta:chown root:root /usr/bin/pkexec
- Corrigir as permissões de
pkexec
:chmod 4755 /usr/bin/pkexec
- Inicialize em seu sistema (
exit
e siga os prompts) ou reinicie comreboot
. - Siga as instruções acima para reinstalar o pacote
sudo
executandoapt-get
compkexec
.
Isso tem a vantagem de funcionar se a conexão com a Internet está ou não disponível no modo de recuperação, sem envolver o download de arquivos .deb
e instalá-los manualmente. Com --reinstall
, apt-get
substituirá todos os arquivos do pacote por sudo
, o que pode corrigir problemas adicionais. Além disso, isso também corrige seu pkexec
quebrado.
No entanto, esta não é a única abordagem. Em particular, o método dado na resposta de San Lin Naing deve funcionar também. A principal diferença é que, no método fornecido aqui, nenhuma operação de gerenciamento de pacotes é executada no chroot, que é usada apenas para reparar pkexec
, para que possa ser usada para gerenciar pacotes quando inicializada normalmente.