Può essere reinstallato sudo dopo essere stato rimosso?

58

Questo sembra essere un problema dell'uovo di gallina. L'attività più comune che utilizza sudo è l'installazione e la rimozione del software.

sudo apt-get purge <appname>

Ma sudo può essere rimosso.

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

Qui è dove arriva il divertimento

[email protected]:~$ sudo
bash: /usr/bin/sudo: No such file or directory

Sebbene sia ovvio che nessuna persona sana di mente eliminerà sudo (diversa da me), qualcuno può essere ingannato per eseguire questo comando (non direttamente, nella sua modalità esadecimale, o qualsiasi altra cosa si chiama) o una persona potrebbe SSH in mascherata da guru tecnologico e fare il pasticcio .

Quindi esiste un modo per reinstallare sudo?

    
posta Registered User 15.03.2014 - 10:24

7 risposte

52

Posso installare applicazioni usando:

pkexec apt-get install <appname>

Da 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.

Quindi, suppongo che pkexec apt-get install sudo dovrebbe funzionare allo stesso modo.

Modifica : ora posso confermare: si , sudo può essere installato utilizzando pkexec apt-get install sudo :

( clicca per ingrandire )

    
risposta data Radu Rădeanu 15.03.2014 - 10:38
28

Puoi sempre eseguire l'avvio in Modalità di ripristino , passare alla shell di root e installarlo senza sudo.

    
risposta data Vojtech Trefny 15.03.2014 - 10:37
22

Sì, la reinstallazione del pacchetto sudo sarebbe possibile tramite il metodo chroot .

  • Primo avvio dal disco live di Ubuntu.

  • Monta la partizione di Ubuntu precedentemente installata in qualsiasi directory tu voglia. Nel mio caso, l'ho montata in /media/ubuntu .

    sudo mkdir /media/ubuntu
    sudo mount /dev/sdaX /media/ubuntu   # /dev/sdaX - previously installed Ubuntu partition.
    
  • Per impostazione predefinita non hai potuto ottenere una connessione a Internet dopo il chroot in una partizione. Utilizza il comando seguente per farlo funzionare.

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

Grazie a @Oli per questo meraviglioso pezzo di codice.

  • Ora chroot in quella directory montata,

    $ sudo chroot /media/ubuntu
    # apt-get update
    
  • Installa pacchetto sudo eseguendo,

    # apt-get install sudo
    
  • Ora esci dall'ambiente chroot.

    exit
    
  • Finalmente avvia il tuo sistema operativo Ubuntu. Ora prova il tuo comando sudo , funzionerà sicuramente.

risposta data Avinash Raj 15.03.2014 - 10:47
4

Avvia con il parametro extra init=/bin/sh sulla riga di comando del kernel. Questo ti metterà direttamente in una shell di root, da cui puoi semplicemente eseguire apt-get install sudo e quindi riavviare. Potrebbe essere necessario eseguire /etc/init.d/networking start per ottenere prima una connessione di rete funzionante. Molto più semplice del caos con CD di ripristino o dischi live, se me lo chiedi.

    
risposta data Jules 17.03.2014 - 07:46
1

Se hai già impostato o aggiornato la% account dell'account utente root con questo comando sudo passwd root allora non ti preoccupare di eliminare sudo . Effettua il login nel tuo account root e quindi installa sudo ,

su
apt-get install sudo

Fai clic qui per ingrandire

    
risposta data Avinash Raj 17.03.2014 - 06:10
-1

sudo (e qualsiasi altro privilegio di root) si applica solo al SO in esecuzione. Se sei stato stupido e hai rimosso sudo (o / usr / per quella questione) e non hai alternative come pkexec puoi semplicemente avviare da qualcos'altro, copiare il software mancante e ricominciare da capo.

L'accesso fisico annulla qualsiasi tipo di protezione del software che potrebbe avere il tuo sistema.

    
risposta data paul 15.03.2014 - 14:33
-2

Questo problema sembra essere molto specifico di Ubuntu. Come utente non di Ubuntu non ho nemmeno capito in un primo momento perché sudo sarebbe un caso particolare in qualsiasi modo (molte distribuzioni non lo installano di default).

Non hai bisogno di sudo. È solo una scorciatoia pigra che ti permette di eseguire un comando di root senza effettuare il login come root. Tuttavia, se devi fare qualcosa di più di un singolo comando, è semplicemente orribile prefissare costantemente tutto con sudo. Per non parlare del fatto che l'utilizzo di sudo rende gli utenti ignoranti su come funzionano le autorizzazioni e l'account di root. Ha molto più senso fare il login come root, fare l'amministrazione del sistema e disconnettersi. Che fai con su se hai già effettuato l'accesso come utente normale. Oppure puoi accedere direttamente come root.

Ovviamente devi avere root password set, questa è la configurazione ragionevole, altrimenti hai un sistema windows-like dove ci sono azioni che nessuno può eseguire e sei davvero bloccato se in qualche modo sudo non è disponibile (richiede /etc/ di lavoro, imposta $PATH e altre cose montate - cosa che potresti non avere se qualcosa va storto all'inizio del boot).

    
risposta data orion 17.03.2014 - 08:51

Leggi altre domande sui tag