O sudo pode ser reinstalado após ser removido?

61

Este parece ser um problema de ovo de galinha. A tarefa mais comum sudoé instalar e remover software.

sudo apt-get purge <appname>

Mas sudoele próprio pode ser removido.

sudo apt-get purge sudo # Do not run this command on production computers!

É aqui que a diversão vem

ubuntu@ubuntu:~$ sudo
bash: /usr/bin/sudo: No such file or directory

Embora seja óbvio que nenhuma pessoa em sã consciência se purifique sudo(além de mim), alguém pode ser enganado por executar esse comando (não diretamente, no modo hexadecimal ou como é chamado) ou uma pessoa poderia usar o SSH disfarçado de guru da tecnologia e fazer a bagunça .

Então, existe uma maneira de reinstalar o sudo?

Usuário Registrado
fonte
3
bom, eu nunca soube que o sudo também poderia ser eliminado! O Linux é tão personalizável!
user247696
Não vale a pena responder, pois seria muito tarde se isso acontecesse, mas não há nada que impeça a configuração de uma senha para o rootusuário. Você pode usar suou efetuar login diretamente como root se tiver acesso físico à máquina (o ssh geralmente será configurado para rejeitar tentativas de login como root).
IMSoP 15/03
Todas as respostas dependem de alguma maneira de acessar o sistema de arquivos com privilégios. Por exemplo (contador): meu Android Asus Memopad não possui sudoe não possui "inicialização segura" ou equivalente. A única maneira que eu conheço é acessar xda-deve instalar o pacote de instalação completa do d / la. Você tem sorte, por assim dizer, de não ter essa limitação.
Carl Witthoft 15/03/14
@CarlWitthoft O Android é um derivado do Linux, do que realmente é uma distribuição Linux. Além disso, o Google fez muitas alterações (que a maioria dos fãs de Linux odeia). O enraizamento , que é bem conhecido no smartphone Android, não passa de uma tentativa de obter os poderes do linux real no Android.
Usuário registrado
4
Você não pode simplesmente fazer login como root?
Konrad Höffner

Respostas:

56

Eu posso instalar aplicativos usando:

pkexec apt-get install <appname>

De man pkexec:

  pkexec allows an authorized user to execute PROGRAM as another user. If
  username is not specified, then the program will be executed as the
  administrative super user, root.

Então, suponho que isso pkexec apt-get install sudofuncione também.


Editar : agora posso confirmar: sim , sudopode ser instalado usando pkexec apt-get install sudo:

reinstalar sudo

( clique para ampliar )

Radu Rădeanu
fonte
@RaduRadeanu Isso é interessante eu vou tentar isso graças u ......
Premkumar
@ Premkumar Teste-o com precaução! O último comando do shoot tela deve ser, provavelmente, em apenas seu caso: sudo apt-get install gksu ubuntu-minimal. Mas melhor, verifique quais pacotes foram removidos ao mesmo tempo sudo.
Radu Rădeanu 15/03
5
@Thebluefish O pacote é chamado policykit-1(a partir de 12.04). Ele pode ser removido, mas às custas da remoção de pacotes que você normalmente deseja em um sistema de desktop como gnome-coree ubuntu-desktop(em um servidor, é mais provável que não seja exigido por nenhum pacote necessário). No entanto, Radu, o que determina que sua conta pode usar pkexec apt-get …? Isso é algo que você configurou ou acontece automaticamente e, se sim, o que determina que uma conta pode fazer isso?
Gilles 'SO- stop be evil'
11
@ Gilles Não me lembro de ter feito algumas configurações nesse sentido no passado. Então, suponho que isso aconteça automaticamente. Se você sabe o que determina que uma conta pode fazer isso, compartilhe; isso está fora da minha área de especialização.
Radu Rădeanu 15/03
2
@ Gilles Eu acho que os membros do sudogrupo podem usar pkexec. (Minha experiência é que adicionar usuários a este grupo confere pkexechabilidades e removê-los remove pkexechabilidades; dessa maneira, as pkexechabilidades parecem ser conferidas da mesma forma que as sudohabilidades na sudoersconfiguração padrão , o que faz sentido, já que a capacidade sudoe a pkexecraiz são principalmente o que torna um usuário um administrador no Ubuntu.) Não acho que a desinstalação sudoremova o sudogrupo. Mas eu sou não totalmente certo de minhas suposições são verdadeiras em todas as circunstâncias razoáveis.
Elias Kagan
29

Você sempre pode inicializar no modo de recuperação , soltar no shell raiz e instalá-lo sem o sudo.

Vojtech Trefny
fonte
16
você pode adicionar a parte essencial e relevante a partir do link aqui?
Usuário registrado
Se não houver recuperação disponível no menu de inicialização do grub, pressione <kbd> e </kbd> e adicione `single` à linha de inicialização. Em seguida, quando inicializado, defina uma senha root usando passwd. Reinicialize normalmente, na linha de comando, digite suseguido pela nova senha e execute apt-get install sudo(sem o sudoprefixo-)
ExploWare
11
Como você conseguiu conexão com a internet no shell raiz?
Avinash Raj
22

