sudo é excluído [duplicado]

11

Como posso instalar o pacote sudo ?

$ apt-get install sudo
E: Could not open lock file /var/lib/dpkg/lock - open (13: Permission denied)
E: Unable to lock the administration directory (/var/lib/dpkg/), are you root?
    
por Kaliya Mitesh 22.01.2017 / 17:23

5 respostas

20

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.

  1. Inicialize no modo de recuperação.
  2. Remonte / readwrite executando: mount -o remount,rw /
  3. Verifique se pkexec possui a propriedade correta: chown root:root /usr/bin/pkexec
  4. Corrigir as permissões de pkexec : chmod 4755 /usr/bin/pkexec
  5. Inicialize em seu sistema ( exit e siga os prompts) ou reinicie com reboot .
  6. Siga as instruções acima para reinstalar o pacote sudo executando apt-get com pkexec .

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.

    
por Eliah Kagan 22.01.2017 / 17:33
2

Você precisa da permissão root para instalar qualquer software. Mas você excluiu o pacote sudo .

Se você tiver acesso como root , poderá instalar sudo novamente.

Referência a esta resposta .

Tente começar com bash mode com root user.

  1. Reinicialize seu sistema.
  2. Pressione e segure a tecla Shift ou Esc .
  3. Escolha Advanced options for Ubuntu .
  4. Escolha Ubuntu, with Linux x.x.x-xx-generic (recovery mode) .
  5. Escolha root Drop to root shell prompt
  6. Digite o comando mount -o rw,remount / para obter acesso de leitura / gravação.
  7. Digite apt install sudo . Siga as instruções na tela.

Se a instalação terminar, está feito!

Se não , isso pode precisar de conexão de rede.

Permite reinicializar o sistema para a inicialização normal e fazer o download dos arquivos necessários. Se assim for, Ctrl + D irá para a página de menu novamente e escolherá resume . Isso irá para a inicialização normal.

Você pode precisar instalar o sudo offline. Esta pode ser outra pesquisa. Aqui você encontra o pacote .deb . Você pode baixar com a sua versão do sistema operacional. Faça o download do seu arquivo que é sudo_1.8.19-3_xxxx.deb . E lembre-se do seu download file path .

Reinicie seu sistema em bash mode (recovery mode) novamente e siga de 1 a 6 etapas.

e, em seguida, dpkg -i *file_path/sudo_1.8.19-3_xxxx.deb . Isso instalará sudo . Acabado! Ctrl + D e escolha resume para inicialização normal.

Feito!

    
por San Lin Naing 22.01.2017 / 19:03
2
  

sim eu acidentamente excluí o arquivo sudo. a saída de ls -l / usr / bin / sudo não pode acessar '/ usr / bin / sudo': Nenhum arquivo ou diretório

Apenas um pensamento:

Você ainda tem a mídia (DVD / pendrive) a partir da qual você instalou o Ubuntu em seu sistema?

  1. Inicialize a partir dele e monte a partição do sistema do seu PC.
  2. Copie /usr/bin/sudo do sistema ativo para a partição montada.
  3. Verifique se o proprietário e as permissões do arquivo são os mesmos.
  4. Reinicie o seu sistema.
por Timothy Truckle 22.01.2017 / 18:26
0

Talvez você possa inicializar seu sistema no modo de recuperação por meio do grub. A partir daí você pode tentar verificar a integração do sistema via dpkg, o que talvez lhe permita resolver seu problema. Ou, depois disso, já que sua partição foi montada com permissões de leitura / gravação, você pode instalar o sudo sem usar o comando sudo usando a entrada do menu raiz. Você deve atualizar através do apt-get e tentar usar apt-get install -f e dpkg --configure -a primeiro.

    
por starkus 22.01.2017 / 18:54
0

Você pode criar sudo da fonte

mkdir sudo-src
cd sudo-src
apt-get source sudo
cd sudo-x.y.z
./configure --prefix=$HOME
make
make install
    
por GAD3R 22.01.2017 / 19:40