Sim, a reinstalação do sudopacote seria possível pelo método chroot .

  • Primeira inicialização do disco ao vivo do Ubuntu.

  • Instale a partição Ubuntu instalada anteriormente em qualquer diretório que você desejar /media/ubuntu.

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
  • Por padrão, você não conseguiu obter conexão com a Internet depois de fazer o chroot em uma partição. Portanto, execute o comando abaixo para fazê-lo funcionar.

    for d in dev sys run proc; do sudo mount --bind /$d /media/ubuntu/$d ; done
    

Agradecemos a @Oli por este maravilhoso código.

  • Agora faça o chroot nesse diretório montado,

    $ sudo chroot /media/ubuntu
    # apt-get update
    
  • Instale o sudopacote executando,

    # apt-get install sudo
    
  • Agora saia do ambiente chroot.

    exit
    
  • Finalmente inicie o seu sistema operacional Ubuntu. Agora teste seu sudocomando, ele certamente funcionará.

Avinash Raj
fonte
4

Inicialize com o parâmetro extra init=/bin/shna linha de comando do kernel. Isso o colocará diretamente em um shell raiz, de onde você pode simplesmente executar apt-get install sudoe reiniciar. Pode ser necessário executar /etc/init.d/networking startpara obter uma conexão de rede que funcione primeiro. Muito mais simples do que mexer com CDs de recuperação ou discos ao vivo, se você me perguntar.

Jules
fonte
1

Se você já definiu ou atualizou a rootsenha da conta de usuário por este comando sudo passwd root, não se preocupa com a remoção. sudoBasta fazer login na sua rootconta e instalar sudo,

su
apt-get install sudo

insira a descrição da imagem aqui

Clique aqui para ampliar

Avinash Raj
fonte
isso funciona se a conta root estiver ativada e, no ubuntu, ela geralmente está desativada. suno meu pc dá "su: falha na autenticação", apesar de eu ter fornecido a senha correta #
2131414
Sim, você está correto, foi o que eu disse. Se você já atualizou a senha da conta de usuário root, então não se preocupe com a remoção. sudoAgora tente isso sudo passwd root, pois permitirá que você atualize a senha da conta de usuário root. executando sucommand.Once você é capaz de entrar, em seguida, você estará livre para purgar sudo.Now purga sudo por sudo apt-get purge sudo.login em sua conta raiz para reinstalar o pacote sudo executando sueapt-get install sudo
Avinash Raj
-1

O sudo (e qualquer outro privilégio root) se aplica apenas ao sistema operacional em execução. Se você foi bobo e removeu o sudo (ou / usr /, nesse caso) e não possui alternativas como o pkexec, pode simplesmente inicializar a partir de outra coisa, copiar o software ausente e reiniciar novamente.

O acesso físico anula toda e qualquer segurança de software que seu sistema possa ter.

Paulo
fonte
Eu recomendo expandir isso para explicar o que você quer dizer com "copiar o software existente".
Elias Kagan
Não é uma maneira muito fácil de corrigi-lo.
Seth
@Seth sem intervenção operacional, duvido seriamente que possa ser corrigido sem escrever outra resposta.
Braiam 16/03/14
Bem, a maneira correta de fazer isso seria chroot, mas existem muitas maneiras menos bárbaras. Por exemplo, efetuando login como root (da maneira NORMAL) ou, se você não tiver uma senha root, basta definir init = / bin / bash como parâmetro do kernel e passar por todo o sistema init, incluindo a autenticação de login.
orion
-2

Esse problema parece ser muito específico do ubuntu. Como usuário não-ubuntu, eu nem entendi a princípio por que o sudo seria um caso especial de alguma forma (muitas distribuições não o instalam por padrão).

Você não precisa de sudo. É apenas um atalho lento que permite executar um comando raiz sem realmente fazer login como root. No entanto, se você precisar fazer algo além de um único comando, é horrível prefixar constantemente tudo com o sudo. Sem mencionar que o uso sudofaz com que os usuários ignorem como funcionam as permissões e a conta raiz. Faz muito mais sentido apenas fazer login como root, administrar o sistema e fazer logout. Isso você faz suse já estiver logado como um usuário comum. Ou você pode fazer login diretamente como root.

É claro que você precisa ter uma rootsenha definida, essa é a configuração razoável; caso contrário, você tem um sistema semelhante ao Windows, onde existem ações que ninguém pode executar e você fica realmente bloqueado se de alguma forma sudonão estiver disponível (requer trabalho /etc/, conjunto $PATHe outros coisas montadas - que você pode não ter se algo der errado no início da inicialização).

orion
fonte
Pode ser uma informação útil, mas não responde à pergunta.
Luís de Sousa
De fato. Isso realmente não é relevante para um sistema em que a senha do root está desativada e o sudo está instalado por padrão. E se você olhar para as outras respostas, verá que o último parágrafo também não é verdadeiro.
Oli
Um usuário que contemple a remoção sudodo ubuntu também deve considerar a configuração da senha root (outras questões apontaram como fazer isso). Um usuário que não se importa com esse material pode continuar usando o sudo.
orion